博客
关于我
避免物理内存碎片化
阅读量:79 次
发布时间:2019-02-26

本文共 1084 字,大约阅读时间需要 3 分钟。

Linux内核的物理内存管理系统在运行过程中一直面临着物理内存碎片化问题。尽管系统总可用物理内存量可能较大,但在长时间运行后,空闲的连续物理内存块可能变得非常小,导致申请大块连续物理内存时失败,尤其是在带有ATOMIC标记的分配操作中。

避免碎片

物理内存碎片化问题一直是Linux操作系统的主要缺陷之一。尽管已有多种解决方案,但没有哪种方法能彻底解决这一问题。memory buddy分配方案提供了一种解决思路。用户空间的物理内存页属于movable类型,可以通过更新页表项和数据复制实现分配,而不可移动的页面则固定在内存中,无法迁移。

页面分类

内核引入了页面迁移类型分类机制,将页面分为三类:

  • unmovable:位置固定,无法迁移,主要用于核心内核分配。
  • reclaimable:不能直接移动,但可以通过kswapd回收。
  • movable:可以随意迁移,用户空间应用程序的页属于此类。
  • 将页面分类后,内核将它们组织到不同的链表中,以减少不同类型页面之间的干扰。movable zone的概念被引入,其中movable zone是虚拟的,内核在运行时动态建立。这种分类方式能有效减少碎片化,优先分配unmovable页面,降低buddy分配失败的几率。

    数据结构与分类

    内核通过宏定义表示迁移类型:

    • MIGRATE_UNMOVABLE
    • MIGRATE_RECLAIMABLE
    • MIGRATE_MOVABLE

    fallbacks数组规定了不同类型页面链表的优先级顺序。当无法在指定类型中找到可用页面时,内核会依次尝试其他链表。这种方法能有效避免unmovable页面的碎片化问题。

    ZONE_MOVABLE

    ZONE_MOVABLE是一种虚拟内存区,主要用于可移动分配。其核心思想是将物理内存划分为两部分:

    • 一部分用于可移动分配。
    • 一部分用于不可移动分配。

    ZONE_MOVABLE内存可以从高端内存或普通内存中提取。其优点在于可移动分配不会影响不可移动区的碎片化。对于用户空间的页面映射和内核vmalloc分配等高需求场景,ZONE_MOVABLE提供了高效的内存分配策略。

    结论

    尽管ZONE_MOVABLE和页面分类方法显著缓解了物理内存碎片化问题,但仍存在不足之处。频繁的reclaimable分配会导致unmovable区的碎片化问题。因此,针对特定场景,可以采取以下优化措施:

  • 减少分配的连续页面数目。
  • 使用预分配策略,确保关键操作不会因分配失败而影响系统稳定性。
  • 这种方法虽然不完全解决物理内存碎片化问题,但能显著减少分配失败的可能性,提升系统性能。

    转载地址:http://tmjz.baihongyu.com/

    你可能感兴趣的文章
    nginx反向代理
    查看>>
    Nginx反向代理
    查看>>
    nginx反向代理、文件批量改名及统计ip访问量等精髓总结
    查看>>
    Nginx反向代理与正向代理配置
    查看>>
    Nginx反向代理及负载均衡实现过程部署
    查看>>
    Nginx反向代理是什么意思?如何配置Nginx反向代理?
    查看>>
    nginx反向代理解决跨域问题,使本地调试更方便
    查看>>
    Nginx反向代理配置
    查看>>
    Nginx启动SSL功能,并进行功能优化,你看这个就足够了
    查看>>
    nginx启动脚本
    查看>>
    Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
    查看>>
    Nginx在Windows下载安装启动与配置前后端请求代理
    查看>>
    Nginx多域名,多证书,多服务配置,实用版
    查看>>
    nginx如何实现图片防盗链
    查看>>
    Nginx学习总结(12)——Nginx各项配置总结
    查看>>
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    Nginx安装与常见命令
    查看>>
    Nginx安装及配置详解
    查看>>