“perf sched record”如何计算上下文切换?

时间:2017-08-30 21:25:07

标签: linux performance scheduler perf context-switch

我使用 import { fetch } from '[your_service_file.js]' function getAdminData() { fetch.get('[service path]'); } 来记录特定程序的调度程序活动。但是当我生成延迟报告时,它显示只有一个上下文切换,同时要求它转储原始事件显示许多开关(摘录如下)。这怎么可能有意义?我假设我以某种方式误解了事情?切换到kworker不算数?

perf sched record -p 8827输出:

perf sched latency

----------------------------------------------------------------------------------------------------------------- Task | Runtime ms | Switches | Average delay ms | Maximum delay ms | Maximum delay at | ----------------------------------------------------------------------------------------------------------------- :4320:4320 | 0.000 ms | 1 | avg: 0.000 ms | max: 0.000 ms | max at: 0.000000 s ----------------------------------------------------------------------------------------------------------------- TOTAL: | 0.000 ms | 1 | --------------------------------------------------- 输出:

perf sched script

1 个答案:

答案 0 :(得分:2)

perf sched latency 'Switches' 列仅包含非自愿/非自愿上下文切换。而 perf sched script 列出了所有上下文切换(即自愿和非自愿的)。

您可以交叉检查此号码,例如GNU时间。例如:

perf sched record /usr/bin/time -v yourtestprogram

或者通过其他方式监控 /proc/$pid/status 中的上下文切换次数(每种)。

另请参见 how perf sched latency counts(即 nb_atoms 是“开关”值,例如从该源文件中的该函数追溯)。