Linux 内核 VS 内存碎片 (下)

本文探讨了Linux内核如何应对内存碎片问题,重点介绍了内存规整算法及其工作原理,包括从zone底部扫描可移动页面到顶部的空闲页,以及内存规整的触发时机。同时,提到了直接内存回收在内存管理中的角色,以及监控内存状态的工具。内存规整虽然开销大,但社区仍在不断优化。文章还提供了观察内存碎片指数的接口,并给出了减少直接内存回收和缓解碎片问题的建议,如调整vm.min_free_kbytes参数。

Linux 内核 VS 内存碎片 (上) 我们可以看到根据迁移类型进行分组只是延缓了内存碎片,而并不是从根本解决,所以随着时间的推移,当内存碎片过多,无法满足连续物理内存需求时,将会引起性能问题。因此仅仅依靠此功能还不够,所以内核又引入了内存规整等功能。

内存规整

在内存规整引入之前,内核还使用过 lumpy reclaim 来进行反碎片化,但在我们当前最常用的 3.10 版本内核上已经不存在了,所以不做介绍,感兴趣的朋友请从文章开头整理的列表中自取,我们来看内存规整。

内存规整的算法思想在 Memory compaction 有详细描述,简单来说是从选中的 zone 底部扫描已分配的迁移类型为 MIGRATE_MOVABLE 的页面,再从此 zone 的顶部扫描空闲页面,把底部的可移动页移到顶部的空闲页,在底部形成连续的空闲页。

选中的碎片化 zone:

扫描可移动的页面:

扫描空闲的页面:

规整完成:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值