是否有可能在每个核心的基础上测量单个进程所消耗的周期?

时间:2017-09-19 18:23:40

标签: linux performance perf

我最近看到this comment,它询问是否可以测量进程的每核CPU负载,但是没有回复它,所以我问这是一个问题。

是否存在一种机制来测量单核进程在每个核心基础上使用的周期?

更具体地说,我喜欢定期测量(让我们说每秒),就像perf一样,但没有必要使用perf。也就是说,类似于perf stat -I 500 -e cycles sleep 5的输出,但每个CPU有一行表示进程在该CPU上运行的周期数。

1 个答案:

答案 0 :(得分:0)

我相信这不太可能。

您可以为每个进程测量每个核心/每个CPU的周期(系统范围模式,可能需要特殊权限):

# per logical CPU / hardware thread
perf stat -a --no-aggr sleep 1
# per core
perf stat -a --per-core sleep 1

或者您可以监控给定流程的每个线程

perf --per-thread -p <pid>

奇怪的是perf确实接受了--per-core -a -p的组合 - 但结果是虚假的,这似乎是一个错误。

您可以使用bcc / BPF拼凑一些东西。请参阅https://github.com/iovisor/bcc#tools / http://www.brendangregg.com/linuxperf.html。我确信某种方式存在单行,但找到它可能并不容易。