开发者社区> 问答> 正文

我要对我的Linux应用程序调优,我想学习一下虚拟内存管理中页帧回收概念?

我要对我的Linux应用程序调优,我想学习一下虚拟内存管理中页帧回收概念?

展开
收起
我是小美女 2021-11-01 14:27:51 362 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,当一个进程请求一定数量的页的映射时,如果页不可用,Linux内核新的请求尝试通过释放某些页(先前使用过但现在不再使用,但基于某些原则仍然被标记为活动状态的页)并分配内存给该进程。这个过程被称为面帧回收。kswapd内核线程和try_to_free_page()内核函数被用来负责页的回收。

    kswapd线程通常处于可中断的睡眠状态,当某一区域中的自由页低于一个阈值时,kswapd线程会被伙伴系统调用。它尝试基于最近最少使用算法从活动页中找出候选页。最近最少使用的页将会被首先释放。活动列表和非活动列表被用于维护候选页。kswapd扫描部分活动列表并检查页的使用情况,把最近没有使用的页放到非活动列表中。你可以使用vmstat -a命令查看哪些内存是活动的和哪些内存是非活动的。

    kswapd也遵循其他原则。页的使用主要是为了两个用途:页缓存和进程地址空间。页缓存是页映射到一个磁盘文件。属于一个进程地址空间的页(被称为匿名内存,因为它没有映射到任何文件,也没有名字)被用于堆和栈。。当kswapd回收页时,它将会尽量压缩页缓存而不是把进程的页page out(或者swap out)。

    2021-11-01 14:32:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Debian GNU/Linux 安全合规之路 立即下载
从Linux系统内核层面来解决实际问题的实战经验 立即下载
Linux系统通过fail2ban对暴力破解进行防护 立即下载