小编Mik*_*nen的帖子

Linux oom情况(32位内核)

我有持续的 oom&panic 情况未解决。我不确定系统是否填满了所有内存(36GB)。为什么这个系统会触发这种oom情况?我怀疑它与 32 位 linux 系统中的 lowmem 区域有关。如何分析内核恐慌和 oom-killer 的日志?

此致,

内核 3.10.24

Dec 27 09:19:05 2013 kernel: : [277622.359064] squid invoked oom-killer: gfp_mask=0x42d0, order=3, oom_score_adj=0
Dec 27 09:19:05 2013 kernel: : [277622.359069] squid cpuset=/ mems_allowed=0
Dec 27 09:19:05 2013 kernel: : [277622.359074] CPU: 9 PID: 15533 Comm: squid Not tainted 3.10.24-1.lsg #1
Dec 27 09:19:05 2013 kernel: : [277622.359076] Hardware name: Intel Thurley/Greencity, BIOS 080016  10/05/2011
Dec 27 09:19:05 2013 kernel: : [277622.359078]  00000003 e377b280 e03c3c38 c06472d6 e03c3c98 …
Run Code Online (Sandbox Code Playgroud)

linux kernel-panic oom oom-killer

17
推荐指数
3
解决办法
1万
查看次数

为什么MemAvailable比MemFree+Buffers+Cached少很多?

我正在运行一个没有交换的 Linux 工作站,并且我已经安装了earlyoom守护进程,以便在 RAM 不足时自动终止一些进程。它earlyoom通过监视内核MemAvailable值来工作,如果可用内存变得足够低,它会杀死不太重要的进程。

这已经工作了很长一段时间,但突然间我遇到了MemAvailable与系统其他部分相比突然非常低的情况。例如:

$ grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached):' /proc/meminfo 
MemTotal:       32362500 kB
MemFree:         5983300 kB
MemAvailable:    2141000 kB
Buffers:          665208 kB
Cached:          4228632 kB
Run Code Online (Sandbox Code Playgroud)

请注意 MemAvailable 远低于MemFree+ Buffers+ Cached

我可以运行任何工具来进一步调查为什么会发生这种情况吗?我觉得系统性能比正常情况要差一些,我不得不停止该服务,因为除非稳定(即它正确地描述了用户模式进程的可用内存),earlyoom否则它的逻辑将无法工作。MemAvailable

根据https://superuser.com/a/980821/100154 MemAvailable 是对可用于启动新应用程序(无需交换)的内存量的估计。由于我没有交换,这是什么意思?这是否意味着在触发 OOM Killer 之前新进程可以获取的内存量(因为这在逻辑上会遇到“交换已满”的情况)?

我曾假设MemAvailable>=MemFree总是正确的。不在这里。

附加信息:

在互联网上搜索表明,原因可能是打开的文件不受文件系统支持,因此无法从内存中释放。该命令sudo lsof | wc -l输出653100所以我绝对无法手动浏览该列表。

顶部sudo slabtop

 Active / Total Objects (% used) …
Run Code Online (Sandbox Code Playgroud)

linux debugging kernel memory-usage

7
推荐指数
1
解决办法
9607
查看次数

标签 统计

linux ×2

debugging ×1

kernel ×1

kernel-panic ×1

memory-usage ×1

oom ×1

oom-killer ×1