【操作系统百科】内存回收
💡
原文中文,约4600字,阅读约需11分钟。
📝
内容提要
Linux内存回收策略经过20年的演变,MGLRU成为新的发展方向。内存被划分为高、中、低水位,以控制回收时机。经典的LRU维护四条链表,而MGLRU引入了多代机制,以优化扫描效率。swappiness参数用于调节匿名页与文件页的回收比例。kswapd和直接回收各有优缺点,PSI用于监测内存压力。整体目标是减少延迟和内存抖动。
🎯
关键要点
-
Linux内存回收策略经过20年的演变,MGLRU成为新的发展方向。
-
内存被划分为高、中、低水位,以控制回收时机。
-
经典的LRU维护四条链表,而MGLRU引入了多代机制,以优化扫描效率。
-
swappiness参数用于调节匿名页与文件页的回收比例。
-
kswapd和直接回收各有优缺点,PSI用于监测内存压力。
-
整体目标是减少延迟和内存抖动。
❓
延伸问答
MGLRU是什么,它有什么优势?
MGLRU是多代LRU的缩写,它通过引入多代机制来优化内存回收效率,减少扫描开销和内存抖动。
Linux内存回收的水位线是如何划分的?
Linux内存回收将内存划分为高、中、低水位,以控制回收时机,分别对应充裕、唤醒kswapd的阈值和直接回收的阈值。
swappiness参数的作用是什么?
swappiness参数用于调节匿名页与文件页的回收比例,影响内存回收的策略。
kswapd和直接回收有什么区别?
kswapd是后台内核线程负责内存回收,而直接回收是分配者在内存不足时自己进行的回收,后者会导致进程阻塞。
如何监测Linux系统的内存压力?
可以使用PSI(Pressure Stall Information)来监测内存压力,查看/proc/pressure/memory文件获取相关信息。
MGLRU的引入对内存管理有什么实际效果?
MGLRU的引入使得低内存抖动减少40%,kswapd的CPU使用降低35%,并减少了主要故障的发生。
➡️