内存回收中fastpath和kswapd以及direct reclaim的差异

本文深入探讨了Linux内核中的三种内存回收机制:fastpath、kswapd和directreclaim。fastpath适用于快速回收未映射文件页和可回收slab缓存,kswapd负责在所有zone达到高水位标记时进行内存回收,而directreclaim则在内存紧张时回收有限数量的页面并可能触发脏页回写,从而避免系统卡顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fastpath、kswapd和direct reclaim都会扫描zone,且最后调用的函数都一样,那么他们有什么区别呢?

fastpath和slowpath的区别在于,fastpath要求zone的unmapped file page必须大于zone规定的min_unmapped_pages,slab reclaimable大于min_slab_pages,回收内存的的页数为2^order个页数和是32个之间的最大值,而kswapd回收内存需要回收到所有的zone都满足free page大于high watermark值或者zone的high watermark值个页面。同时fastpath不会进行回写,也不会回收mapped的page。fastpath主要靠zone_reclaim来完成快速的内存回收。kswap则主要从balance_pgdat()来完成

direct reclaim和kswapd的差别在于只能回收32个页面,同时kswapd进行回写页面需要满足特定条件(当前有很多的页面需要等待writeback),而direct reclaim判断当回收过程中扫描的总页数大于48个时就会启动flush线程来进行脏页的回写操作。

我们在调性能时候都会尽量的提高extra_free_kbytes的值来防止过多的出现direct reclaim,因为direct reclaim会进行脏页的回写,这里再IO性能不是很好的时候会造成系统严重卡顿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值