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
对我来说看起来不错,周围有很多容易回收的内存。到底是什么不起作用(不仅仅是“哦,恐怖,看看<随机程序>给出的数字!”)?程序崩溃(OOM、内存不足、处理程序启动)?程序无法启动?感觉系统反应迟缓?不间断的磁盘活动?日志中有什么线索吗?
Linux会填满所有可用内存,仅仅保留东西比主动擦除它更便宜,而且以后可能会再次使用。一台静止的机器(或刚启动后)将给出与活跃使用的机器截然不同的数字。