避免物理内存碎片化 - ZONE_MOVABLE

在2.6.20-rc6中,mel Gorman提交了的patch引入了ZONE_MOVABLE,引入这个pseudo zone的目的是为了防止zone内存碎片化

ZONE_MOVABLE表示这个zone仅能被带有__GFP_HIGHMEM和__GFP_MOVABLE标志的分配使用。这就使得所有non-movable页面都限制在单一的内存区,而movable的分配则由其他的内存区满足。这个patch可以和基于链表的防碎片patch一起使用。

Movable zone的大小由内核参数"kernelcore="指定。这个参数指定了多少内存分配给ZONE_MOVALBE。在ZONE_MOVABLE zone内的页面都可以做页面迁移或者页面回收。

当我们选择一个zone的页面用于ZONE_MOVABLE时,需要考虑两点:

首先,仅仅位于最高内存zone的内存可用于ZONE_MOVABLE。对于x86 arm平台,是ZONE_HIGHMEM;对于ppc64则是ZONE_DMA;对于x86_64则是ZONE_DMA32.

其次,内核使用的内存可能平坦的分布在多个NUMA节点。如果这些节点的尺寸不相同,就会导致内核在不同节点上使用的内存数量不同。

缺省情况下,这个zone不会被用作huge pages分配,因为huge pages分配是固定的和non-migratable。提供了一个sysctl hugepages_treat_as_movable允许在ZONE_MOVABLE上执行huge pages分配。这就意味着当系统执行了这个系统调用后,huge page pool的尺寸包含了ZONE_MOVABLE的尺寸。

除了hugh pages可以是non-ovable,作者不再引入其他可能会导致ZONE_MOVABLE外碎片的分配。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值