1

我正在研究linux平板分配。

按照 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。

我的问题:为什么没有 km​​alloc-16384、kmalloc-32768 等/proc/slabinfo

4

1 回答 1

1

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

于 2012-08-23T15:29:06.420 回答