You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不触发OOM Killer即可查询Linux内核内存池的状态

问题解答

原版Linux原生支持无需触发OOM Killer即可获取该内存统计数据,该数据是内核伙伴系统的各阶空闲页统计,可以通过/proc/buddyinfo接口直接读取。

具体使用方式如下:

  • 直接读取/proc/buddyinfo文件即可得到和OOM Killer日志输出完全一致的内存区域空闲页分阶统计:
cat /proc/buddyinfo

输出格式和你贴出的OOM日志内容完全一致:

Node 0 DMA: 0*4kB 0*8kB 1*16kB (U) 0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) = 15888kB
Node 0 DMA32: 14121*4kB (UME) 18163*8kB (UME) 12588*16kB (UME) 5074*32kB (UME) 1404*64kB (UME) 484*128kB (UME) 19*256kB (UME) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 722236kB
Node 0 Normal: 399161*4kB (UME) 126769*8kB (UME) 74232*16kB (UME) 26738*32kB (UME) 5767*64kB (UME) 1079*128kB (UME) 50*256kB (UE) 2*512kB (U) 0*1024kB 0*2048kB 0*4096kB = 5175148kB
  • 如果需要更细粒度的按页迁移类型拆分的统计,可以读取/proc/pagetypeinfo文件,该文件需要root权限访问,可以用来分析内存碎片化程度,更适配延迟优化的场景。
  • 两个接口都是Linux主线内核默认支持的功能,无需安装额外工具、无需修改内核配置,读取操作不会对系统运行产生任何负面影响,适合定期采集作为内存状态的基准数据,可直接和OOM触发时的日志数据做对比分析。

内容的提问来源于stack exchange,提问作者Mikko Rantalainen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:54:05