什么是 shrink_slab,为什么它会出现在 /var/log/messages 中?

什么是 shrink_slab,为什么它会出现在 /var/log/messages 中?

我正在调查 Linux 系统上的一些应用程序问题,并在最近出现问题时注意到了这一点,但距离还不够近,无法明确确定其相关性:

Jun  7 17:51:49 localhost kernel: shrink_slab: nr=-155456000
Jun  7 17:51:49 localhost kernel: shrink_slab: nr=-157859400
Jun  7 17:51:49 localhost kernel: shrink_slab: nr=-157833400
Jun  8 06:20:23 localhost kernel: shrink_slab: nr=-284172800

这是什么?谷歌搜索没有帮助,我知道这是 VM 的问题,但为什么它突然出现在 /var/log/messages 中?

编辑:我认为它之所以显示这个是因为它可以释放的页面数量(“nr”)为负数。这可能是一件坏事。我发现了针对较新内核的补丁,可以显示更有用的消息。但仍然不确定这是什么意思,或者我需要做什么。

答案1

您的消息由slab 分配器,Linux 内核用来管理其自身(而非用户空间进程)所需内存部分的机制。它最初是由 Jeff Bonwick 为 Solaris 编写的,阅读它或许是最容易理解的邦威克(106)PDF)。

如果你对这个名字感到好奇,可以看看他的博客 Bonwick 最终揭示背后的故事

当你查看 Linux 的具体细节时,文章Linux slab 分配器剖析(链接目前已失效,请参阅请访问 archive.org 获取副本)应该涵盖了这一点。如果你还想了解用户空间内存的管理,Mel Gorman,了解 Linux 虚拟内存管理器提供更多细节。

对于德语读者来说,德语维基百科关于 slab 分配器的文章

(链接最后检查时间为 2021-04-19)

相关内容