/proc/meminfo에서 사용 가능한 총 물리적 메모리가 합산되지 않습니다.

/proc/meminfo에서 사용 가능한 총 물리적 메모리가 합산되지 않습니다.

/proc/meminfoLinux 시스템에서 사용 가능한 실제 메모리를 설명하려고 합니다 (아래 출력 제공). 현재 사용 가능한 메모리, 사용자 공간의 물리적 사용량, 커널 데이터 구조(vmalloc 편집, 대용량 페이지 등 포함)를 고려하면 여전히 5GB가 부족합니다. 이것은 현재 meminfo가 나에게 제공하는 것입니다:

# cat /proc/meminfo
MemTotal: 362816744 kB
MemFree: 2230348 kB
Buffers: 433636 kB
Cached: 814628 kB
SwapCached: 20688 kB
Active: 723172 kB
Inactive: 539364 kB
Active(anon): 369736 kB
Inactive(anon): 14936 kB
Active(file): 353436 kB
Inactive(file): 524428 kB
Unevictable: 2080 kB
Noswap 292435456 kB
Mlocked: 2080 kB
SwapTotal: 4190964 kB
SwapFree: 4072560 kB
Dirty: 640 kB
Writeback: 0 kB
AnonPages: 292440380 kB
Mapped: 144904 kB
Shmem: 129772 kB
Slab: 568552 kB
SReclaimable: 483816 kB
SUnreclaim: 84736 kB
KernelStack: 13776 kB
PageTables: 785532 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 156197224 kB
Committed_AS: 402420112 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 17872740 kB
VmallocChunk: 34142133244 kB
HardwareCorrupted: 0 kB
HugePages_Total: 28713
HugePages_Free: 14352
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 6144 kB
DirectMap2M: 2017280 kB
DirectMap1G: 367001600 kB

현재 메모리 상태를 해석하는 방법: MemFree + 버퍼 + 캐시 + SwapCached + AnonPages + 매핑 + Slab + KernelStack + PageTables + vmalloced 메모리 + 대용량 페이지

VmallocUsed는 물리적 메모리 외에 ioremap을 사용하여 다시 매핑되는 외부 물리적 장치의 메모리 사용량도 발생시키므로 실제 물리적 메모리 구성 요소를 가져오기 위해 다음을 수행했습니다.

echo "( $(cat /proc/vmallocinfo | grep vmalloc | awk '{print $2}' | paste -s -d "+") )/ 1024" | bc

(제안대로여기).

따라서 vmalloc 물리적 메모리 소비량은 826376KB입니다.

대형 페이지 = 28713 * 2048KB = 58804224KB

이 모든 것을 통해 나는 약 5G의 미확인 메모리를 얻었습니다(MemTotal과 비교).

여기서 격차를 설명할 수 있는 고려하지 않은 사항이 있으면 알려주시기 바랍니다.

관련 정보