1. 메모리 보기
# free
total used free shared buffers cached
Mem: 3079912 2870192 209720 0 260776 1637140
-/+ buffers/cache: 972276 2107636
Swap: 5237184 0 5237184
2. 유저 메모리
유저 메모리 = 디스크 캐시 ( buffers + cached ) + AnonPages
* 디스크 캐시에는 Shmem (tmpfs) 가 포함되어 있음
유저 메모리 = File-backend 메모리 ( Active(file) + Inactive(file) ) +
Anonymous 메모리 ( Active(anon) + Inactive (anon) )
* Anonymous 메모리에는 Shmem (tmpfs) 가 포함되어 있음
3. 커널 메모리
커널 메모리 = MemTotal - (MemFree + Active + Inactive + Unevictable)
커널 메모리 = Slab + VmallocUsed (ioremap 제외) + KernelStack + PageTebles
4. VmallocUsed 에서 ioremap 제외하고 계산하는 방법
# cat /proc/vmallocinfo | grep -v "ioremap" | awk '{print $2}' | paste -s -d "+" | bc
byte 로 결과 값이 출력됨
# echo "(" $(cat /proc/vmallocinfo | grep -v "ioremap" | awk '{print $2}' | paste -s -d "+") ") / 1024" | bc
KB 로 출력됨
5. pmap
# pmap -x 1154 (sshd 의 프로세스 id 가 1154 임)
출력 예)
Address Kbytes RSS Dirty Mode Mapping
00007f55459c7000 0 16 0 r-x-- libnss_files-2.15.so
00007f55459d3000 0 0 0 ----- libnss_files-2.15.so
00007f55489a7000 0 4 4 rw--- libwrap.so.0.7.6
00007f55489a8000 0 112 0 r-x-- ld-2.15.so
00007f5548bad000 0 40 40 rw--- [ anon ]
00007f5548bc8000 0 8 8 rw--- [ anon ]
00007f5548bca000 0 4 4 r---- ld-2.15.so
00007f5548bcb000 0 8 8 rw--- ld-2.15.so
00007f5548bcd000 0 232 0 r-x-- sshd
00007f5548e47000 0 12 12 r---- sshd
00007f5548e4a000 0 4 4 rw--- sshd
00007f5548e4b000 0 36 36 rw--- [ anon ]
00007f5548e5b000 0 68 68 rw--- [ anon ]
00007fff2b5e7000 0 20 20 rw--- [ stack ]
00007fff2b687000 0 4 0 r-x-- [ anon ]
ffffffffff600000 0 0 0 r-x-- [ anon ]
[anon] 으로 표시되는 것이 AnonPages 즉 유저 영역 메모리로 malloc 등으로 확보한 메모리를 말한다.
Kbytes 는 논리 어드레스 이고 RSS 는 물리 메모리 용량(KB) 이다.