我有一台 Fedora 30[5.6.13-100.fc30.x86_64]
机器,板载 32GB RAM。启动后立即free -h
显示htop
使用了 21-22GB:
[ andriim@dev-r-vrt-007 ~/work ] $ free -h
total used free shared buff/cache available
Mem: 31Gi 22Gi 6.1Gi 2.0Mi 3.2Gi 8.8Gi
Swap: 2.0Gi 344Mi 1.6Gi
同时,我发现所有进程htop
加起来使用的内存都远没有那么多。如果我按常驻内存使用情况排序,前 10 个进程加起来使用的内存大约为 300MB。
我尝试查找所有进程实际使用的 RAM 总和,但结果也远远达不到 21GB:
[ root@dev-r-vrt-007 /tmp ] # ps aux | awk '{sum=sum+$6}; END {print sum/1024 " MB"}'
437.898 MB
然后我想,也许问题与内核 SLAB 缓存有关。然而,情况似乎也不是这样的:
[ root@dev-r-vrt-007 ~ ] # slabtop -s c -o | head -n 12
Active / Total Objects (% used) : 3742847 / 3777379 (99.1%)
Active / Total Slabs (% used) : 75950 / 75950 (100.0%)
Active / Total Caches (% used) : 105 / 150 (70.0%)
Active / Total Size (% used) : 625537.34K / 637690.48K (98.1%)
Minimum / Average / Maximum Object : 0.01K / 0.17K / 17.31K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
47552 47531 99% 2.00K 2972 16 95104K kmalloc-2k
1267328 1267252 99% 0.06K 19802 64 79208K vmap_area
593544 593484 99% 0.09K 14132 42 56528K kmalloc-96
90376 87689 97% 0.59K 3476 26 55616K inode_cache
95168 94892 99% 0.50K 2974 32 47584K kmalloc-512
那么,也许 HugePages 正在保留丢失的 RAM?但似乎没有:
[ root@dev-r-vrt-007 ~ ] # cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 16
HugePages_Free: 16
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
Hugetlb: 16777216 kB
我没有主意了。还有什么建议可以去哪里查找丢失的 RAM 吗?