我正在研究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。
我的问题:为什么没有 kmalloc-16384、kmalloc-32768 等/proc/slabinfo
?