我所看到的问题几乎发生在我运行的任何命令上
perf sched record
我将使用 ls 作为一个非常简单的示例。所以如果我这样做
perf sched record ls
其次是
perf sched latency
调度程序输出如下
perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.610 MB perf.data (772 samples) ]
-------------------------------------------------------------------------------------
Task | Runtime ms | Switches | Average delay ms | Maximum delay
-------------------------------------------------------------------------------------
kworker/u640:1:142368 | 0.064 ms | 1 | avg: 0.058 ms | max: 0.058
kworker/75:5:47904 | 0.031 ms | 1 | avg: 0.019 ms | max: 0.019
kworker/7:1:238110 | 0.020 ms | 1 | avg: 0.012 ms | max: 0.012
VM Periodic Tas:6310 | 0.031 ms | 1 | avg: 0.009 ms | max: 0.009
kworker/u640:2:216354 | 0.026 ms | 1 | avg: 0.009 ms | max: 0.009
watchdog/62:321 | 0.000 ms | 1 | avg: 0.008 ms | max: 0.008
ls:239340 | 4.934 ms | 75 | avg: 0.007 ms | max: 0.061
migration/7:47 | 0.000 ms | 1 | avg: 0.006 ms | max: 0.006
dsm_sa_datamgrd:13605 | 0.140 ms | 4 | avg: 0.006 ms | max: 0.008
rcu_sched:9 | 0.326 ms | 7 | avg: 0.005 ms | max: 0.007
sshd:191486 | 1.122 ms | 32 | avg: 0.004 ms | max: 0.051
postgres:(16) | 0.381 ms | 9 | avg: 0.004 ms | max: 0.009
kworker/4:2:238454 | 0.668 ms | 73 | avg: 0.003 ms | max: 0.022
perf:239339 | 49.838 ms | 1 | avg: 0.002 ms | max: 0.002
xfsaild/dm-0:1294 | 0.023 ms | 1 | avg: 0.000 ms | max: 0.000
watchdog/61:316 | 0.000 ms | 1 | avg: 0.000 ms | max: 0.000
watchdog/60:311 | 0.000 ms | 1 | avg: 0.000 ms | max: 0.000
watchdog/59:306 | 0.000 ms | 1 | avg: 0.000 ms | max: 0.000
watchdog/58:301 | 0.000 ms | 1 | avg: 0.000 ms | max: 0.000
-------------------------------------------------------------------------------------
TOTAL: | 57.604 ms | 213 |
---------------------------------------------------
我希望“运行时毫秒”应该等于“开关”*“平均延迟毫秒”,但在所有情况下,“运行时毫秒”都比“开关”*“平均延迟毫秒”大得多。
例如,ls:239340 切换 75 次,平均延迟为 0.007 毫秒。乘以 0.007*75 = 0.525,而不是 4.934。所以有些地方不对劲。
除非我遗漏了一些东西,否则“perf sched record”输出是非常错误的。
答案1
ls:239340 | 4.934 ms | 75 | avg: 0.007 ms | max: 0.061
表示正在运行的进程 239340ls
在 CPU 上总共花费了 4.934 毫秒(实际运行),被切换了 75 次,并且平均和最大调度延迟(唤醒和实际上下文切换以运行该进程之间的时间)分别为0.007 和 0.061 毫秒。
这些列测量不同的事物,这些事物不直接相关。