[linux] 리눅스 / 유닉스 프로세스의 최대 메모리 사용량

명령 줄을 실행하고 최대 RAM 사용량 합계를보고하는 도구가 있습니까?

/ usr / bin / time과 비슷한 것을 상상하고 있습니다.



답변

다음은 외부 스크립트 또는 유틸리티가 필요하지 않으며 Valgrind 또는 시간과 같은 다른 프로그램을 통해 프로세스를 시작할 필요가없는 단일 라이너입니다. 따라서 이미 실행중인 모든 프로세스에 사용할 수 있습니다.

grep VmPeak /proc/$PID/status

( $PID관심있는 프로세스의 PID로 대체 )


답변

[ 편집 : Ubuntu 14.04에서 작동 : /usr/bin/time -v command 전체 경로를 사용해야합니다.]

/usr/bin/time통과하면 해당 정보를 제공하는 것 같습니다 -v(Ubuntu 8.10에 있음). 예를 들어 Maximum resident set size아래를 참조하십시오 .

$ / usr / bin / 시간 -v ls /
....
        시간이 초과되는 명령 : "ls /"
        사용자 시간 (초) : 0.00
        시스템 시간 (초) : 0.01
        이 직업에 걸린 CPU의 비율 : 250 %
        경과 된 (벽시계) 시간 (h : mm : ss 또는 m : ss) : 0 : 00.00
        평균 공유 텍스트 크기 (kbyte) : 0
        공유되지 않은 평균 데이터 크기 (kbyte) : 0
        평균 스택 크기 (KB) : 0
        평균 총 크기 (KB) : 0
        최대 상주 세트 크기 (kbyte) : 0
        평균 상주 세트 크기 (kbyte) : 0
        주요 (I / O 필요) 페이지 결함 : 0
        사소한 (프레임 회수) 페이지 오류 : 315
        자발적 컨텍스트 전환 : 2
        비자발적 컨텍스트 전환 : 0
        스왑 : 0
        파일 시스템 입력 : 0
        파일 시스템 출력 : 0
        전송 된 소켓 메시지 : 0
        소켓 메시지 수신 : 0
        전달 된 신호 : 0
        페이지 크기 (바이트) : 4096
        종료 상태 : 0


답변

(이것은 이미 대답 한 오래된 질문입니다.

Yang의 대본에서 영감을 얻은 memusg 라는이 작은 도구를 생각해 냈습니다 . 많은 짧은 생활 과정을 처리하기 위해 샘플링 속도를 0.1로 높였습니다. 단일 프로세스를 모니터링하는 대신 프로세스 그룹의 rss 합계를 측정했습니다. (예, 함께 작동하는 많은 개별 프로그램을 작성합니다) 현재 Mac OS X 및 Linux에서 작동합니다. 사용법은 다음과 비슷해야합니다 time.

memusg ls -alR /> / dev / null

그것은 순간의 피크 만 보여 주지만 다른 (거친) 통계를 기록하기위한 약간의 확장에 관심이 있습니다.

심각한 프로파일 링을 시작하기 전에 살펴보기위한 간단한 도구를 사용하는 것이 좋습니다.


답변

발 그린 드 원 라이너 :

valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1

프로세스의 모든 메모리를 측정하려면 –pages-as-heap을 사용하십시오. 자세한 정보는 여기 : http://valgrind.org/docs/manual/ms-manual.html


답변

Linux에서 :

사용 /usr/bin/time -v <program> <args>및 “찾기 최대 상주 세트 크기 “.

(Bash time내장 명령 과 혼동하지 마십시오 ! 전체 경로를 사용하십시오 . /usr/bin/time)

예를 들면 다음과 같습니다.

> /usr/bin/time -v ./myapp
        User time (seconds): 0.00
        . . .
        Maximum resident set size (kbytes): 2792
        . . .

BSD, MacOS에서 :

를 사용 /usr/bin/time -l <program> <args>하여 ” 최대 상주 세트 크기 “를 찾으십시오 .

>/usr/bin/time -l ./myapp
        0.01 real         0.00 user         0.00 sys
      1440  maximum resident set size
      . . .


답변

아마도 (gnu) time (1)은 이미 원하는 것을 수행합니다. 예를 들어 :

$ /usr/bin/time -f "%P %M" command
43% 821248

그러나 다른 프로파일 링 도구는 찾고자하는 것에 따라보다 정확한 결과를 제공 할 수 있습니다.


답변

/ usr / bin / time은 실제로 원하는 것을 할 수 있습니다. 같은 것.

 / usr / bin / time --format = '(% Xtext + % Ddata % Mmax)'

자세한 내용은 시간 (1)을 참조하십시오 …