我使用 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
答案 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
是“开关”值,例如从该源文件中的该函数追溯)。