Linux内核内存管理:MGLRU、DAMON与OOM杀手解析
1. MGLRU与内存使用追踪
在Linux内核中,内存管理是一个复杂且关键的任务。MGLRU(Multi-Gen LRU)在其中扮演着重要角色,它会记录页面的“年龄”(以毫秒为单位)以及在特定时间间隔内访问的页面数量,涵盖匿名页面和文件支持的页面。通过这些信息,内核能够追踪页面的使用情况,从而在页面回收时做出更优决策。
若想了解某个命名内存控制组(memcg)下包含哪些进程,可使用 systemd-cgls
命令。例如,要查看 /user.slice/user-1001.slice/session-7.scope
这个memcg中的进程,可执行以下命令:
$ systemd-cgls -u session-7.scope
Unit session-7.scope (/user.slice/user-1001.slice/session-7.scope):
├─2598 sshd: c2kp [priv]
├─2712 sshd: c2kp@pts/4
└─2713 -bash
从输出可知,该memcg中有两个 sshd
进程和一个 Bash
进程,这些进程的页面由MGLRU进行追踪。
若要深入了解MGLRU,可参考以下官方内核文档:
-