2010-12-02 4 views
1

일부 programm의 최대 (최대) 메모리 사용량은 어떻게 측정 할 수 있습니까?최상위 메모리 소비량 측정 (Linux 프로그램)

malloc/free를 많이 사용하며 빠른 속도로 실행되므로 맨 위에 최대 메모리가 표시되지 않습니다.

$ time ./program 
real xx sec 
user xx sec 
sys xx sec 

$ mem_report ./program 
max memory used xx mb 
shared mem  xx mb 
+0

기존 프로그램을 원한다는 것을 알고 있습니다. 그렇습니까? 왜냐하면 그것은 당신의 프로그램이기 때문에 다른 방식으로 처리 할 수 ​​있습니다. –

+0

어떤 언어입니까? 왜/a 디버거에서 실행하지 않습니까? – initall

+0

예, 기존 실행 파일을 측정하는 것입니다. 그것은 C로 작성되었지만 '시간'으로 사용하기 쉬운 유틸리티를 얻고 싶습니다. 디버거에서 실행하면 도움이되지 않습니까? – osgx

답변

1

time 통화가 셸 :

나는 떨어지게 같은 time 유틸리티를합니다. 프로그램 /usr/bin/time에 전화하면 상주 메모리 사용에 대한 지식을 얻게됩니다. 그러나 메모리 매핑 파일, 공유 메모리 및 기타 필요한 세부 정보는 계산되지 않을 수 있습니다. 당신이 나중에를 집계 할 수 있습니다 -

# for your current process 
/proc/self/statm 

# or a process you know the pid of 
/proc/{pid}/statm 

결과를 써 : 당신이 리눅스에있는 경우

+0

페이지 폴트 만보고되지만 메모리는보고하지 않습니다. '(0avgtext + 0avgdata 0maxresident) k 0 입력 +0 출력 (1major + 1822 분) 또는 페이지 오류 0swaps' – osgx

+0

이상합니다. "/ etc/hosts"의 온화한'wc'조차도 약간의 RSS 사용을 가져옵니다. 프로그램이 통계가 나오기 오래 전에 종료 된 것 같습니다. –

+0

그래서'/ usr/bin/time' 유틸리티가 폴링을 사용합니까? 런타임은 사용자의 0.3 초, 실제의 3 초입니다. – osgx

0

, 당신은 여론 조사는 스크립트에서 프로그램을 포장 할 수 있습니다.

+0

짧은 실행 프로그램에 폴링이 잘못되었습니다. – osgx

관련 문제