Linux: 실행 중인 다른 프로세스로 인해 프로세스 속도가 느려지는지 확인하는 방법

Linux: 실행 중인 다른 프로세스로 인해 프로세스 속도가 느려지는지 확인하는 방법

RHEL 6.3 시스템에서 프로세스가 실행되고 있습니다. 어쨌든 이는 다른 시스템에서 실행되는 동일한 프로세스보다 처리하는 데 시간이 더 오래 걸립니다. 프로세스가 느리게 실행되는 이유 또는 프로세스 속도를 늦추는 병렬로 실행되는 다른 프로세스가 있는지 어떻게 알 수 있습니까?

답변1

top또는 을 사용하여 무슨 일이 일어나고 있는지 디버깅해 볼 수 있습니다 htop.

top& htop특정 프로세스에서 소비하는 리소스의 양을 표시합니다. 프로세스를 다음과 같이 실행하겠습니다. /usr/bin/time myproc실제로 시작하는 데 시간이 얼마나 걸리는지 확인합니다. 이 명령은 두 시스템 모두에서 동일한 사용자 시간이지만 다른 실행 시간을 표시해야 합니다.

프로세스가 각 시스템에서 동일한 양의 "유효" 시간을 소비하고 있음을 확인한 후에는 또는 어떤 "다른" 프로세스가 시스템 속도를 저하시켜 프로세스가 machineA.machineA B에서 더 오랜 시간을 소비하는지 확인할 수 top있습니다 htop.

다음 스크립트가 있다고 가정해 보겠습니다 doit.bash.

#!/bin/bash

a=0
while [ 1 ]; do
  let a=a+1
  (( $a==100000 )) && exit
done

그런 다음 제거된 시스템에서 실행했습니다.

$ /usr/bin/time ./doit.bash 
1.25user 0.10system 0:01.38elapsed 98%CPU (0avgtext+0avgdata 1272maxresident)k
0inputs+0outputs (0major+366minor)pagefaults 0swaps

그런 다음 이 명령을 실행하여 상자의 일부 부하를 시뮬레이션했습니다.

$ dd if=/dev/zero of=/dev/null

반복 실행 doit.bash:

$ /usr/bin/time ./doit.bash 
2.32user 0.20system 0:02.98elapsed 84%CPU (0avgtext+0avgdata 1268maxresident)k
0inputs+0outputs (0major+365minor)pagefaults 0swaps

doit.bash전체 사용자 시간과 실행 시간 모두에서 실행 시간이 더 길어지는 것을 확인할 수 있습니다 .

  • run1 - (사용자): 1.25초 - (경과): 1.38초
  • run2 - (사용자): 2.32초 - (경과): 2.98초

노트:완료되면 Ctrl+가 C명령을 실행하고 있는지 확인하세요.dd

답변2

프로세스가 CPU 바인딩인지 IO 바인딩인지 알고 있나요? CPU만 필요하다면 top그것은 당신의 친구입니다. IO가 제한된 경우 vmstat -Sm 5, iotop -od5및 을 확인하십시오 iostat -m 5. 문제가 느리고 성능이 떨어지는 장치로 인해 발생하는지, 아니면 성능이 떨어지는 시스템에서 다른 프로그램이 실행되고 있는지 알아보세요.

바인딩된 것이 CPU인지 IO인지 알 수 없는 경우 먼저 상단의 System IO Wait 값( )을 top살펴보세요 . wa하나 이상의 CPU가 IO를 기다리고 있는 경우 IO 대기 값이 증가합니다. 유휴 상태가 많고 IO 대기 값이 낮다면 프로세스가 일종의 동기화 이벤트(아마도 로컬 또는 네트워크를 통한 일종의 잠금)를 기다리고 있는 것입니다.

관련 정보