linux – 什么是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”)是负数.这可能是一件坏事.我找到了更新内核的补丁,它们显示了更有用的消息.仍然不确定这意味着什么,或者我需要做些什么.

最佳答案
您的消息由slab allocator生成,Linux内核使用该机制来管理自身所需的内存部分(不适用于用户空间进程).最初它是由Jeff Bonwick为Solaris编写的,阅读Bonwick(94)(PDF)可能最容易理解.

如果你想知道这个名字,可以在他的博客Bonwick最终revealed the story behind it.

当您查看Linux细节时,文章Anatomy of the Linux slab allocator(链接目前已经死亡,见archive.org for a copy)应该涵盖这一点.如果您想了解用户空间内存的管理,Mel Gorman, Understanding the Linux Virtual Memory Manager还提供了更多细节.

对于讲德语的读者来说,German Wikipedia Article on the slab allocator有一个很好的介绍.

转载注明原文:linux – 什么是shrink_slab,为什么它出现在/ var/log/messages中? - 代码日志