Linux에서 메모리 사용량 불일치 확인

Linux에서 메모리 사용량 불일치 확인

저는 시스템에 64MB RAM이 있는 임베디드 Linux 시스템(kernel-5.10-24)을 개발 중입니다.

이제 내 시스템의 메모리 사용량을 확인하고 있는데불일치자료.

먼저 커널 코드와 데이터의 메모리 사용량,

Memory: 53424K/65536K available (7878K kernel code, 690K rwdata, 1744K rodata, 364K init, 337K bss, 12112K reserved, 0K cma-reserved)

시스템의 사용 가능한 메모리 크기는 입니다 53424KB.

출력은 free -k다음과 같습니다.

/ # free -k
              total        used        free      shared  buff/cache   available
Mem:          53788       39148       13704           0         936       12960
Swap:             0           0           0

출력은 cat /proc/meminfo다음과 같습니다.

/ # cat /proc/meminfo
MemTotal:          53788 kB
MemFree:           13692 kB
MemAvailable:      12948 kB
Buffers:               0 kB
Cached:              900 kB
SwapCached:            0 kB
Active:              832 kB
Inactive:            240 kB
Active(anon):          4 kB
Inactive(anon):      172 kB
Active(file):        828 kB
Inactive(file):       68 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:           192 kB
Mapped:              848 kB
Shmem:                 0 kB
KReclaimable:        372 kB
Slab:               6320 kB
SReclaimable:        372 kB
SUnreclaim:         5948 kB
KernelStack:         360 kB
PageTables:           40 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       26892 kB
Committed_AS:        532 kB
VmallocTotal:    1048372 kB
VmallocUsed:        2240 kB
VmallocChunk:          0 kB
Percpu:              200 kB

커널 메모리 사용량은 "Buffers+Slab+KernelStack+PageTables"= 의 합계입니다 7620K.

실행 시 $(ps -o pid,comm,rss,vsz | awk '{print $3}' | grep -v RSS)각 프로세스의 RSS 합계는 대략 입니다 4120K.

따라서 시스템이 시작된 후 커널 공간과 사용자 공간의 메모리 사용량의 합은 입니다 7620 + 4120 = 11740K.

그러나 free -k디스플레이 used메모리는 대략 39148K., 이는 큰 불일치입니다.

그렇게 큰 불일치가 발생하는 이유와 Linux에서 커널 및 사용자 공간 메모리 사용량을 정확하게 계산하는 방법은 무엇입니까?

관련 정보