鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Miss事件分析

CPU访问数据时将逐级查找缓存,目标数据不在缓存中即为cache miss(cache miss较多时性能将大幅降低)命令提供对业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,便于用户针对性修改程序,提高程序处理性能。

命令功能

利用SPE(Statistical Profiling Extension)能力对业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,可以有针对性地修改自己的程序,降低Miss事件发生的几率,提高程序处理性能。

  • 采集Miss事件数据时需要服务器支持ARM SPE采集能力,配置SPE请参见配置SPE环境
  • Miss事件分析支持openEuler 20.x及以上的操作系统,以及基于openEuler研发的操作系统;不支持虚拟机和容器环境。

命令格式

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...]替换为应用路径加应用参数。

参数说明

表1 参数说明

参数

参数选项

说明

-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。
  • 0:日志级别为DEBUG。
  • 1:日志级别为INFO。
  • 2:日志级别为WARNING。
  • 3:日志级别为ERROR。

-m/--metric

1/2/3/4

选择采集数据的等级。默认为1(LLC Miss)。
  • 1(LLC Miss):内存请求在最后一级Cache中未命中的次数。
  • 2(TLB Miss):CPU在内存访问或取址过程中,在TLB中没有找到虚拟地址到物理地址映射次数。
  • 3(Remote Access):跨CPU访问远程DRAM的次数。
  • 4(Long Latency Load):跨CPU访问远程DRAM,并且访问时延超过设定的最小时延的次数。

-L/--latency

-

设置最小延迟(时钟周期),在采集Long Latency Load数据时可以设置,默认为0。

-r/--collection-range

user/kernel/all

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

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

-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

-

设置是否展示关联源码文件。

使用示例

  • 对系统采集:
    1
    devkit 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.
    
  • 对应用采集:
    1
    devkit 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采集:
    1
    devkit 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.
    
  • 查看已生成报告:
    1
    devkit 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