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