为什么/proc/meminfo在内核版本3.10下显示MemAvailable?

为什么/proc/meminfo在内核版本3.10下显示MemAvailable?

我一直使用CentOS 7,其内核版本是3.10。要检查内核版本,我输入“uname -r”并显示命令3.10.0-957.1.3.el7.x86_64

据我所知,MemAvailableLinux 内核版本 3.14 引入了 metric。

但是,我跑了/proc/meminfo,这个命令显示了MemAvailable公制。

MemTotal:       3880620 kB
MemFree:        3440980 kB
MemAvailable:   3473820 kB

为什么我的 Linux 显示MemAvailable指标?我的Linux内核低于3.14

答案1

您的内核将自己标识为 3.10,因为这是为 RHEL 7(和 CentOS 7)维护的基准 ABI。保留 ABI 是为了让使用 RHEL 7 早期版本构建的内核模块在后续版本中继续按原样工作。

但是,如果可以在不破坏 ABI 的情况下实现这一点,则有用的内核功能将从新内核向后移植到 RHEL 内核。这包括MemAvailable,甚至已被向后移植到 RHEL 6 中的“2.6.32”内核!发行说明中详细介绍了每个版本内核的更改;参见例如RHEL 7.6 内核的变化

有关其本身的解释MemAvailable,请参见如何跨发行版获取可移植的可用内存量?

答案2

该指标为您提供有关无需交换即可使用的应用程序内存最大大小的估计。从这个网站

估计有多少内存可用于启动新应用程序(无需交换)。根据 MemFree、SReclaimable、文件 LRU 列表的大小以及每个区域中的低水位线计算得出。

该估计考虑到系统需要一些页面缓存才能正常运行,并且由于项目正在使用,并非所有可回收的slab都是可回收的。这些因素的影响因系统而异。

关于为什么也许最好询问内核开发人员/RedHat 公司

通常 RH 会在旧版本内核上进行大量向后移植。

相关内容