기계를 호깅하는 프로세스를 찾는 방법


10

시나리오 : 갑자기 컴퓨터가 느리게 느껴집니다. 마우스는 움직이지만 창을 여는 데 시간이 오래 걸리는 등의 uptime경우 부하는 7.69이고 높이는 것으로 나타납니다.

어떤 프로세스가로드의 원인인지 알아내는 가장 빠른 방법은 무엇입니까?

이제 "상위"도구와 비슷한 도구는 CPU 나 메모리 사용량을 보여 주지만 동시에 두 가지를 모두 나타내지 않기 때문에 답이 아닙니다. 필요한 것은 입력 할 수있는 단일 명령입니다.

프로세스 X 때문에 시스템이 8GB의 RAM을 디스크로 교체하려고합니다.

또는

프로세스 X는 디스크 전체를 탐색합니다

또는

프로세스 X는 400 % CPU를 사용합니다 "

그래서 내가 찾고있는 것은 iostat, htop / atop 및 비슷한 도구가 다음과 같은 출력으로 실행됩니다.

 1235 cp - Disk trashing
   87 chrome - Uses 2 GB of RAM
  137 nfs_bench - Uses 95% of the network bandwidth

분석 할 수있는 숫자를 제공하는 도구가 아니라 현재로드를 발생시키는 프로세스를 정확하게 알려주는 도구를 원하지 않습니다. 키보드 앞에있는 사용자는 "프로세스"를 작성하는 방법을 거의 알지 못한다고 가정하지만 "상주 크기", "가상 메모리"또는 "프로세스 수명주기"에 관해서는 사용자가 빠르게 압도됩니다.

내 주장은 다음과 같습니다. 사용자가 문제를 발견했습니다. 수천 가지 이유가있을 수 있습니다 ... 음, 거의 :-) 사용자가 문제의 원인을 알고 싶어합니다.

현재 솔루션은 많은 숫자를 제공 하므로이 숫자의 의미를 알아야합니다. 내가 찾고있는 것은 메타 도구입니다. 데이터의 99 %는 문제와 관련이 없습니다. 따라서 툴이 수행해야 할 작업은 "이 프로세스에는 많은 CPU가 필요하고 많은 IRQ가 생성되며이 프로세스는 많은 RAM을 할당하며 여전히 커지고 있습니다"라는 리소스 만 사용하는 프로세스를 찾는 것입니다.

이것은 상대적으로 짧은 목록입니다. 이 목록을 처음 접하는 사람이 출력에서보다이 목록에서 범인을 찾는 것이 훨씬 더 간단 htop합니다. 예를 들어 약 5000 개의 숫자를 제공하지만 멀티 스레드 프로세스를 직접 접어야합니다 (50 줄이 VIRT 2750M있지만 단지 16GB의 RAM-머신이 자체적으로 교체되어야하지만 물론 이것은 빠르게 발생할 수있는 데이터를 잘못 해석 한 것입니다).


왜 그런지 모르겠습니다. 설명하는 증상은 디스크 휴지통의 증상이 아닙니다 (마우스에 영향을 미치지 않음). 느린 마우스는 최대 용량의 클래식 CPU입니다.
soandos

1
이것은 단지 예일뿐입니다. 소금 한알과 함께 드십시오. 아무것도 모르는 컴퓨터 앞에 멍청한 놈이 앉아 있다고 상상해보십시오. 그가 가장 쉽게에서 무슨 일이 일어나고 있는지 알 수있는 방법 (즉, 어떤 출력 인터넷 검색 반 시간 소비없이 top수단을)
아론 Digulla을

GUI와 모든 것 또는 다른 것을 가진 작업 관리자와 동등한 Linux를 찾고 있습니까?
soandos

내가 실행하고 "프로세스 X가 시스템을 호깅하고 있습니다"라는 것을 찾습니다.
Aaron Digulla

답변:


3

각각이 도구 X를 실행하라고 지시했기 때문에 응답에 미소를 지을 필요가 있습니다. 당신이보고있는 것이 간헐적이라면 아무 상관 관계가 없을 것입니다. sar 과 같은 도구는 충분히 높은 빈도로 실행하면 도움이 될 수 있지만 collectl 이 더 낫다고 주장 합니다.

sar 와 마찬가지로 RPM을 설치하고 수행하여 데몬으로 실행합니다 /etc/init.d/collectl start.

이제 느린 것이 collectl -p /var/log/collectl/filename --top보이면 데이터를 재생하고 최고의 프로세스를 보여줍니다. 당신은 또한 collectl --top실시간으로 실행 하고 볼 수 있습니다. BTW-실시간으로 할 수있는 모든 것 또한 재생할 수 있습니다.

CPU로드와 관련하여 인터럽트로 과부하가 걸리면 어떻게합니까? collectl -sC개별 CPU의로드를 표시 할뿐만 아니라 -sc평균로드에 사용하는 것뿐만 아니라 시간을 어떻게 소비하고 있는지를 보여줍니다. -j( -scj)를 포함 시키면 인터럽트 / CPU 수가 표시됩니다. 대문자를 사용 -J하면 각 인터럽트 / CPU의 유형이 표시됩니다.

