본문 바로가기

[Debugging] Tips

crash-utility(crashtool) - runq awk 명령어

아래 runq 명령어로 프로세스가 runqueue에 큐잉된 타입을 알 수 있는데요.
crash64> runq -t
 CPU 0: 27382901302089
        00000000000000  PID: 585    TASK: ffffffc071eb8b80  COMMAND: "android.hardwar"
 CPU 1: 27382901206517
        00000000000000  PID: 726    TASK: ffffffc0f6e3f300  COMMAND: "DispSync"
 CPU 2: 27382900987194
        00000000000000  PID: 18654  TASK: ffffffc089b82280  COMMAND: "pompeii_dm_router"
 CPU 3: 27382901150527
        00000000000000  PID: 16266  TASK: ffffffc089b85c00  COMMAND: "iptables"
 
아래 awk 명령어를 활용하면 각 CPU가 실행된 시간을 줄세워서 출력해요.
무엇보다 중요한 점은 얼마만큼 시간 차이가 있는지 출력하죠.
crash64> runq -t | grep CPU | sort -k3r |   awk 'NR==1{now=strtonum("0x"$3)}1{printf"%st%7.9fs time diffn", $0,(now-strtonum("0x"$3))/1000000000}'
 CPU 0: 27382901302089  0.000000000s time diff
 CPU 1: 27382901206517  0.001031024s time diff
 CPU 3: 27382901150527  0.001776480s time diff
 CPU 2: 27382900987194  0.009940724s time diff