perf sched record 显示的列值没有意义

perf sched record 显示的列值没有意义

我所看到的问题几乎发生在我运行的任何命令上

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 毫秒。

这些列测量不同的事物,这些事物不直接相关。

相关内容