我对于使用
问题1: 我理解
问题2: 为什么
例如,如果我将“页面错误”作为事件1,则在每个命令下面列出如下输出(我假设周期字段是
PERF STAT
我原本以为如果我将
到目前为止我使用的参考资料如下:
- brendangregg's perf blog - 上面提到的此页面上的perf record和stat链接,称为"perf wiki" - 我在这里查找了perf record实际记录和写入perf.data的时间和方式。
非常感谢您能提供任何见解。
perf record
和perf stat
计数事件(如页面错误、缓存未命中等)的区别感到困惑。以下是我的两个问题,回答第一个问题可能也有助于回答第二个问题,但我将它们明确写出以防万一。问题1: 我理解
perf stat
可以获得计数的“摘要”,但在使用-I选项时,会按指定的毫秒间隔获取计数。使用此选项时,它是否会对时间间隔内的计数进行求和,或者获取时间间隔内的平均值,还是其他什么?我假设它会进行求和。perf wiki中指出它被聚合,但我认为这可能意味着任何一种情况。问题2: 为什么
perf stat -e <event1> -I 1000 sleep 5
不会给出与以下命令中每秒计数总和相同的计数:perf record -e <event1> -F 1000 sleep 5
?例如,如果我将“页面错误”作为事件1,则在每个命令下面列出如下输出(我假设周期字段是
perf record
的perf.data文件中该事件的计数)。PERF STAT
perf stat -e page-faults -I 1000 sleep 5
# time counts unit events
1.000252928 54 page-faults
2.000498389 <not counted> page-faults
3.000569957 <not counted> page-faults
4.000659987 <not counted> page-faults
5.000837864 2 page-faults
PERF记录
perf record -e page-faults -F 1000 sleep 5
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.016 MB perf.data (6 samples) ]
perf script -F period
1
1
1
5
38
164
我原本以为如果我将
perf stat
的计数相加,结果应该与perf record
的计数总和相同。但是,如果我在perf record
中使用-c选项,并给出1作为参数,我确实得到了一个接近的匹配。这只是因为页面故障数量相对较少的巧合吗?到目前为止我使用的参考资料如下:
- brendangregg's perf blog - 上面提到的此页面上的perf record和stat链接,称为"perf wiki" - 我在这里查找了perf record实际记录和写入perf.data的时间和方式。
非常感谢您能提供任何见解。
perf stat
中更长的-I
间隔将提供更多计数,对于发生在稳定速率下(如“周期”)的任何事件都是如此。 - Peter Cordes