内存管理篇-05物理页面的迁移类型migratetype

        本节内容依旧是对上节课伙伴系统的补充,主要介绍了新版伙伴系统的页面迁移相关的内容

        为什么要引入页面迁移类型?新版本伙伴系统针对老版本的伙伴系统的升级改进。主要优化memory compaction内存碎片整理的过程。

        页面迁移实际上就是伙伴系统中free_area[MAX_ORDER]结构体保存的链表指针将链表分类,如上图所示。并且页面在申请的时候也去考虑它的类型。将不可移动的放一块,可移动的放一块等等;

struct free_area {
    struct list_head free_list[MIGRATE_TYPES];//可以指向不同的页类型
    unsigned long nr_free;
};

1.查看页面迁移类型:

cat /proc/pagetypeinfo

  • 可移动的:用户进程申请的内存
  • 可回收的:文件系统的page cache
  • 不可移动的:例如内核镜像区域的物理内存

 

2.为什么要引入迁移类型?

(1)对伙伴系统的改进,主要就是为了解决内存碎片。不仅仅是合并用户申请和释放后的地址空间,还需要考虑自身的内存布局去优化它。相当于对free_area[order]指向的区域,在次进行区域划分,可移动的从一个地方申请,不可移动的从另外一个地方申请等等。分类后,就可以随时对可移动区域进行优化,并且去修改页表。

 3.内存碎片处理:memory compaction

  • 碎片清理:可移动页面迁移
  • memory compact的几种方式:
    • 以同步方式压缩和迁移
    • 压缩同步,迁移异步
    • 以异步方式压缩和迁移
  • 什么时候触发memory compaction?
    • kcompacted守护进程
    • memory compaction开销
    • 手动触发:echo 1 > /proc/sys/vm/compact_memory

问题:注意,这些迁移工作由于需要重新更新页表,因此开销是很大的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyDog0623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值