답변:
여기에 아주 좋은 자세한 설명이 있습니다 : https://blogs.kde.org/2005/09/15/measuring-memory-usage
그러나 본질적으로 : 응용 프로그램이 어떻게 설정되어 있는지를 깊이 파고 이해해야합니다.
예를 들어, mysql을 보면 :
PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6004 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:40.33 mysqld
16115 16085 composit 20 0 37900 27m 2908 S 0 0.2 0:00.37 mysqld
16116 16115 composit 20 0 37900 27m 2908 S 0 0.2 2:07.34 mysqld
16117 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
16118 16116 composit 20 0 37900 27m 2908 S 0 0.2 3:19.79 mysqld
16119 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.01 mysqld
16120 16116 composit 20 0 37900 27m 2908 S 0 0.2 5:31.09 mysqld
16121 16116 composit 20 0 37900 27m 2908 S 0 0.2 14:19.53 mysqld
16122 16116 composit 20 0 37900 27m 2908 S 0 0.2 36:13.67 mysqld
16123 16116 composit 20 0 37900 27m 2908 S 0 0.2 30:30.64 mysqld
16124 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.15 mysqld
16493 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
사용 된 총 메모리는 약 25MB입니다 (27MB RES를 가져 와서 공유 (SHR) 빼기)
"killall mysqld"를 실행하기 전후에 총 메모리 사용량 (free -m, + / buffers / cache)을 확인하여이를 확인했습니다. 모든 mysqld 프로세스를 종료 한 후 "free -m"에 따라 메모리 사용량이 25MB 감소했습니다.
각 프로세스에 동일한 VIRT, RES 및 SHR 열이있는 경우 동일한 프로세스의 스레드 일 수 있습니다. (오래된 Linux 라이브러리는 본질적으로 동일한 메모리를 차지하는 여러 실제 프로세스를 생성하여 스레딩을 처리했습니다)
서로 다른 경우 (RES-SHR)의 합을 수행하여 추정 할 수 있습니다. 그러나 프로세스가 실제로 동일한 프로세스의 스레드가 아닌 별도의 프로세스 인 경우에만 작동합니다. PPID (부모 프로세스 ID)를 보면 도움이됩니다. 부모가 모두 같은 부모라면 아마도 스레드 일뿐입니다 (반드시 그런 것은 아닙니다).
불행히도 리눅스에서는이 방법에 대한 쉬운 방법이 없습니다. 가장 쉬운 방법은 프로세스를 종료하기 직전에 "자유"를 확인한 후 즉시 다시 확인하는 것입니다. "-/ + buffers / cache :"줄을보고 얼마나 많은 메모리 사용량이 줄 었는지, 얼마나 많은 메모리 사용량을 사용했는지 알 수 있습니다.
도움의 비트 man ps
와 이 위대한 대답 ...
ps -up $(pidof PROCESS_NAME)
예를 들면 다음과 같습니다.
[wilf@comp ~]$ ps -up $(pidof firefox)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
wilf 1619 8.9 5.6 1464216 342396 ? Sl 17:56 1:36 /usr/lib64/firefox/firefox
[wilf@comp ~]$
다른 방법들:
cat /proc/$(pidof firefox)/status | grep VmSize
이것은없이 실행할 수 있습니다 -x
및 tail -1
:
pmap -x $(pidof firefox) | tail -1
백분율 만 표시합니다.
top -p $(pidof firefox)
또한, 사용하는 동안 top
당신이 눌러 i유휴 / 좀비 프로세스를 무시하고 쉽게 읽을 수 있도록합니다 :
pmap
는 PID가 사용하는 자원에 대한 물건의 쇼를 많이합니다. 정보는 프로세스 이름과를 사용하여 찾은 PID를 기반으로 제공 pidof
되므로 기본 프로세스는 사용자가 제공 한 이름에 관계없이 표시됩니다 (부모 프로세스를 다시 참조하는지 여부를 모릅니다)