/proc/meminfo MemTotal =?

/proc/meminfo MemTotal =?

/proc/meminfo요약하면 요소는 무엇입니까 MemTotal?

의 예tee /tmp/proc/meminfo < /proc/meminfo

MemTotal:        1279296 kB
MemFree:          164092 kB
Buffers:           62392 kB
Cached:           378116 kB
SwapCached:            0 kB
Active:           715176 kB
Inactive:         307800 kB
Active(anon):     583268 kB
Inactive(anon):     3384 kB
Active(file):     131908 kB
Inactive(file):   304416 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:        582480 kB
Mapped:           112904 kB
Shmem:              4192 kB
Slab:              47524 kB
SReclaimable:      33588 kB
SUnreclaim:        13936 kB
KernelStack:        1568 kB
PageTables:        12092 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      639648 kB
Committed_AS:    1298132 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       24012 kB
VmallocChunk:   34359696868 kB
HardwareCorrupted:     0 kB
AnonHugePages:     77824 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        8832 kB
DirectMap2M:     1300480 kB

다음은 다양한 구성을 확인하는 데 도움이 된 스니펫입니다.

# Let's load them into CLI variables
all=$(sed 's!:[^0-9]\+!=!;s! kB!!;s![()]!_!g' /tmp/proc/meminfo) ; eval $all
# Let's make overview sorted by values (helps in tracking missing one)
echo $all | sed 's! !\n!g' | sort -n -k 2 -t '=' 
# Let's try Memtotal=MemFree+Active+Cached+Buffers ? (should be zero)
echo $[ $MemTotal - $MemFree - $Active - $Cached - $Buffers ]
# But gives -40480

내가 무엇을 놓치고 있나요? /proc/meminfo얻으려면 어떤 요소를 합산해야 합니까 MemTotal?

답변1

필요한 모든 것이 /proc/meminfo출력에 노출되어 있는지 확신할 수 없으므로 MemTotal직접 계산할 수 있습니다. ~에서Linux 커널 문서 proc.txt파일:

발췌
MemTotal: Total usable ram (i.e. physical ram minus a few reserved
          bits and the kernel binary code)

정보

dmesg출력 또는 로그 파일을 보면 /var/log/dmesg다음 정보를 찾을 수 있습니다.

$ grep -E "total|Memory:.*available" /var/log/dmesg
[    0.000000] total RAM covered: 8064M
[    0.000000] On node 0 totalpages: 2044843
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

나는 이 정보가 판단에 사용될 수 있다고 믿습니다 MemTotal. 이 블로그 게시물에서는 이에 대해 자세히 설명합니다."vmalloc 영역 중복" 이해. 또한 이 문서에서는 다음과 같은 추가 정보를 제공합니다.인메모리 프로그램 분석.

인용하다

관련 정보