`perf stat` 选项 `--cpu` 实际上显示了什么?

`perf stat` 选项 `--cpu` 实际上显示了什么?

我试图理解--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.

相关内容