smem 报告的“内核动态内存”是什么?

Hub*_*rio 9 linux memory-leaks memory

在诊断台式机内存不足的问题时(详情见U&L),我注意到我的非缓存“内核动态内存”很大

# smem -twk
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory          1.1G     369.3M     801.7M 
userspace memory               2.0G     133.3M       1.9G 
free memory                  734.1M     734.1M          0 
----------------------------------------------------------
                               3.9G       1.2G       2.7G
Run Code Online (Sandbox Code Playgroud)

在另外两个系统上,我检查了它是 150MiB(也是台式机,但有 8GiB 或 RAM)和 29MiB。远不及我台式机的 20%。

我怎样才能找出是什么让它这么大?

顺便说一句:我已经检查了smem源代码,它基本上是这样的(内存总量 - 用户空间 - 免费 - 缓存)。

/proc/meminfo

# cat /proc/meminfo 
内存总量:4051956 kB
MemFree:508276 KB
缓冲区:35232 kB
缓存:651052 kB
交换缓存:121380 KB
活跃:1358008 kB
非活动:1351596 KB
活跃(匿名):1184616 kB
不活动(匿名):886904 kB
活动(文件):173392 kB
非活动(文件):464692 kB
不可避免:8616 kB
锁定:8616 kB
交换总计:4051952 kB
SwapFree:3815780 KB
脏:348 kB
写回:0 kB
AnonPages:1971164 kB
映射:140108 kB
shmem:44656 KB
平板:176564 KB
SReclaimable:62080 kB
太阳回收:114484 kB
内核堆栈:3352 kB
页表:43012 kB
NFS_不稳定:0 kB
弹跳:0 kB
写回时间:0 kB
提交限制:6077928 KB
Committed_AS:3681164 kB
Vmalloc 总计:34359738367 kB
Vmalloc 使用:139780 KB
VmallocChunk:34359570976 kB
硬件损坏:0 kB
AnonHugePages:448512 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
超大页面大小:2048 kB
DirectMap4k:2536128 KB
DirectMap2M:1656832 KB

von*_*and 0

对我来说看起来不错,周围有很多容易回收的内存。到底是什么不起作用(不仅仅是“哦,恐怖,看看<随机程序>给出的数字!”)?程序崩溃(OOM、内存不足、处理程序启动)?程序无法启动?感觉系统反应迟缓?不间断的磁盘活动?日志中有什么线索吗?

Linux填满所有可用内存,仅仅保留东西比主动擦除它更便宜,而且以后可能会再次使用。一台静止的机器(或刚启动后)将给出与活跃使用的机器截然不同的数字。

  • 系统变得迟缓。当我运行 KMail(Akonadi、Virtuoso)、Opera、Amarok、Ktorrent 和其他一些应用程序时,当内核占用了整整 1GiB 的空间时,我剩下的文件系统缓存不足 700MiB,这几乎不是最佳选择。这**仅**在 X 运行一周左右之后。简单的注销和登录即可使系统恢复到最佳性能(运行“完全相同”的应用程序)。日志让我发现了与 readon 驱动程序相关的错误,我目前正在测试问题是否仍然存在。 (2认同)