2009-07-21 96 views
3

我正在修改我們的操作系統內核中的malloc()。我們目前使用dlmalloc,但我想要一個我們可以編輯的自制解決方案,而無需處理一千行文件。板坯分配器性能比較

我決定研究slab分配器(Bonwick94),我相信這是正確的選擇。到目前爲止,我理解這個概念並準備好實施它。但是,我想在開始工作之前瞭解性能比較的圖片。

假設malloc下面的圖層(vmem,pmem等)具有可忽略的影響,那麼slab分配器如何與比如說dlmalloc和其他常見的malloc實現(好友,最佳匹配/適合,混合動力車)?

回答

2

我相信slab分配器至少是dlmalloc靈感的一部分,基本輪廓被認爲是通用分配器系統的最佳折衷組合。在「最適合」,「下一個適合」等抽象層次上,通用的「一刀切」分配器 - 無雙關意 - 通常不會削減;一個單一的算法太有限了。因此,與平板分配器一起使用的最佳組合將表現得更令人滿意。

在您的環境中使用針對使用情況配置文件定製行爲的「子分配器」層次結構比聽起來容易 - 例如,對於「小」塊使用一個分配系統(但可以在您的環境中定義),另一個「大」可以大大影響速度和分段性能,我個人的興趣是使用塊「壽命」特性作爲分配器選擇的輔助。

但底線,我不相信一個單一的分配策略;但你可以通過2或3個(最多)子分配器的混合來獲得很多性能改進;與此同時,你可能會用同樣的方法結束1000行的大小。

+0

+1,一個有趣的觀察。好的食物,想法:) – 2009-07-24 02:11:41