Linux 内核参数:meminfo

本文详细分析了Linux内核中的meminfo节点,包括内存黑洞、总计(如MemTotal、MemFree、MemAvailable)、内核内存(如KReclaimable、slab、KernelStack、PageTables等)和用户内存(如AnonPages、Mapped、Buffers、Cached等)。通过解析内核源码,解释了各种统计值的含义和计算方法,解答了slab分配器区分SReclaimable和SUnreclaim的原因,以及为何Active(anon) + Inactive(anon)不等于AnonPages等问题。

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

源码基于: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值