![`perf stat` 选项 `--cpu` 实际上显示了什么?](https://linux22.com/image/153637/%60perf%20stat%60%20%E9%80%89%E9%A1%B9%20%60--cpu%60%20%E5%AE%9E%E9%99%85%E4%B8%8A%E6%98%BE%E7%A4%BA%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我试图理解--cpu
的选项perf-stat
。在手册页中它说:
仅依赖提供的 CPU 列表。多个 CPU 可以以逗号分隔的列表形式提供,不带空格:0,1。 CPU 的范围用 - 指定:0-2。在每线程模式下,该选项被忽略。 -a 选项对于激活系统范围的监控仍然是必需的。默认值是依赖所有 CPU。
我们可以用这个选项来控制程序将在哪个CPU上执行吗?如果我输入--cpu 0
,程序只会在 CPU 0 上执行吗?如果不是,这个选项的价值是多少(因为每次我们使用这个选项运行时结果可能会有所不同perf stat
)?
答案1
的值--cpu
是它应该返回统计信息的CPU。这并不意味着二进制文件本身将在同一个 CPU 上执行,尽管它也可能这样做。
如果您想要单CPU:
perf-stat --cpu 0
将返回 CPU 0 的统计信息。
对于多个 CPU(例如 - 两个 CPU):
perf-stat --cpu 1,2
将返回 CPU 1 和 2 的统计信息。
作为一个范围:
perf-stat --cpu 0-4
将返回从 0 到 4 (0, 1, 2, 3, 4) 的 CPU 的统计信息。
我们可以用这个选项来控制程序将在哪个CPU上执行吗?如果我输入--cpu 0,程序只会在CPU 0上执行吗?
如果您使用--cpu 0
该程序将仅返回 CPU 0 的统计信息,则它不能保证它将仅在 CPU 0 上执行,文档中没有任何地方说它在同一 CPU 上运行,但是,它仍然可能会这样做。
编辑:
通过测试,我可以看到 perf stat 实际上在您用--cpu
.