linux中的kmalloc超过了8192

时间:2012-08-16 08:21:22

标签: linux caching memory kernel

我正在研究linux slab分配。

关于linux内核源代码mm/slab.c,看起来,当我在内核中请求kmalloc的内存时,实际发生的事情是,slab分配器找到最接近的更大匹配数2的幂并返回准备好的缓存(如果存在)但/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。

我的静止:为什么/proc/slabinfo中没有kmalloc-16384,kmalloc-32768等等?

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下它会直接转到页面分配器。我不知道为什么它自己处理order-2分配。除非那是因为你使用了一些奇怪的8k页面架构,这将使它成为订单-1。