Miss事件分析
命令功能
利用SPE(Statistical Profiling Extension)能力对业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,可以有针对性地修改自己的程序,降低Miss事件发生的几率,提高程序处理性能。
命令格式
1 | devkit tuner miss [-h] [-c {n | n,m | n-m}] [-d <sec>] [-P n] [-D <sec>] [-l {0, 1, 2, 3}] [-m {1, 2, 3, 4}] [-L n] [-i <sec>] [-r {user, kernel, all}] [-o] [-s] [-p {PID1 | PID1,PID2 | ALL}] [--package] [--long-name] [--dwarf] [workload workload...]  | 
 工具可采集指定应用,命令中[workload workload...]替换为应用路径加应用参数。
参数说明
参数  | 
参数选项  | 
说明  | 
|---|---|---|
-h/--help  | 
-  | 
获取帮助信息。  | 
-c/--cpu  | 
-  | 
指定采集的CPU核数,如“0”、“0,1,2”、“0-2”。  | 
-d/--duration  | 
-  | 
设置采集时长,单位为秒,最小值为1秒,默认一直采集,可使用Ctrl+\取消任务或Ctrl+C停止采集并进入分析。  | 
-P/--period  | 
-  | 
设置指令数采样间隔,默认8092个,取值范围1024至4,294,967,295个。  | 
-D/--delay  | 
-  | 
设置延迟采样时长,默认为0秒,需小于采集时长。  | 
-i/--interval  | 
-  | 
设置采集间隔(以秒为单位)。最小值为1秒,最大值不能超过采集时长,默认为采集时长。如果不指定间隔,不生成子报告。每个子报告中收集数据的时间取决于间隔参数。  | 
-l/--log-level  | 
0/1/2/3  | 
设置日志级别,默认为1。 
  | 
-m/--metric  | 
1/2/3/4  | 
选择采集数据的等级。默认为1(LLC Miss)。 
  | 
-L/--latency  | 
-  | 
设置最小延迟(时钟周期),在采集Long Latency Load数据时可以设置,默认为0。  | 
-r/--collection-range  | 
user/kernel/all  | 
设置采集模式,默认为all。 
  | 
-o/--output  | 
-  | 
设置报告数据压缩包名称和输出路径,仅输入名称时默认生成在当前所在目录;需和--package配合使用。  | 
-s/--src-dir  | 
-  | 
指定C/C++源码工作目录,用于查找并关联源码,可将任务导入Web端查看。  | 
-p/--pid  | 
PID/PID1,PID2/ALL  | 
指定采集的进程PID,多个进程PID可用“,”分隔。默认采集全部进程(ALL)。若同时使用-p和-c参数则优先采集指定PID的进程。  | 
--package  | 
-  | 
设置是否生成报告数据压缩包,不指定压缩包名称和路径时默认在当前所在目录生成miss-时间戳.tar。  | 
--long-name  | 
-  | 
设置是否显示详细函数和模块信息。不使用此参数默认简洁显示模块或功能信息。  | 
-t/--top  | 
-  | 
设置报告中显示数据数量,默认为10个,最小值为1个。  | 
--dwarf  | 
-  | 
设置是否生成C/C++的源代码或汇编代码文件。  | 
使用示例
- 对系统采集:
1devkit tuner miss -c 0-127 -d 5 -o /home/miss_report -m 1 --package
 命令参数-c 0-127采集0到127的CPU核,采集时长为5秒,参数-o /home/miss_report和--package生成以miss_report命名的报告数据压缩包至指定路径,参数-m 1表示采集LLC Miss事件信息。
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Miss Summary Report-all Time:2024/05/22 17:56:33 ================================================================================ ────────────────────────────────────────────────────────────────── Function Module LLC Miss ────────────────────────────────────────────────────────────────── UNKNOWN /home/devkit/lib/libpython3.9.so.1.0 14,196,736 (11.53%) _PyEval_EvalFrameDefault /home/devkit/lib/libpython3.9.so.1.0 11,321,344 (9.20%) UNKNOWN /usr/bin/devkit/tuner/lib/libsym.so 4,702,208 (3.82%) _perf_ioctl [kernel] 4,587,520 (3.73%) UNKNOWN /usr/lib64/libc-2.28.so 4,046,848 (3.29%) std::pair<std::_Rb_tree_***const, elf::sym> const&) /usr/bin/devkit/tuner/lib/libsym.so 3,694,592 (3.00%) UNKNOWN /home/devkit/libsqlite3/libsqlite3.so.0.8.6 3,588,096 (2.91%) seq_put_hex_ll [kernel] 3,080,192 (2.50%) _nohz_idle_balance [kernel] 1,941,504 (1.58%) __audit_syscall_exit [kernel] 1,933,312 (1.57%) ────────────────────────────────────────────────────────────────── 5509 milliseconds time elapsed The report /home/miss_report.tar is generated successfully. To view summary report. you can run: devkit report -i /home/miss_report.tar To view detail report. you can import the report to the WebUI or IDE to view details.
 - 对应用采集:
