Linux Perf Counting Instructions, Cycles, Cache misses更轻量级

Posted

技术标签:

【中文标题】Linux Perf Counting Instructions, Cycles, Cache misses更轻量级【英文标题】:Linux Perf Counting Instructions, Cycles, Cache misses more lightweight over a long time 【发布时间】:2016-01-24 21:52:24 【问题描述】:

我想为我的研究分析一些在不同限制下的程序。我使用 perf 工具来测量一些计数器。此分析将持续很长时间(数小时),并且 perf 工具会生成太多我不需要的数据。例如:

$ perf record -e cycles,instructions,cache-misses,cpu-clock,context-switches,cpu-migrations ./stress-ng --cpu 4 --cpu-ops 10000
stress-ng: info:  [6642] defaulting to a 86400 second run per stressor
stress-ng: info:  [6642] dispatching hogs: 4 cpu
stress-ng: info:  [6642] successful run completed in 15.57s
[ perf record: Woken up 117 times to write data ]
[ perf record: Captured and wrote 29.971 MB perf.data (~1309444 samples) ]

大约是每秒 1.92 MB。在 24 小时内,它将是 165 GB。当我使用性能报告工具时,我看到它还保留了我不需要的函数调用。如何让 perf-record 工作更轻量,只记录我需要的数据?我只需要随着时间的推移分析以下数据,看看它们是如何随着我对系统所做的一些更改而变化的。考虑到它记录了很多数据,我会在24核机器上使用它,使得数据非常大。到目前为止,最好的选择是定期记录并分析 perf.data 以获取我想要的整数并将其删除,但我相信应该有更好的选择,因为我可能会错过该窗口中的一些分析数据。

 Performance counter stats for './stress-ng --cpu 4 --cpu-ops 10000':

   128.290.294.651      cycles                   
   201.217.788.817      instructions              #    1,57  insns per cycle        
         3.048.096      cache-misses                                                
      40340,258757      cpu-clock (msec)                                            
               123      context-switches                                            
                25      cpu-migrations                                              

      10,205760993 seconds time elapsed     

【问题讨论】:

【参考方案1】:

简单的perf stat 输出对你有好处吗?例如

$ perf stat -e cycles,instructions,cache-misses,cpu-clock,context-switches,cpu-migrations date 
Sun Jan 24 18:46:10 EST 2016

 Performance counter stats for 'date':

         1,269,265      cycles                   
           660,875      instructions              #    0.52  insns per cycle        
             2,265      cache-misses                                                
          0.644391      cpu-clock (msec)                                            
                 2      context-switches                                            
                 1      cpu-migrations                                              

       0.001031207 seconds time elapsed

【讨论】:

以上是关于Linux Perf Counting Instructions, Cycles, Cache misses更轻量级的主要内容,如果未能解决你的问题,请参考以下文章

perf ?????????

Linux内核 eBPF基础:perf:perf性能管理单元PMU的注册

去哪里能下载linux perf的代码?

Linux内核 eBPF基础:perf基础perf_event_open系统调用内核源码分析

Analyse Linux kernel by using Perf

Analyse Linux kernel by using Perf