2013-03-18 50 views
31

是什麼,這有助於決定在Linux內核的內存分配的選擇的因素是什麼?Linux內核中的Slab和Slub Allocator之間有什麼選擇?

在本Linux內核,我們有選擇SLAB,竹節或SLOB的選項。我已經讀過SLOB被用於較小腳印的內核。但我想知道哪些因素有助於在Slab Allocator和竹節分配器之間做出決定。

+3

http://lwn.net/Articles/229984/如果你還沒有看到, – 2013-03-18 16:29:00

+0

謝謝:)但我已閱讀該文章。它提供了有關竹節的見解,但我的問題並沒有完全回答。我在Quora得到了答案。我已經發布了鏈接。 – Siddharth

回答

46

在搜索答案的,我貼在Quora的同樣的問題,羅伯特·愛的答案是:

我假設你是從點的觀點 一個用戶的苦惱系統,或者可能是構建特定產品的內核的人員。作爲內核開發人員,您並不關心「slab」分配器 正在使用中;該API是相同的。

首先,「板塊」已成爲一個通用名稱,指的是採用對象緩存的分配策略,能夠高效地分配和釋放內核對象。這是第一次由Sun的工程師Jeff Bonwick在1記錄 和Solaris 2.4 內核中實現。

的Linux目前提供三種選擇它的「板」分配:

板是原來的基礎上,因爲Linux內核版本2.2的bonwick的開創性論文和可用 。這是一個忠實執行 的bonwick的建議,在Bonwick在後續論文[2]中描述 的多變化增強。

竹節紗是下一代更換內存分配器,這是自2.6.23已經 已經在Linux內核中的默認值。它繼續到 採用基本的「板坯」模型,但修復了板坯設計中的幾個缺陷,特別是在處理器數量較多的系統周圍。竹節比板坯簡單。

SLOB(簡單列表塊)是一種內存分配器,針對 嵌入式系統進行了優化,存儲量非常少(數量級爲兆字節)。它 在塊列表上應用了一個非常簡單的第一個擬合算法,而不是與舊的K & R樣式堆分配器不同。在消除存儲器分配器的幾乎所有 大修,SLOB非常適合在極端內存限制下的系統 ,但它不提供在1中描述的 的益處,並且可能遭受病理碎片。

你應該怎麼使用?竹節,除非你正在構建內存有限的嵌入式設備的內核。在那種情況下,我想 基準Slub與SLOB,並看看什麼最適合您的工作量。 沒有理由使用Slab;它可能會從未來被刪除 Linux內核版本。

請參閱此link作爲原始答覆。

+1

請注意,Debian和其他發行版已回到SLAB,因爲它在多處理器系統上更快。請參閱:https://lists.debian.org/debian-kernel/2012/03/msg00944.html – Ariel

+1

@Ariel這很有趣,有沒有任何基準或描述背後原因的東西? – dashesy

相關問題