我的计算机(运行 Ubuntu Server 16.04)当前使用了 15.4 GB RAM 中的 13.4 GB(根据 htop),但我很难理解是什么在使用这些内存。
free -m
报告:
total used free shared buff/cache available
Mem: 15733 13781 1083 22 868 1592
Swap: 71524 430 71094
top
显示内存使用率最高的进程占用了 6.8% 的内存,第二大的进程占用了 0.4% 的内存。
如果我使用ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
,它会显示(相同)占用内存最多的进程占用了 1104 MB 的 RAM,与相比,这听起来是正确的top
。
如果我将 ps 报告的每个进程的所有值加起来:
ps aux | awk '{sum=sum+$6}; END {print sum/1024 " MB"}'
报告显示总共使用了 1.8 GB 的 RAM。
因此,ps
我认为我使用了 1.8 GB 的 RAM,但free
两者htop
都认为我使用了超过 13 GB 的 RAM。输出available
中的列free
太小,无法解释这种差异。
我错过了什么?
编辑 2017-01-20 13:27 Z
/usr/bin/free -h
报告:
total used free shared buff/cache available Mem: 15G 13G 417M 22M 1.1G 1.2G Swap: 69G 432M 69G
板顶输出:
$ sudo slabtop -s c -o | head -n 20
Active / Total Objects (% used) : 16552394 / 17903627 (92.5%)
Active / Total Slabs (% used) : 841391 / 841391 (100.0%)
Active / Total Caches (% used) : 109 / 155 (70.3%)
Active / Total Size (% used) : 9510904.12K / 9753117.86K (97.5%)
Minimum / Average / Maximum Object : 0.01K / 0.54K / 18.56K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
1764956 1764890 0% 1.08K 120388 29 3852416K zio_cache
126780 126308 0% 16.00K 68205 2 2182560K zio_buf_16384
1797996 1797996 100% 0.85K 100920 18 1614720K dnode_t
1952240 1833842 0% 0.50K 122015 16 976120K kmalloc-512
62255 61308 0% 8.00K 20096 4 643072K kmalloc-8192
1999648 1968319 0% 0.28K 71416 28 571328K dmu_buf_impl_t
1764892 1764892 100% 0.26K 56932 31 455456K sa_cache
2028978 1981994 0% 0.19K 96618 21 386472K dentry
23113 23021 0% 12.00K 11557 2 369824K zio_buf_12288
694975 647514 0% 0.31K 27799 25 222392K bio-1
1660096 1592262 0% 0.12K 51878 32 207512K kmalloc-128
131376 91798 0% 1.00K 8211 16 131376K ecryptfs_inode_cache
90888 89352 0% 1.05K 3035 30 97120K ext4_inode_cache
$ sudo slabtop -s c -o | tail -n +8 | awk '{sum=sum+$7}; END {print sum/1024 " MB"}'` reports:
11484.9 MB
$ sudo slabtop -s c -o | tail -n +8 | grep zio | awk '{sum=sum+$7}; END {print sum/1024 " MB"}'
6222.28 MB
所以从我所知来看,它似乎与 ZFS 有关 - ZFS 占用了超过 6 GB 的 RAM,并且在 slabtop 输出中非 zio 内容使用了大约 5 GB 的 RAM。
答案1
在我的例子中,一些内存是为 hugepage 保留的。考虑到 hugepages 保留的内存,它加起来了。
controller-0:/home/wrsroot# grep -i huge /proc/meminfo
HugePages_Total: 1000
HugePages_Free: 488
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
答案2
我的声誉不足以发表评论,因此将其作为答案发布。
我遇到过类似的问题,根本原因是处理器电压过低。我的 PC 是联想 T440P 笔记本电脑,搭载 Intel(R) Core(TM) i7-4810MQ CPU,运行 Debian 11。我只使用 ext4 和 gocryptfs 文件系统。
smem -tw
占有率较高kernel dynamic memory
。