中文
注册

热点函数分析

命令功能

支持分析C/C++程序代码识别性能瓶颈,给出对应的Top热点函数和调用栈详情。通过火焰图展示函数的调用关系,发现优化路径。

命令格式

devkit tuner hotspot [-h] [-c {n | n,m | n-m}] [-d <sec>] [-D <sec>] [-f n] [-l {0, 1, 2, 3}] [-i <sec>] [-r {user, kernel, all}] [-o] [-s] [-p {PID1 | PID1,PID2 | ALL}] [-g] [--package] [--long-name] [--dwarf] [workload workload...]

参数说明

表1 参数说明

参数

参数选项

说明

-h/--help

-

获取帮助信息。

-c/--cpu

-

指定采集的CPU核数,如“0”、“0,1,2”、“0-2”。

-d/--duration

-

设置采集时长,单位为秒,默认为一直采集,可使用Ctrl+\取消任务或Ctrl+C停止采集并进入分析。

-D/--delay

-

设置延迟采样时长,默认为0秒。

-i/--interval

-

设置采集间隔(以秒为单位)。最小值为1秒,最大值不能超过采集时长。默认为采集时长。如果不指定间隔,不生成子报告。每个子报告中收集数据的时间取决于间隔参数。

-l/--log-level

0/1/2/3

配置日志等级。默认值为1(info)。

  • 0(debug)
  • 1(info)
  • 2(warning)
  • 3(error)

-f/--frequency

-

设置采样频率,最小值为1次/秒,默认为200次/秒。

-o/--output

-

设置报告数据生成文件名,默认为当前所在目录。

-r/--clloection-range

user/kernel/all

设置采集模式,默认为all。

  • all:采集用户态和内核态的性能数据。
  • user:采集用户态的性能数据。
  • kernel:采集内核态的性能数据。

-s/--src-dir

-

指定源码工作目录,用于查找并关联源码,可将任务导入Web端查看。

-g

-

显示调用堆栈信息。如果启用-g选项,将生成火焰图html文件,默认生成在用户所在目录。

-p/--pid

PID/PID1,PID2/ALL

指定采集的进程PID,多个进程PID可用“,”分隔。默认采集全部进程(ALL)。若同时使用-p和-c参数则优先采集指定PID的进程。

--long-name

-

设置是否显示详细函数和模块信息。不使用此参数默认简洁显示模块或功能信息。

--dwarf

-

设置是否生成C/C++的源代码或汇编代码文件。

-t/--top

-

设置报告中显示数据数量,最小值为1个。

--package

-

设置是否将数据导入数据库,并在指定输出路径中生成压缩包。

使用示例

devkit tuner hotspot -c 0-127 -d 3 -i 1 -o /home/hotspot_cpu -g --package --long-name

返回信息如下:

Hotspot Summary Report-1                                Time:2024/05/22 17:10:22
================================================================================

────────────────────────────────────────────────────────────────────────
  Function                                                                     Cycles    Module                                     Cycles(%)
────────────────────────────────────────────────────────────────────────
  arch_cpu_idle                                                           109,478,705    [kernel]                                     14.22
  __do_softirq                                                             81,866,664    [kernel]                                     10.63
  UNKNOWN                                                                  30,688,513    libc.so.6                                     3.99
  rcu_report_qs_rdp                                                        28,416,897    [kernel]                                      3.69
  UNKNOWN                                                                  27,848,831    libnss_sss.so.2                               3.62
  finish_task_switch                                                       27,210,492    [kernel]                                      3.53
...
...
Hotspot Summary Report-2                                Time:2024/05/22 17:10:23
================================================================================

────────────────────────────────────────────────────────────────────────
  Function                                                                     Cycles    Module                                     Cycles(%)
────────────────────────────────────────────────────────────────────────
 arch_cpu_idle                                                             93,959,194    [kernel]                                     12.94
  std::pair<std::_Rb_tree_itera***long const, elf::sym> const&)            85,861,067    libsym.so                                    11.82
  malloc                                                                   46,479,307    libc.so.6                                     6.40
  std::_Sp_counted_base<(__gnu_***_Lock_policy)2>::_M_release()            38,285,738    libtuner.so                                   5.27
  copy_page                                                                33,935,533    [kernel]                                      4.67
  std::_Rb_tree<unsigned long, ***ned long const, elf::sym> >*)            25,090,288    libsym.so                                     3.45
  std::_Rb_tree<unsigned long, ***ned long const, elf::sym> >*)            24,942,214    libsym.so                                     3.43
  finish_task_switch                                                       23,804,264    [kernel]                                      3.28
  arch_cpu_idle                                                           109,478,705    [kernel]                                     
...
...
Hotspot Summary Report-ALL                              Time:2024/05/22 17:10:22
================================================================================

────────────────────────────────────────────────────────────────────────
  Function                                                                     Cycles    Module                                     Cycles(%)
────────────────────────────────────────────────────────────────────────
 arch_cpu_idle                                                            203,437,899    [kernel]                                     13.60
  std::pair<std::_Rb_tree_itera***long const, elf::sym> const&)            85,861,067    libsym.so                                     5.74
  __do_softirq                                                             82,521,516    [kernel]                                      5.51
  malloc                                                                   56,735,095    libc.so.6                                     3.79
  finish_task_switch                                                       51,014,756    [kernel]                                      3.41
  UNKNOWN                                                                  47,753,528    libc.so.6                                     3.19
  UNKNOWN                                                                  38,325,780    libnss_sss.so.2                               2.56
  std::_Sp_counted_base<(__gnu_***_Lock_policy)2>::_M_release()            38,285,738    libtuner.so                                   2.56
  filemap_map_pages                                                        34,252,979    [kernel]                                      2.29
  copy_page                                                                33,935,533    [kernel]                                      2.27
  ...
  ...
  copyout                                                                     455,387    [kernel]                                      0.03
  el0_da                                                                      455,387    [kernel]                                      0.03
  rcu_gp_init                                                                 381,264    [kernel]                                      0.03
────────────────────────────────────────────────────────────────────────
2402 milliseconds time elapsed

The callstack log /home/callstack-20240606-160259.log is generated successfully.
The flamegraph html /home/Flamegraph-20240606-160259.html is generated successfully.
The report /home/hotspot_cpu1.tar is generated successfully.
To view summary report. you can run: devkit report -i /home/hotspot_cpu.tar
To view detail report. you can import the report to the WebUI or IDE to view details.

生成的火焰图html文件默认生成在用户所在目录,火焰图html文件可使用浏览器查看。

图1 火焰图html
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词