웹사이트 검색

Cpustat - Linux에서 프로세스를 실행하여 CPU 사용률을 모니터링합니다.


Cpustat은 Go 프로그래밍 언어를 사용하여 작성된 Linux용 강력한 시스템 성능 측정 프로그램입니다. USE(Utilization Saturation and Errors) 방법(모든 시스템의 성능을 분석하는 방법론)을 사용하여 효과적인 방법으로 CPU 사용률과 포화도를 밝히려고 시도합니다.

시스템에서 실행되는 모든 프로세스의 높은 빈도 샘플을 추출한 다음 이러한 샘플을 낮은 빈도로 요약합니다. 예를 들어 200ms마다 모든 프로세스를 측정하고 특정 측정항목의 최소/평균/최대 값을 포함하여 5초마다 이러한 샘플을 요약할 수 있습니다.

권장 읽기: Linux 성능을 모니터링하기 위한 20가지 명령줄 도구

Cpustat는 요약 간격의 순수 텍스트 목록과 각 샘플의 다채로운 스크롤 대시보드라는 두 가지 가능한 방법으로 데이터를 출력합니다.

Linux에 Cpustat를 설치하는 방법

cpustat를 사용하려면 Linux 시스템에 Go(GoLang)가 설치되어 있어야 합니다. GoLang이 설치되지 않은 경우 아래 링크를 클릭하여 GoLang 설치 단계를 따르세요. 설치되었습니다 :

  1. Linux에 GoLang(Go 프로그래밍 언어) 설치

Go를 설치한 후 아래의 go get 명령을 입력하여 설치하세요. 이 명령은 GOBIN에 cpustat 바이너리를 설치합니다. 변수:

go get github.com/uber-common/cpustat

Linux에서 Cpustat를 사용하는 방법

설치 프로세스가 완료되면 루트가 아닌 사용자로 시스템을 제어하는 경우 sudo 명령을 사용하여 루트 권한으로 다음과 같이 cpustat를 실행합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다.

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

