내 서버는 커널 4.18을 실행 중이고 일부 메모리가 즉시 누락된 것 같습니다. 일반적인 원인(커널 슬래브 메모리, 페이지 캐시)은 제외되었습니다.
대략 6GB 정도가 사용되는데(MemTotal - MemAvailable) 프로세스와 커널보드, shmem에서 사용하는 공간을 모두 합하면 겨우 1GB에 불과합니다. 콜드 스타트 이후입니다. 나머지 5명은 어디로 갔을까요?
가장 이상한 점은 동일한 애플리케이션을 실행하는 동일한 서버가 있고 MemAvailable이 실제로 거기보다 5GB 더 높다는 것입니다.
# ps fauxw | sed 1d | awk '{ x += $6 } END { print x }'
757368
# cat /proc/meminfo
MemTotal: 32826040 kB
MemFree: 26493788 kB
MemAvailable: 26322932 kB
Buffers: 11948 kB
Cached: 72584 kB
SwapCached: 0 kB
Active: 247756 kB
Inactive: 41348 kB
Active(anon): 204952 kB
Inactive(anon): 1012 kB
Active(file): 42804 kB
Inactive(file): 40336 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 204632 kB
Mapped: 33052 kB
Shmem: 1396 kB
Slab: 219376 kB
SReclaimable: 30744 kB
SUnreclaim: 188632 kB
KernelStack: 18960 kB
PageTables: 12548 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 16413020 kB
Committed_AS: 4565744 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 186396 kB
DirectMap2M: 9152512 kB
DirectMap1G: 26214400 kB
답변1
내 질문에 대답하려면 다음을 수행하십시오.
결국 메모리 사용량이 네트워크 인터페이스 링 크기(ethtool -G)의 다양한 설정과 관련이 있다는 사실을 발견했습니다. 이 호스트의 RX 및 TX 수는 4096개로 늘어났으며 각각 6개의 10G NIC와 많은 대기열(56 vcore)을 포함하여 GB 메모리를 사용하게 되었습니다.
하지만 여전히 이상한 점은 메모리 사용량이 /proc/ 정보 어디에도 표시되지 않는 것 같습니다.