如何对短命令进行基准测试(跟踪CPU使用情况)?

时间:2018-06-12 17:31:16

标签: load benchmarking measurement

虽然我知道诸如top之类的命令(列出了许多等价物here),但我不清楚如何捕获“短命”的CPU使用率处理。例如,如果我想查看ls命令的性能,我该怎么做才能足够频繁地对负载测量进行采样,并且足够快以便使用?

我在这个主题上看到的大多数现有答案都使用循环,每隔 n 秒重复top这样的循环,这不适用于快速/短期命令,尤其是鉴于我没有时间及时看到PID以将其提供给所述技术。我可能能够使用this answer中的某些东西,因为它似乎是在相当低的时间尺度下采样,但我怀疑有更直接/更少强烈的方法。

1 个答案:

答案 0 :(得分:1)

如果您可以检测短期命令的每次运行,则可以使用time ls来测量挂钟,用户CPU和系统CPU时间。

或者有关详细信息,请perf stat ls。根据您的sysctl kernel.perf_event_paranoid = 0设置,您可以使用HW perf计数器来测量内核代码和用户空间中的CPU周期/缓存未命中等。它还会执行页面错误等软件事件。但是对于非常等短期命令,如lsperf将具有显着的启动开销。在Intel CPU上,ocperf.py是包含更多事件的perf的包装器。有关使用ocperf.py作为asm微基准测试的示例,请参阅Can x86's MOV really be "free"? Why can't I reproduce this at all?

strace -c ls将计算系统调用所花费的时间。

如果您无法在测量包装器下运行每个短命令,则系统范围的perf record -a可能会有效。