multi-generation lru系列 - 怎么决定回收anon还是file

本文探讨MGLRU算法在内存回收时如何决定回收anon还是file页面。MGLRU仅在最老一代区分anon和file,回收选择基于swappiness和workingset计算的refault概率,采用PID控制算法。详细分析了源码中的get_type_to_scan函数及其背后的统计机制。

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

概述

MGLRU作为全新的LRU算法尤其独特之处,但是传统LRU算法中涉及的很多问题,MGLRU算法依然也要面对,比如本文即将讨论的在回收内存的时候,到底应该是回收anon 还是 file page,前面我们有一篇文章专门介绍了传统lru算法的策略和实现方式,可以作为参考和对比,看看两种回收方式的差异点:Linux 回收内存到底怎么计算anon/file回收比例,只是swappiness这么简单?-优快云博客

由于当下时间点mglru全网分析的基本为0,这种问题只能去研究mglru的源码,接下来我们直接通过源码分析其实现方式:

源码实现

vmscan.c:
shrink_lruvec
    --->lru_gen_shrink_lruvec
        --->evict_folios
            --->isolate_folios
                --->get_type_to_scan
          

static int get_type_to_scan(struct lruvec *lruvec, int swappiness, int *tier_idx)
{
	int type, tier;
	struct ctrl_pos sp, pv;
	int gain[ANON_AND_FILE] = { swappiness, 200 - swappiness };

	/*
	 * Compare the first tier of anon with that of 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值