【 MM 】聊聊 Compaction 与 Page migrate

• 1 分钟阅读 •

随着系统的持续使用,内存碎片化问题将会变得越来越严重,如果系统中仍有申请大块物理地址连续页面请求的话,那么内存分配的成功率也将变得越来越低。
伴随着 Compaction 机制的出现,这类内存分配的囧境得到了缓解,它可以在大块内存紧缺的情况下启动,整理对应的内存 zone,尽力保证能够重新梳理出可用的大块内存。
假设有一系统中内存共有 10 个页面,某一场景下急需 5 个连续页面,这时就是 Compaction 的表现时刻, 对于具体的执行动作可以用一张图来形象的表示出来,

这时 5 个页面就被整理出来等待被分配,当然这个理解的情况,在前面的文章中我们有聊过 Migratetype,之所以提它是因为 Compaction 在页面规整的过程中是只允许迁移 MIGRATE_MOVABLE 类型页面的,严格的说还有另外一种特殊的页面也可以被迁移,像 zsmalloc 分配出来的页面等,这些页面的 page->mapping 成员中附有 PAGE_MAPPING_MOVABLE 属性,关于 zsmalloc 后面再聊。

文章标签:

上一篇 : 【 PERF 】systemtap 环境搭建与错误排查
下一篇 : 【 MM 】聊聊 migratetype 与 pageblock
阅读进度 0%