perf sched 레코드에 표시되는 열 값은 의미가 없습니다.

perf sched 레코드에 표시되는 열 값은 의미가 없습니다.

내가 보고 있는 문제는 내가 실행하는 거의 모든 명령에서 발생합니다.

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은 평균 대기 시간이 0.007밀리초로 75번 전환됩니다. 0.007*75 = 4.934가 아닌 0.525를 곱하세요. 그래서 뭔가 잘못되었습니다.

뭔가 빠진 것이 없다면 "perf sched Record" 출력은 매우 잘못된 것입니다.

답변1

  ls:239340             |      4.934 ms |       75 | avg:    0.007 ms | max:    0.061 

실행 중인 프로세스 239340이 lsCPU(실제로 실행 중)에서 총 4.934ms를 소비했으며 75번 전환되었으며 평균 및 최대 예약 대기 시간(프로세스를 실행하기 위해 깨어난 후 실제 컨텍스트 전환 사이의 시간)이 0.007밀리초와 0.061밀리초임을 나타냅니다. .

이러한 열은 직접적으로 관련되지 않은 다양한 항목을 측정합니다.

관련 정보