作者:臭小子 | 来源:互联网 | 2023-08-13 15:26
源码基于:Linux5.40.前言在页面回收简介一文中,我们将Linux内核中触发页面回收的机制大致分为3种:直接页面回收机制周期性回收内存机制(kswpad)slab收割机在k
源码基于:Linux5.4
0. 前言
在 页面回收简介 一文中,我们将Linux 内核中触发页面回收的机制大致分为 3 种:
- 直接页面回收机制
- 周期性回收内存机制(kswpad)
- slab 收割机
在 kswapd 详解 一文第 2.2 节详细总结了唤醒 kswapd 内核线程的 3 种方式:
- 出现内存碎片时唤醒 kswapd:此方式来自快速分配时发现当前 migrate type 中没有页面,但是能从其他 migrate type 中 steal 页面出来时,认为系统存在碎片,需要唤醒 kswapd 进行回收;
- 内存严重短缺时唤醒 kswapd:此方式来自慢速分配,当通过快速分配方式之后,无法分配出pages,分配器进行慢速申请。当 gfp_mask 设定了 __GFP_KSWAPD_RECLAIM 时,会首先唤醒 kswapd 进行内存回收,此次不是阻塞方式;
- 直接回收内存中唤醒 kswapd:此方式来自慢速分配,当经过上面 2