【发布时间】:2021-10-23 05:30:35
【问题描述】:
我知道当 OOM Killer 被触发时,内核会向内核日志发送详细的系统内存状态。有没有办法在系统正常运行时查询这些信息?
我知道基本信息可以在 /proc/meminfo 找到,但我找不到的详细信息是 OOM Killer 输出中的以下几行(来自我的系统的示例):
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) = 15888k
B
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*512k
B 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
此信息表明系统为将来的内存请求准备了多少可用 RAM。我正在尝试最大程度地减少系统延迟,并且我想收集和记录有关我通常在每个存储桶中拥有多少可用空间的信息,以便我可以更好地了解激活 OOM Killer 时的异常情况,因为系统经常出现高延迟在此之前。
上面三行中的信息是否可以在不触发 OOM Killer 的情况下使用 vanilla Linux 内核访问? (显然,NUMA 系统可能有更多的 RAM 节点,所以以上几行是最少的信息。)
【问题讨论】:
标签: linux linux-kernel system ram