프로세스 당 CPU 사용량을 어떻게 기록합니까?


18

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

답변:


20

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

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"부분을 완전히 제거하여 업데이트 빈도를 변경할 수 있습니다.


5
거기에 어떤 수면이 있는지 확인하십시오. 그렇지 않으면 셸 프로세스가 항상 상위 10 위에 올 가능성이 높습니다. :)
jedberg

나는 sort -nr(적어도 내 우분투 / 데비안
sehe

2
BTW에서는이 프로세스에 가장 높은 우선 순위를 부여해야합니다.이 프로세스는로드가 많은 피크 (결국 수명의 요점) 동안 유용하게 유지되도록해야합니다.
spacediver

12

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


6

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


5

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

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

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

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


2

거의 실시간 모니터링을위한 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 명령이 아닌 프로세스 실행 파일 이름을 인쇄합니다. 대신 전체 명령 정보가 필요한 경우이 옵션을 생략 할 수 있습니다. % 메모리 사용량 열도 추가되었습니다.


1

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

machine:~/# top

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


예, 알고 있지만 나중에 기록을 볼 수 있도록 기록하고 싶습니다. CPU 스파이크가 발생하면 컴퓨터가 응답하지 않게되므로 로그인 top하여 문제의 원인을 파악할 수 없습니다 . 나중에 다시 확인하고 어떤 프로세스를 수행했는지 확인하고 싶습니다.
Helder S Ribeiro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.