메모리 사용량을 그래프로 나타내는 간단한 도구?


14

메모리 사용량을 그래프로 표시하는 스크립트가 있습니까 (예 : 파이 차트), 각 프로세스가 별도의 조각이됩니까?

시간이 지남에 따라 메모리 사용량을 그래프로 표시하기 위해 Munin 과 같은 것을 찾고 있지 않고 프로세스 당 메모리 사용량을 단일 시점으로 보여줍니다.

내 요청을 더 모호하게 만들려면 헤드리스 서버 (X 응용 프로그램 없음)입니다. 가장 간단한 방법은 PNG 파일 또는 HTML 파일 (Javascript를 사용하여 프로세스 필터링, 그래프 유형 간 변경 등을 허용 할 수 있음)을 작성하는 것입니다.

답변:


13

프로세스 당 메모리 계산은 몇 분 안에 들어가게되는 여러 가지 이유로 까다 롭습니다. 간단한 모니터링을 위해서는 gkrellmd 또는 nagios 스크립트로 충분합니다. 더 높은 정확도를 원한다면 더 세게 봐야합니다.

smem비례 세트 크기 의 개념을 소개합니다 .

실제 메모리의 많은 부분이 일반적으로 여러 응용 프로그램간에 공유되므로 RRS (Resident Set Size)라는 표준 메모리 사용량 측정 값이 메모리 사용량을 과대 평가합니다. PSS는 대신 각 응용 프로그램의 각 공유 영역에 대한 "공정한 점유율"을 측정하여 현실적인 측정 값을 제공합니다.

예 : 그놈을 시작하면 각 애플릿과 프로그램마다 하나씩 여러 프로세스가 시작됩니다. 그것들은 모두 libglib에 연결됩니다. Linux는 libglib를 하나의 메모리 블록에로드하여 libglib를 원하는 모든 프로세스에 맵핑합니다. 순진한 메모리 계정은 연결된 모든 프로세스에 대해 전체 libglib 크기를 계산합니다.

smem은 libglib의 비용을 그것을 사용하는 프로세스들 사이에서 나눠서 현실에 대한 자세한 그림을 제공합니다. 또한 웹 사이트에서 메모리 사용량을 표시하는 여러 옵션이 있습니다.

  1. 기본 프로세스 정보 smem 표시
  2. 시스템보기 smem -R 4G -K / path / to / vmlinux -w 표시
  3. 총계 및 백분율 표시 smem -t -p
  4. 다른 열 표시 smem -c "name user pss"
  5. smem -M libxml을 매핑하여 필터링 된 프로세스 표시
  6. 프로세스 smem -m -P [e] volution으로 필터링 된 매핑 표시
  7. tarball smem 캡처에서 데이터 읽기 --source capture.tar.gz
  8. pid smem --bar pid -c "pss uss"로 레이블이 지정된 막 대형 차트 표시
  9. 이름 smem --pie name -s rss로 표시된 RSS 원형 차트 표시

그러나 최신 커널 (> 2.6.27)이 필요합니다.


1
그렇습니다. 2.6.27이 합리적으로 최신 이라는 제안 은 꽤 웃기다. 새로운 커널이 탑재 된 배는 Fedora 10과 Ubuntu 9.01입니다.
Dave Cheney

9.04; Ubuntu 8.10은 2.6.27과 함께 제공되지만 2.6.30은 rc3에 있습니다.
jldugger 2009

나의 사과, 나는 2.6.18이 최근으로 간주되는 RHEL 땅에서 오랫동안 보냈다.
Dave Cheney

5

선반에서 아무것도 생각할 수 없다

그러나 ps -AH v를 실행하는 PHP 스크립트의 콤보 | awk '{print $ 8, $ 9, $ 10}' 그리고 pChart 와 함께 사용 하면 원하는 것을 수행하는 웹 페이지가 제공 될 수 있습니까? (Kb 사용량, 전체 백분율 및 프로세스 이름)


1
+1, 구글 차트 API로 어려움을 겪습니다. :)
Node

좋은 지적. 구글 차트 API는 ...와 아마 빨리 작업하는 것입니다
마크 레 겐스 버그 (Regensberg)

2

sarface를 살펴보십시오 -sar 데이터에 따라 다르며 메모리 사용량 (및 기타 sar / sysstat 데이터)을 실시간으로 모니터링 할 수 있습니다.



1

너 스스로해라. RRD 데이터베이스를 업데이트하는 간단한 쉘 스크립트를 작성하십시오. 그런 다음 rrdtool을 사용하여 그래프를 그립니다.


1

실제로 세부 수준이 낮다면 collectl을 잊지 마십시오. 다음은보고 할 수있는 프로세스 당 메모리 사용 유형의 예입니다.

레코드 1 cag-dl585-02 (1244758290.002) (2009 년 6 월 11 일 18:11:30)

프로세스 요약 (카운터는 / sec)
# PID 사용자 S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF 명령
 9089 루트 S 66856K 0 2328K 1440K 212K 736K 6812K 0 sendmail :
 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 sendmail :
 9108 루트 S 6428K 0360K 180K 84K 88K 1944K 0 gpm
 9120 루트 S 74808K 0 1136K 476K 520K 48K 1920K 0 crond
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 xfs

특정 프로세스에 관심이있는 경우 적절한 필터 (스레드를 표시하는 스위치 포함)를 지정할 수 있습니다.

또한 일반적으로 메모리에 관심이있는 경우 슬래브 세부 사항을 표시 할 수 있으며 vmstat 형식 출력도 있습니다. 기존 도구가 이미 그렇게 할 때 vmstat 형식으로 데이터를 표시하려는 이유는 무엇입니까? 통계를 파일에 기록하고 나중에 여러 형식으로 재생할 수 있습니다.

시도 해봐 좋아해


1
  1. 프로세스를 잡습니다.
  2. 출력을 구문 분석하고 쉼표로 구분 된 형식으로 텍스트 파일에 저장하십시오.
  3. 쉼표로 구분 된 파일을 Excel에서 엽니 다.
  4. Excel의 차트 유틸리티를 사용하여 해당 데이터에 대한 그래프를 그립니다.

다른 시간 간격으로 메모리 스냅 샷을 원하면 원하는 간격으로 cron 작업을 설정하고 스크립트를 실행하십시오.

도움이 되길 바랍니다 ....


0

이것은 정확히 당신이 찾고있는 것이 아니지만 아마도이 참조를 사용하여 필요에 맞게 조정할 수 있습니다 ( "프로세스 메모리 사용량"을 찾으십시오).




0

더 자세히 설명하지는 않았지만 collectl에는 구분 기호로 구분 된 출력을 생성하는 옵션이 있으므로 gnuplot의 경우 공백이있는 데이터를 생성하면 모든 준비가 완료됩니다. 심지어 엑셀에 멋지게로드됩니다. 쉼표를 원하면 구분 기호를 변경할 수 있고 실제로 rrd 경로를 원한다면 (그림이 데이터와 일치하지 않아도되므로주의하십시오!) 델리 미터를 콜론으로 변경하고 타임 스탬프를 UTC로 변경할 수도 있습니다. -표



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.