【问题标题】:linux kmalloc over 8192 in slablinux kmalloc over 8192 inslab
【发布时间】:2012-08-12 13:38:12
【问题描述】:

我正在研究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 中没有 km​​alloc-16384、kmalloc-32768 等?

【问题讨论】:

    标签: linux caching memory kernel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 2010-11-07
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多