물론 vmstat를 정말로 좋아한다면 항상 수집 데이터를 재생할 수 있으며 --vmstat기록 데이터를 vmstat 형식으로 표시합니다.

내가 나열 할 시간보다 훨씬 많은 스위치가 있지만 SourceForge 에서 확인 하거나 Google 에서 확인할 수 있습니다 .


감사; 이것은 내가 찾던 것이 아니지만 적어도 좋은 출발점입니다.
Aaron Digulla

환상적인 도구! 그리고 우분투 (최소 12.04 이후)에서는 패키지를 설치하기 만하면됩니다. 설치시 그리고 그 후 재부팅시 데몬이 자동으로 시작됩니다 :)
nealmcb

6

"정상"은 올바른 숫자를 보는 한 합리적으로 잘 작동합니다. 보자 :

top - 13:11:45 up 13 days,  1:13, 21 users,  load average: 0.06, 0.11, 0.26
Tasks: 271 total,   2 running, 267 sleeping,   0 stopped,   2 zombie
Cpu(s): 19.0%us,  6.3%sy,  0.0%ni, 74.0%id,  0.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   8183668k total,  8002712k used,   180956k free,    12476k buffers
Swap: 11847900k total,   723480k used, 11124420k free,   767016k cached

이제 CPU가 모두 사용되어 시스템이 느리면 "Cpu (s) :"행의 "us"및 "sy"열이 100 %에 가깝습니다.

스와핑으로 인해 속도가 느리면 "Mem :" "free"는 매우 낮은 값과 "Swap :" "used"높은 값을 나타냅니다.

일반적으로 I / O 로 인해 속도가 느리면 "Cpu (s) :" "wa"는 I / O 대기에 시간이 소비되었음을 나타냅니다.

이제 I / O 대기가 문제라는 것을 알고 있다면 "iotop"프로그램을 사용하여 어떤 프로세스가 대부분의 I / O를 생성하는지 알 수 있습니다.


+1 그러나 나는 나를 위해이 분석을 수행하고 잘못된 정보와 함께 프로세스를 인쇄하는 도구를 찾고 있습니다. 나는 "원시"인물로부터 그것을 수집하고 싶지 않습니다. 아무것도?
Aaron Digulla

1
죄송하지만 기본 수준에서 여러 종류의 속도 저하의 차이점을 이해하지 않으면 기계 속도 저하와 같은 문제를 해결할 수 없습니다. 그러한 도구가 존재한다면 나는 그 도구에 대해 모른다. 유능한 컴퓨터 관리자 / 서비스 담당자가 필요할 것입니다.
ZDS

이러한 도구가 존재하면 확실히 자동으로 결정할 수 있기 때문에 좋을 것입니다.의 출력에서 ​​알 top수 있다면 컴퓨터도 마찬가지입니다. 이것은 모나리자의 미소가 아닙니다. 단지 "나쁜"숫자를 찾기 위해 몇 개의 숫자를 깨뜨리는 것입니다.
Aaron Digulla

2

400 % 사용량을 기준으로 쿼드 코어 프로세서가 있다고 가정하겠습니다. 로드 평균은 용량의 거의 두 배이며 프로세스의 절반이 CPU를 기다리고 있습니다.

먼저 renice셸을 0 또는 -10으로 설정하여보다 반응적인 시스템을 얻은 다음 htop문제가있는 프로세스를 찾아 strace주어진 프로세스 에서이 프로세스를 따릅니다 . 유용 할 수있는 다른 도구는 다음과 같습니다.

  • vmsat
  • sar
  • iostat
  • pmap

1

마우스가 느리면 인터럽트로드가 너무 높거나 USB 컨트롤러가 너무 바빠서 발생할 수 있습니다 (USB 마우스라고 가정).


IRQ로드를 높이는 드라이버 / 구성 요소를 알려주는 도구가 있습니까?
Aaron Digulla

1

vmstat는 일반적인 용어로 도움을 줄 수 있습니다. 사용 예는 다음과 같습니다.

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 977908 426184 1543884    0    0    38    45  106  385  4  1 95  1

X 초마다 실행할 수도 있습니다. 명령 뒤에 숫자 X를 추가하십시오.

편집 : 주석의 관점에서 ... 파일에 다음을 쓰고 해당 파일을 실행 가능하게 만듭니다. 머신의 상위 3 개 프로세스를 알려줍니다.

top -n 1 | tail -16 | head -4 | awk '{print $13}'

CPU와는 달리 어떤 호그 메모리를 알고 싶다면 맨 맨 페이지를 읽고 표시 순서를 변경하십시오.


더 높은 수준의 것을 찾고 있습니다. vmstat를 실행하고 숫자를 분석해야하므로 "cs"의 의미와 큰 "cs"가 "good"인지 "bad"인지 알 필요가 없습니다.
Aaron Digulla
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.