프로세스 당 CPU 사용량을 어떻게 기록합니까? 디스크 I / O가 100 %로 쏠리고

이상한 행동을 겪고있는 Linode 상자가 있습니다. 그때마다 CPU와 디스크 I / O가 100 %로 쏠리고 서버가 응답하지 않고 부팅되어야합니다. 무슨 일이 일어나고 있는지 더 잘 조사하고 싶지만 모든 CPU와 I / O를 담당하는 사람을 찾는 방법을 모르겠습니다. Gentoo 2.6.18을 실행 중입니다.



답변

다음과 같은 작업을 시도 할 수 있습니다.

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

CPU 사용량 측면에서 상위 10 개의 프로세스가 표시됩니다. “head -10″에서 10을 다른 수로 변경하여 표시되는 프로세스 수와 “sleep 3″에서 3을 변경하거나 “sleep 3″부분을 완전히 제거하여 업데이트 빈도를 변경할 수 있습니다.


답변

상단에서 체크 아웃하면 원하는 모든 것의 이진 로그가 작성되며 gui와 같은 상단을 사용하여 하루의 시간 조각을 통과 할 수 있습니다 (기본값은 5 분마다 데이터를 가져 오는 것입니다). http://www.atcomputing.nl/Tools/atop/


답변

나는 munin 이 상자의 활동에 대한 정보를 얻는 데 도움이되는 모니터링 도구 중 하나 라고 생각합니다 . 또한 sar , iostat, ps 와 같은 일부 명령 행 도구가 있습니다.


답변

다른 답변은 현재 진행중인 작업을 볼 수있는 방법 만 보여 주므로 시스템이 재부팅 된 경우 도움이되지 않습니다.

이 정보가 후손 (또는 청구서 또는 기타 용도로) 기록되도록하려면 프로세스 회계가 필요합니다.

여기 내가 찾은 하우투가 있지만, 솔직히 말하면 프로세스 회계를 사용한 지 10 년이 지났다.

http://tldp.org/HOWTO/Process-Accounting/


답변

거의 실시간 모니터링을위한 shawn의 솔루션에 대한보다 사용자 친화적 인 접근 방식 :

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

이렇게하면 1 초마다 새로 고쳐질 상위 20 개의 프로세스를 정적으로 볼 수 있습니다. ps 명령의 “c”옵션은 전체 args 명령이 아닌 프로세스 실행 파일 이름을 인쇄합니다. 대신 전체 명령 정보가 필요한 경우이 옵션을 생략 할 수 있습니다. % 메모리 사용량 열도 추가되었습니다.


답변

젠투는 “top”명령을 잘 사용하지 않습니까?

machine:~/# top

가장 많은 부하를 일으키는 프로그램의 실행 통계를 제공해야합니다.