사용자 모드 또는 커널 모드에서 프로세스가 소비한 시간을 찾는 방법

사용자 모드 또는 커널 모드에서 프로세스가 소비한 시간을 찾는 방법

cat /proc/pid/stat에 대한 문서를 읽었는데 많은 숫자가 표시됩니다. 내가 계산하고 있는 프로세스가 무한 루프에서 실행되고 있습니다. 그래서 가치관은 계속 변합니다. utime 및 stime이라는 것이 있는 것을 보았는데,
실행 중인 프로세스의 정확한 사용자 시간과 커널 시간을 제공하는지 잘 모르겠습니다.
utime 및 stime에 해당하는 숫자를 수동으로 결정하는 대신 출력에서 ​​이 두 숫자를 추출하는 방법이 있습니까?

답변1

예, 이러한 필드는 실행 중인 프로세스의 정확한 사용자 시간과 커널 시간을 제공합니다.man 5 proc그들을 다음과 같이 묘사한다

이 프로세스가 사용자 모드에서 예약된 시간(클럭 주기 sysconf(_SC_CLK_TCK))입니다. 여기에는 guest_time 필드를 인식하지 못하는 애플리케이션이 계산에서 이 시간을 잃지 않도록 guest_time(가상 CPU를 실행하는 데 소요된 시간, 아래 참조)이 포함됩니다.

그리고

이 프로세스가 커널 모드에서 예약된 시간(클럭 주기 sysconf(_SC_CLK_TCK))입니다.

각기. (방문자 시간은 43번 필드입니다.)

필드 기반 도구를 사용하여 추출할 수 있습니다.예를 들어

awk '{print $14, $15}' /proc/$$/stat

관련 정보