2012-08-16 39 views
1

我正在學習linux slab分配。linux kmalloc over 8192 slab

以下是linux內核源代碼mm/slab.c,看起來好像是,當我在內核中用kmalloc請求內存時,真正發生的是,slab分配器發現與2的功率數最接近的較大匹配並返回準備好的緩存(if本),但/proc/slabinfo告訴我,準備kmalloc的高速緩存的最大尺寸爲「8192」:

kmalloc-8192   29  32 8192 4 8 : tunables ... 
kmalloc-4096   70  72 4096 8 8 : tunables ... 
kmalloc-2048   331 336 2048 8 4 : tunables ... 

內核源代碼顯示,請求超過這個尺寸會失敗(我認爲我錯了),但在現實中,我們可以kmalloc最大128KB。

我的quiestion:爲什麼沒有kmalloc-16384,kmalloc-32768,以及更多/proc/slabinfo

回答

0

我假設它在這種情況下直接進入頁面分配器。我不知道爲什麼它自己處理訂單2的分配。除非那是因爲你使用了一些奇怪的8k頁面架構,這會使其訂購-1。