Linux

什麼是 shrink_slab,為什麼它會出現在 /var/log/messages 中?

  • April 17, 2021

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

這是什麼?Google搜尋沒有幫助,我知道它與 VM 有關,但為什麼它突然出現在 /var/log/messages 中?

編輯:我認為它顯示了這一點,因為它可以釋放的頁數(“nr”)是負數。這大概是一件壞事。我找到了更新核心的更新檔,這些更新檔顯示了更有用的資訊。仍然不確定這意味著什麼,或者我需要做些什麼。

您的消息是由slab 分配器生成的,Linux 核心使用該機制來管理它自己(而不是使用者空間程序)所需的記憶體部分。它最初是由 Jeff Bonwick 為 Solaris 編寫的,通過閱讀Bonwick(94) ( PDF ) 可能最容易理解。

如果您想知道這個名字,Bonwick 在他的部落格中最終揭示了它背後的故事

當您查看 Linux 細節時,文章Anatomy of the Linux slab allocator(連結目前已失效,請參閱archive.org 以獲取副本)應該涵蓋這一點。如果您還想了解使用者空間記憶體的管理,Mel Gorman,了解 Linux 虛擬記憶體管理器提供了更多詳細資訊。

對於講德語的讀者,德語 Wikipedia 文章中對板分配器有很好的介紹。

(連結最後檢查 2021-04-19)

引用自:https://serverfault.com/questions/397007