가장 간단한 경우로 "Hello, world"를 인쇄한 다음 종료하는 실행 파일이 있습니다. 실행 중 최대 메모리 사용량을 어떻게 알 수 있나요? 이 프로세스의 메모리 사용량 그래프를 얻을 수도 있나요?
답변1
"/usr/bin/time"을 사용할 수 있습니다. 다음 예에서는 Perl을 사용하여 메모리 블록을 소비합니다. 이는 프로세스가 무엇을 소비하는지 확인할 수 있는 좋은 수준의 세부 정보를 제공합니다. 무슨 일이 일어나고 있는지 모니터링하려면 pid에 "pmap"을 사용하는 아래 예를 참조하세요. pmap 출력의 대부분은 생략되지만 마지막 줄에는 메모리 사용량 요약이 표시됩니다.
$ /usr/bin/time --verbose perl -e 'my $a = "a" x 919200000;'
Command being timed: "perl -e my $a = "a" x 919200000;"
User time (seconds): 0.19
System time (seconds): 0.38
Percent of CPU this job got: 99%*emphasized text*
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.57
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1798908
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 449020
Voluntary context switches: 1
Involuntary context switches: 2
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
지도:
$ pmap -x $( pgrep firefox )
Address Kbytes RSS Dirty Mode Mapping
...
00007fffa75fc000 8 8 0 r-x-- [ anon ]
00007fffa75fe000 8 0 0 r---- [ anon ]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 1865700 548748 422532
마지막 행만 수집하려면 마지막 행에 tail -1을 사용하면 됩니다. 총 메모리만 필요한 경우 awk가 더 적합할 수 있습니다. 필요에 따라 제거하세요.
$ pmap -x $( pgrep firefox ) | awk '{ if( $_ ~ /^total/ ) { printf( "%d %d %d\n", $3, $4, $5 ); } }'
1976996 595644 478532