1devkit tuner miss -d 5 --package /opt/testdemo/cache_miss
 对应用/opt/testdemo/cache_miss采集,参数-d 5表示采集5秒,参数--package生成报告数据压缩包至工具目录中,默认以miss+时间戳方式命名。
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Miss Summary Report-all Time:2024/06/11 11:16:15 ================================================================================ ────────────────────────────────────────────────────────────────── Function Module LLC Miss ────────────────────────────────────────────────────────────────── main /opt/testdemo/cache_miss 74,964,992 (60.74%) copy_page [kernel] 33,554,432 (27.19%) change_protection_range [kernel] 6,815,744 (5.52%) UNKNOWN [kernel] 3,784,704 (3.07%) handle_percpu_devid_irq [kernel] 2,490,368 (2.02%) propagate_protected_usage [kernel] 917,504 (0.74%) page_counter_charge [kernel] 720,896 (0.58%) queued_spin_lock_slowpath [kernel] 32,768 (0.03%) account_system_index_time [kernel] 24,576 (0.02%) trigger_load_balance [kernel] 24,576 (0.02%) ────────────────────────────────────────────────────────────────── 6222 milliseconds time elapsed If *** is displayed in Function or Module, use --long-name to show full name. The report /usr/bin/devkit/miss-20240611-111608.tar is generated successfully. To view summary report. you can run: devkit report -i /usr/bin/devkit/miss-20240611-111608.tar To view detail report. you can import the report to the WebUI or IDE to view details.
 
- 对PID采集:
1devkit tuner miss -d 5 --package -p 414192
 参数-p 414192表示对进程号为414192的进程采集。
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Miss Summary Report-all Time:2024/06/11 11:18:28 ================================================================================ ────────────────────────────────────────────────────────────────── Function Module LLC Miss ────────────────────────────────────────────────────────────────── UNKNOWN /usr/lib64/libpthread-2.28.so 32,505,856 (99.42%) queued_spin_lock_slowpath [kernel] 57,344 (0.18%) available_idle_cpu [kernel] 16,384 (0.05%) cpu_load_update_active [kernel] 16,384 (0.05%) futex_wait [kernel] 16,384 (0.05%) get_futex_value_locked [kernel] 16,384 (0.05%) trigger_load_balance [kernel] 16,384 (0.05%) __list_del_entry_valid [kernel] 8,192 (0.03%) fun2 /opt/testdemo/pthread_mutex_long 8,192 (0.03%) futex_wake [kernel] 8,192 (0.03%) ────────────────────────────────────────────────────────────────── 5976 milliseconds time elapsed If *** is displayed in Function or Module, use --long-name to show full name. The report /usr/bin/devkit/miss-20240611-111822.tar is generated successfully. To view summary report. you can run: devkit report -i /usr/bin/devkit/miss-20240611-111822.tar To view detail report. you can import the report to the WebUI or IDE to view details.
 - 查看已生成报告:
1devkit report -i /usr/bin/devkit/miss-20240611-111822.tar
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
────────────────────────────────────────────────────────────────── Function Module LLC Miss ────────────────────────────────────────────────────────────────── UNKNOWN /usr/lib64/libpthread-2.28.so 32,505,856 (99.42%) queued_spin_lock_slowpath [kernel] 57,344 (0.18%) available_idle_cpu [kernel] 16,384 (0.05%) cpu_load_update_active [kernel] 16,384 (0.05%) futex_wait [kernel] 16,384 (0.05%) get_futex_value_locked [kernel] 16,384 (0.05%) trigger_load_balance [kernel] 16,384 (0.05%) __list_del_entry_valid [kernel] 8,192 (0.03%) fun2 /opt/testdemo/pthread_mutex_long 8,192 (0.03%) futex_wake [kernel] 8,192 (0.03%) ────────────────────────────────────────────────────────────────── 5976 milliseconds time elapsed