proc 文件系統(tǒng)提供了一種簡單的方法來監(jiān)視系統(tǒng)中所有活動的 slab 緩存。這個文件稱為 /proc/slabinfo,它除了提供一些可以從用戶空間訪問的可調(diào)整參數(shù)之外,還提供了有關(guān)所有 slab 緩存的詳細(xì)信息。當(dāng)前版本的 slabinfo 提供了一個標(biāo)題,這樣輸出結(jié)果就更具可讀性。對于系統(tǒng)中的每個 slab 緩存來說,這個文件提供了對象數(shù)量、活動對象數(shù)量以及對象大小的信息(除了每個 slab 的對象和頁面之外)。另外還提供了一組可調(diào)整的參數(shù)和 slab 數(shù)據(jù)。
要調(diào)優(yōu)特定的 slab 緩存,可以簡單地向 /proc/slabinfo 文件中以字符串的形式回轉(zhuǎn) slab 緩存名稱和 3 個可調(diào)整的參數(shù)。下面的例子展示了如何增加 limit 和 batchcount 的值,而保留 shared factor 不變(格式為 “cache name limit batchcount shared factor”):
# echo "my_cache 128 64 8" > /proc/slabinfo |
limit 字段表示每個 CPU 可以緩存的對象的最大數(shù)量。 batchcount 字段是當(dāng)緩存為空時轉(zhuǎn)換到每個 CPU 緩存中全局緩存對象的最大數(shù)量。 shared 參數(shù)說明了對稱多處理器(Symmetric MultiProcessing,SMP)系統(tǒng)的共享行為。
注意您必須具有超級用戶的特權(quán)才能在 proc 文件系統(tǒng)中為 slab 緩存調(diào)優(yōu)參數(shù)。
SLOB 分配器
對于小型的嵌入式系統(tǒng)來說,存在一個 slab 模擬層,名為 SLOB.這個 slab 的替代品在小型嵌入式 Linux 系統(tǒng)中具有優(yōu)勢,但是即使它保存了 512KB 內(nèi)存,依然存在碎片和難于擴(kuò)展的問題。在禁用 CONFIG_SLAB 時,內(nèi)核會回到這個 SLOB 分配器中。更多信息請參看 參考資料 一節(jié)。
結(jié)束語
slab 緩存分配器的源代碼實(shí)際上是 Linux 內(nèi)核中可讀性較好的一部分。除了函數(shù)調(diào)用的間接性之外,源代碼也非常直觀,總的來說,具有很好的注釋。