참고: cpustat 및 시스템에 설치한 다른 모든 Go 프로그램을 다른 명령과 마찬가지로 실행하려면 GOBIN을 포함하세요. 변수를 PATH 환경 변수에 추가하세요. Linux에서 PATH 변수를 설정하는 방법을 알아보려면 아래 링크를 열어보세요.

  1. Linux에서 ` PATH 변수를 영구적으로 설정하는 방법 알아보기

이것이 cpustat의 작동 방식입니다. 매 간격마다 현재 프로세스 ID 목록을 가져오기 위해 /proc 디렉토리를 쿼리하고 다음을 수행합니다.

  • 각 PID에 대해 /proc/pid/stat을 읽은 다음 이전 샘플과의 차이를 계산합니다.
  • 새로운 PID인 경우 /proc/pid/cmdline을 읽어보세요.
  • 각 PID에 대해 netlink 메시지를 보내 taskstats를 가져오고 이전 샘플과의 차이를 계산합니다.
  • 전체 시스템 통계를 얻으려면 /proc/stat을 가져오세요.

다시 말하지만, 각 수면 간격은 이러한 모든 통계를 가져오는 데 소요되는 시간을 고려하여 조정됩니다. 또한 각 샘플은 샘플 간 실제 경과 시간을 기준으로 각 측정값을 조정하는 데 걸린 시간도 기록합니다. 이는 cpustat 자체의 지연을 설명하려고 시도합니다.

인수 없이 실행하면 cpustat는 기본적으로 샘플링 간격: 200ms, 요약 간격: 2s(10개 샘플), 상위 10개 프로세스 표시, 사용자 필터: all, pid 필터: all as를 표시합니다. 아래 스크린샷에 표시되어 있습니다.

sudo $GOBIN/cpustat 

위 출력에서 필드 앞에 표시되는 시스템 전체 요약 측정항목의 의미는 다음과 같습니다.

  • usr – CPU의 백분율로 나타낸 최소/평균/최대 사용자 모드 실행 시간입니다.
  • sys – 최소/평균/최대 시스템 모드 런타임(CPU 비율).
  • nice – 최소/평균/최대 사용자 모드 낮은 우선순위 런타임(CPU 비율).
  • idle – CPU의 백분율로 표시되는 최소/평균/최대 사용자 모드 실행 시간입니다.
  • iowait – 디스크 IO를 기다리는 최소/평균/최대 지연 시간입니다.
  • prun – 실행 가능한 상태의 최소/평균/최대 프로세스 수(로드 평균과 동일)
  • pblock – 디스크 IO에서 차단된 프로세스의 최소/평균/최대 수입니다.
  • pstart – 이 요약 간격에서 시작된 프로세스/스레드 수입니다.

위의 출력에서 특정 프로세스에 대해 다른 열은 다음을 의미합니다.

  • 이름 – /proc/pid/stat 또는 /proc/pid/cmdline의 공통 프로세스 이름입니다.
  • pid – 프로세스 ID, 'tgid'라고도 합니다.
  • min – /proc/pid/stat에서 측정된 pid에 대한 사용자+시스템 시간의 가장 낮은 샘플입니다. 규모는 CPU의 백분율입니다.
  • max – 이 pid에 대한 사용자+시스템 시간의 가장 높은 샘플이며 /proc/pid/stat에서도 측정됩니다.
  • usr – /proc/pid/stat에서 측정된 요약 기간 동안 pid의 평균 사용자 시간입니다.
  • sys – /proc/pid/stat에서 측정된 요약 기간 동안 pid의 평균 시스템 시간입니다.
  • nice – /proc/pid/stat에서 측정된 프로세스의 현재 "nice" 값을 나타냅니다. 높을수록 "더 좋다"는 뜻입니다.
  • runq – 프로세스와 모든 스레드가 실행 가능하지만 실행을 기다리는 데 소요된 시간으로, netlink를 통해 taskstats에서 측정됩니다. 규모는 CPU의 백분율입니다.
  • iow – 디스크 IO에 의해 차단된 프로세스와 모든 스레드가 소요된 시간으로, netlink를 통한 taskstats에서 측정됩니다. 규모는 요약 간격에 대한 평균을 계산한 CPU 비율입니다.
  • swap – 프로세스와 모든 스레드가 교체되기를 기다리는 데 소요된 시간으로, netlink를 통해 taskstats에서 측정됩니다. 규모는 요약 간격에 대한 평균을 계산한 CPU 비율입니다.
  • vcx 및 icx – 요약 간격 동안 프로세스와 모든 스레드에 의한 자발적 컨텍스트 전환의 총 수로, netlink를 통해 taskstats에서 측정됩니다.
  • rss – /proc/pid/stat에서 가져온 현재 RSS 값입니다. 이 프로세스가 사용하는 메모리의 양입니다.
  • ctime – 이 요약 간격 동안 종료된 하위 항목을 기다려 소비한 user+sys CPU 시간의 합계로, /proc/pid/stat에서 측정됩니다.

시간은 하위 프로세스가 종료될 때만 보고되므로 오랫동안 실행되는 하위 프로세스는 종종 이 측정을 혼동할 수 있습니다. 그러나 이는 많은 하위 프로세스에서 CPU 시간을 자주 소비하는 빈번한 크론 작업 및 상태 확인의 영향을 측정하는 데 유용합니다.

  • thrd – /proc/pid/stat에서 측정된 요약 간격 끝의 스레드 수입니다.
  • sam – 요약 간격에 포함된 이 프로세스의 샘플 수입니다. 최근 시작되거나 종료된 프로세스는 요약 간격보다 적은 수의 샘플에 대해 표시될 수 있습니다.

다음 명령은 시스템에서 실행 중인 상위 10개 루트 사용자 프로세스를 표시합니다.

sudo $GOBIN/cpustat -u root

고급 터미널 모드에서 출력을 표시하려면 다음과 같이 -t 플래그를 사용하십시오.

sudo $GOBIN/cpustat -u roo -t

상위 x개의 프로세스 수(기본값은 10)를 보려면 -n 플래그를 사용할 수 있습니다. 다음 명령은 시스템에서 실행 중인 상위 20개의 Linux 프로세스를 보여줍니다.

sudo $GOBIN/cpustat -n 20 

다음과 같이 -cpuprofile 옵션을 사용하여 CPU 프로필을 파일에 쓴 다음 cat 명령을 사용하여 파일을 볼 수도 있습니다.

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

도움말 정보를 표시하려면 다음과 같이 -h 플래그를 사용하세요.

sudo $GOBIN/cpustat -h

cpustat Github 저장소에서 추가 정보를 찾아보세요: https://github.com/uber-common/cpustat

그게 다야! 이번 글에서는 유용한 Linux용 시스템 성능 측정 도구인 cpustat를 설치하고 사용하는 방법을 보여드렸습니다. 아래 댓글 섹션을 통해 여러분의 생각을 공유해 주세요.