如何在 perf 中添加对事件修饰符的支持

如何在 perf 中添加对事件修饰符的支持

我需要考虑内核空间的功率,但不幸的是 power/energy-cores/ 不支持 k 修饰符。下面我有一个我正在尝试做的事情的例子。

我正在阅读 perf 的来源和内核 PMU 事件的结构,但我有点迷失。有熟悉 perf 源代码的人可以分享一些关于这些修饰符在源代码中如何工作的技巧吗?

 user@dkphome:~$ sudo perf stat -a -e power/energy-cores/k -I 1000 sleep 5
 #           time             counts unit events
 1.000099515    <not supported> Joules power/energy-cores/k                                        
 2.000246523    <not supported> Joules power/energy-cores/k                                        
 3.000440743    <not supported> Joules power/energy-cores/k                                        
 4.000673143    <not supported> Joules power/energy-cores/k                                        
 5.000722624    <not supported> Joules power/energy-cores/k                                        
 user@dkphome:~$ sudo perf stat -a -e power/energy-cores/ -I 1000 sleep 5
 #           time             counts   unit events
 1.000128209               0,19 Joules power/energy-cores/                                         
 2.000257170               0,25 Joules power/energy-cores/                                         
 3.000406715               0,26 Joules power/energy-cores/                                         
 4.000571140               0,20 Joules power/energy-cores/                                         
 5.000711815               1,01 Joules power/energy-cores/                                         
 5.000882867               0,00 Joules power/energy-cores/   

PS:这个其他问题很有帮助perf_events 列表中的内核 PMU 事件是什么?

相关内容