源码基于:Linux 5.4
针对节点:
/proc/meminfo
0. 前言
内存管理是一个相对复杂的内核模块,错综复杂的数据结构和管理逻辑。Linux 内核为了帮助开发者从宏观上把握内存的使用情况,在几大核心数据结构中都有相应的计数统计,如物理页面使用情况、伙伴系统分配情况、内存管理区的页面使用情况、内存回收扫描回收情况、内存规整触发情况等等。
本文要分析的节点 meminfo 是Linux 操作系统中查看系统内存最准确(meminfo 中有内存黑洞)的方法,它包含当前时刻系统的所有物理页面的信息。
1. meminfo 节点初始化
fs/proc/meminfo.c
static int __init proc_meminfo_init(void)
{
proc_create_single("meminfo", 0, NULL, meminfo_proc_show);
return 0;
}
fs_initcall(proc_meminfo_init);
在fs 初始化的时候,会通过 fs_initcall() 初始化所有fs module,这里会调用 proc_meminfo_init(),
通过pro