프로세스별로 기록 사용량 측정항목을 보는 방법은 무엇입니까?

프로세스별로 기록 사용량 측정항목을 보는 방법은 무엇입니까?

여기서 나의 첫 번째 성향은 SAR 또는 일반적으로 sysstat 패키지에 내장된 것입니다. 그러나 실제로 그렇다면 이 해결책을 찾을 수 없는 것 같습니다.

내가 보고 싶은 것은 가능하다면 sysstat를 통해 보는 것이 SAR 로그와 거의 동일한 형식의 프로세스 사용량(메모리, CPU 등) 기록 로그입니다(아직 SAR 파일을 통해 직접 사용할 수 없는 경우). 모니터링 소프트웨어가 있다는 것은 알고 있지만, 대부분 비침해적인 패키지, 실제로 statsd/collectd를 통해 상대적으로 직관적으로 구문 분석할 수 있는 패키지를 찾고 있습니다.

답변1

sar 명령을 백그라운드 프로세스로 실행합니다. 이에 대한 구문은 다음과 같습니다.

sar -o datafile interval count >/dev/null 2>&1 &

모든 데이터는 바이너리 형식으로 캡처되어 파일(데이터파일)에 저장됩니다. 그런 다음 -f 옵션을 사용하여 sar 명령을 사용하여 데이터를 선택적으로 표시할 수 있습니다. 간격 초 간격으로 카운트 레코드를 선택하려면 간격 및 카운트 매개 변수를 설정하십시오. count 매개변수를 설정하지 않으면 파일에 저장된 모든 레코드가 선택됩니다. 이러한 방식으로 데이터를 수집하면 일정 기간 동안 시스템 사용량을 특성화하고 최대 사용량 시간을 결정하는 데 유용합니다.

답변2

5분마다 상위 프로세스의 리소스 사용량을 인쇄하는 멍청한 while 루프를 사용할 수 있습니다.

while true; do
  date;
  ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
  echo;
  sleep 300;
done

위의 내용은 가장 많은 CPU 사용량을 사용하는 상위 9개 프로세스를 출력합니다. 가장 많은 메모리를 사용하는 상위 9개 프로세스를 얻으려면 다음을 사용하십시오.

while true; do
  date;
  ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
  echo;
  sleep 300;
done

다음 예제 출력은 Apache가 CPU를 가장 많이 소비하는 프로세스임을 보여줍니다.

Sun Jan 28 23:46:28 UTC 2024
  PID  PPID CMD                         %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.7
12878 11432 /usr/sbin/httpd -DFOREGROUN  0.2  2.5
23903 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.4
  898 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
  902 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
  910 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
 8397 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
 9263 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2

Sun Jan 28 23:51:28 UTC 2024
  PID  PPID CMD                         %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.6
12878 11432 /usr/sbin/httpd -DFOREGROUN  0.2  2.4
23903 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.4
  898 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
  902 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
  910 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
 8397 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
 9263 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN  0.1  2.2

제한 사항

분명히 이것은 당신에게만 알려줄 것이기 때문에 짜증납니다.동시에 일어나는명령이 실행되는 정확한 순간(5분마다)의 리소스 사용량입니다.

이상적으로는 해당 기간 동안의 평균 리소스 사용량을 알려줍니다.간격출력 사이의 시간. 하지만 이 답변이 공개된 지 7년이 지났고 좋은 답변이 없는 것을 보면 없는 것보다는 낫습니다.

세션에서 밤새 실행되도록 놔두면 screen아침에는 최소한의 노력으로 더 나은 통찰력을 얻을 수 있습니다.

관련 정보