비데몬의 최대 메모리 사용량을 어떻게 알 수 있나요?

비데몬의 최대 메모리 사용량을 어떻게 알 수 있나요?

가장 간단한 경우로 "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

관련 정보