본인이 연구실에서 유지보수 중인 모 서버의 load average 모니터링 모습

/proc/loadavg 파일을 읽어보면 다음과 같은 내용물이 출력된다.

$ cat /proc/loadavg
0.15 0.10 0.09 1/727 30761

각 다섯 개의 필드의 의미는 proc의 매뉴얼 페이지에서 설명을 찾을 수 있다.

$ man proc

앞의 세 값은 1분, 5분, 15분 동안의 load average 값. 네 번째는 CPU가 현재 수행하고 있는 스레드 수와 커널 스케줄러 목록에 있는 총 스레드 수를 슬래시로 구분한 값. 마지막으로 다섯 번째는 가장 최근에 실행한 프로세스 아이디.

근데 가만히 보니 프로세스 수가 727라니, 생각보다 많은 편이다. 경험상 일반적으로 그렇게 많이 돌아가고 있지는 않을텐데… 하여 다른 방법으로 프로세스 수를 카운트 해보았다.

$ ps ax | wc -l
300

727보다는 훨씬 작다. 그러고보니 loadavg 파일은 thread 수를 카운트하므로 하나의 프로세스가 멀티스레딩으로 돌아가면 프로세스 개수보다 더 많이 카운트되는 듯 하다. 보통 사람들이 개념적으로 이해하는 프로세스 수는 ps ax | wc -l로 카운팅하는게 맞을 것이다.

카테고리: Linux

0개의 댓글

답글 남기기

Avatar placeholder