저는 시스템에 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에서 커널 및 사용자 공간 메모리 사용량을 정확하게 계산하는 방법은 무엇입니까?