ps 와 top의 결과 차이
글쓴이: load2000 / 작성시간: 금, 2015/11/13 - 11:20오전
안녕하세요.
하나의 프로세스(XXX : 22287)를 추적해서 현재 cpu사용량을 측정하려고 합니다.
XXX프로세스는 주기적으로 파일을 읽고 디비에 넣는 작업을 비규칙적으로 반복하고 있습니다.
한번에 많은 쓰레드를 생성하기도 하고 아무것도 안하기도 합니다.
먼저 top을 이용해서 뽑아보고
top -b -n 50 -d 2 -p 22287 | grep 22287
그리고 다음은 ps를 이용해서 결과를 로그로 저장하였습니다.(shell script사용: 5초에 한번씩 60번 반복)
for ((i=0;i<60;i++)); do
ps -C XXX -o user,pid,pcpu,pmem,comm,args | grep XXX >> $LOG
sleep5
done
근데 두개의 결과가 다르네요.
top에서는 cpu점유율이 매 결과마다 수치가 변동이 있는데
ps의 결과는 전부 똑같네요.
top과 ps의 결과 차이가 생기는 이유가 무엇인가요
Forums:
별도로 프로그램을 만들어서 확인해보시면 어떨까요.
...
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
재미있네요. 저도 분명하지 않은 부분이라 한번
재미있네요. 저도 분명하지 않은 부분이라 한번 찾아봤습니다.
아래는 참조 글을 의역한 부분입니다.
답은 간단합니다. top 과 ps가 보여주는 결과가 서로 다르기 때문입니다.
글쓴님께서는 현재 cpu 사용률을 확인하고자 하셨던 것 같습니다. - top 을 사용하는 것이 맞습니다.
하지만, ps 명령어로는 현재의 cpu 사용률을 확인할 수 없습니다.
top : 그때 그때의 cpu 사용률.
ps : 프로세스 전체 사용시간 동안의 cpu 사용률
간단하게, top은 모니터링 툴, ps 는 스냅샷이라고 생각하시면 됩니다.
참조 : http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result
---------------------------------
제일 왼쪽이 저입니다 :)
감사합니다.
간단하게, top은 모니터링 툴, ps 는 스냅샷이라고 생각하시면 됩니다.
라는 말씀이 확 이해가 되네요.
댓글 달기