사용자 공간, 캐시, 슬랩 외에 Linux는 어디에서 메모리를 사용합니까?

사용자 공간, 캐시, 슬랩 외에 Linux는 어디에서 메모리를 사용합니까?

내 시스템에는 1GB의 물리적 RAM이 있습니다. 이제 free다음과 같은 메모리 사용량이 표시됩니다.

             total       used       free     shared    buffers     cached
Mem:       1026360     863660     162700          0          0      50216
-/+ buffers/cache:     813444     212916
Swap:      5242876     500648    4742228

따라서 블록 캐시 외에 813MB가 사용됩니다. /proc/meminfo(길이가 긴 이유로 하단에 게시하겠습니다) 283MB는 사용자 영역 프로세스( AnonPages+ )에 매핑되고 127MB 는 Mapped커널( Slab++ )에서 사용된다고 알려줍니다.KernelStackPageTables

그러나 아직 설명되지 않은 공간이 약 400MB 정도 있습니다. 시스템이 메모리를 사용하는 방식에 대한 내 개념이 정확합니까? 내 메모리의 절반이 어디에 사용되는지 알 수 있는 방법이 있나요?

MemTotal:        1026360 kB
MemFree:          193768 kB
Buffers:               0 kB
Cached:            28932 kB
SwapCached:       101208 kB
Active:           178816 kB
Inactive:         182476 kB
Active(anon):     167196 kB
Inactive(anon):   168184 kB
Active(file):      11620 kB
Inactive(file):    14292 kB
Unevictable:        9848 kB
Mlocked:            9848 kB
SwapTotal:       5242876 kB
SwapFree:        4739272 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:        268280 kB
Mapped:            14832 kB
Shmem:               280 kB
Slab:             111828 kB
SReclaimable:      27432 kB
SUnreclaim:        84396 kB
KernelStack:        2280 kB
PageTables:        13200 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5756056 kB
Committed_AS:    1506036 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      145004 kB
VmallocChunk:   34359581976 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       79808 kB
DirectMap2M:      968704 kB

답변1

나는 약간의 awk를 사용하여 상주 세트 크기(RSS)를 기반으로 상위 10명의 메모리 사용자를 얻었습니다. RSS는 서버 RAM의 프로세스가 실제로 사용하는 메모리 양입니다(스왑 페이지 없음).

awk '{ printf "%8d %8d %8d pid:%-5d comm:%-10s state:%c\n",$14,$15,$24,$1,$2,$3; }' /proc/[1-9]*/stat |sort -rn -k3 |sed 10q

그렇지 않은 경우 sed 10q전체 프로세스 목록이 내림차순으로 표시됩니다.

RSS는 출력의 세 번째 열입니다. 에 따라 커널의 필드 번호 지정을 수정해야 할 수도 있습니다 man 5 proc.

관련 정보