pmap으로 계산된 개인 메모리, 가상 메모리 크기 및 상주 메모리 크기의 조합?

pmap으로 계산된 개인 메모리, 가상 메모리 크기 및 상주 메모리 크기의 조합?

ps 명령을 사용하여 프로세스의 가상 메모리 크기와 상주 메모리 크기를 얻을 수 있습니다.

$ ps aux | grep apache2
USER       PID  %CPU %MEM  VSZ  RSS     TTY   STAT START    TIME    COMMAND
www-data 31141  0.0  0.3 163864 24008 ?        S    16:15   0:01 /usr/sbin/apache2 -k start

이제 가상 메모리와 상주 메모리는 공유 라이브러리도 고려하기 때문에 프로세스의 실제 메모리 공간에 대한 정확한 정확성을 제공하지 않습니다.

따라서 더 나은 해결책은 pmap을 사용하여 프로세스의 실제 메모리 사용량을 얻는 것입니다. 따라서 위와 동일한 프로세스를 사용한 pmap의 출력은 다음과 같습니다.

$ sudo pmap -d 31141
31141:   /usr/sbin/apache2 -k start
Address           Kbytes Mode  Offset           Device    Mapping
00007f85bbb82000      28 r-x-- 0000000000000000 0fc:00000 libnss_dns-2.15.so
...
...
mapped: 163864K    writeable/private: 28420K    shared: 592K

따라서 "쓰기 가능/개인" 값은 약 28MB인 프로세스의 개인 메모리입니다. 내 질문: 이 개인 메모리는 단지 주 메모리(RAM)인가요? 아니면 이 숫자에 스왑 공간도 포함될 수 있나요?

답변1

다음과 같은 제목의 기사를 찾았습니다.Linux의 메모리 사용량 이해내 생각에는 이전에 linuxquestions.org 웹사이트에서 찾은 다음 제목의 것보다 더 낫다고 생각합니다.어떻게정밀한메모리 사용량을 측정하시겠습니까?.

에서 발췌 기억의 이해…게시물

피코초 출력
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dbunker   3468  0.0  2.7  25400 14452 ?        S    20:19   0:00 kdeinit: kedit
매핑 출력
Address   Kbytes Mode  Offset           Device    Mapping
08048000      40 r-x-- 0000000000000000 0fe:00000 kdeinit
08052000       4 rw--- 0000000000009000 0fe:00000 kdeinit
08053000    1164 rw--- 0000000008053000 000:00000   [ anon ]
40000000      84 r-x-- 0000000000000000 0fe:00000 ld-2.3.5.so
40015000       8 rw--- 0000000000014000 0fe:00000 ld-2.3.5.so
40017000       4 rw--- 0000000040017000 000:00000   [ anon ]
... (trimmed) ...
mapped: 25404K    writeable/private: 2432K    shared: 0K
무슨 일이 일어나고 있는지 설명

출력을 보면 Kbytes가 가장 큰 줄이 일반적으로 공유 라이브러리를 포함하는 코드 조각이라는 것을 알 수 있습니다("lib"로 시작하는 줄은 공유 라이브러리입니다). 이것의 장점은 프로세스 간에 공유할 수 있다는 것입니다. 프로세스 간에 공유되는 모든 부분을 분리하면 출력 하단에 표시되는 "쓰기 가능/개인" 합계가 생성됩니다. 이는 공유 라이브러리를 제외한 프로세스의 증분 비용으로 간주될 수 있습니다. 따라서 이 KEdit 인스턴스를 실행하는 데 드는 비용(모든 공유 라이브러리가 로드되었다고 가정)은 약 2MB입니다. 이는 ps에서 보고한 14MB 또는 25MB와는 완전히 다릅니다.

프로세스 X가 얼마나 많은 스왑 공간을 사용합니까?

다음 명령을 사용하면 프로세스가 사용 중인 스왑 공간을 확인할 수 있습니다.

$ grep VmSwap /proc/$(pidof chrome | awk '{print $1}')/status
VmSwap:     1324 kB

chrome위의 내용은 첫 번째 반환 값 의 PID를 가져오는 것입니다 VmSwap.

기억 통계학자

정확한 메모리 측정을 찾고 있다면 이 도구를 확인해 보세요 memstat. 이름은 다음과 같습니다.

Cyberciti.biz에는 다음과 같은 제목의 튜토리얼이 있습니다.Linux: 가상 메모리를 모두 차지하는 것이 무엇인지 알아보세요.이것이 memstat실제로 보여집니다.

인용하다

관련 정보