虽然我知道诸如top
之类的命令(列出了许多等价物here),但我不清楚如何捕获“短命”的CPU使用率处理。例如,如果我想查看ls
命令的性能,我该怎么做才能足够频繁地对负载测量进行采样,并且足够快以便使用?
我在这个主题上看到的大多数现有答案都使用循环,每隔 n 秒重复top
这样的循环,这不适用于快速/短期命令,尤其是鉴于我没有时间及时看到PID以将其提供给所述技术。我可能能够使用this answer中的某些东西,因为它似乎是在相当低的时间尺度下采样,但我怀疑有更直接/更少强烈的方法。
答案 0 :(得分:1)
如果您可以检测短期命令的每次运行,则可以使用time ls
来测量挂钟,用户CPU和系统CPU时间。
或者有关详细信息,请perf stat ls
。根据您的sysctl kernel.perf_event_paranoid = 0
设置,您可以使用HW perf计数器来测量内核代码和用户空间中的CPU周期/缓存未命中等。它还会执行页面错误等软件事件。但是对于非常等短期命令,如ls
,perf
将具有显着的启动开销。在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
可能会有效。