我正在调查 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)