0

I've been using CentOS 7 and its kernel version is 3.10. To check Kernel Version, I typed 'uname -r' and command showed 3.10.0-957.1.3.el7.x86_64

As far as I know, MemAvailable metric was introduced to Linux kernel version 3.14.

But, I ran /proc/meminfo and this command showed MemAvailable metric.

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

Why did my linux show MemAvailable metric? My Linux kernel is below 3.14

Stephen Kitt
  • 434,908
mznet07
  • 103

2 Answers2

2

This metric give you estimations about maximum size of application memory you can use without swapping. From this site

An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone.

The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.

About why maybe will be better to ask kernel developers/RedHat company

Usually RH do a lot of backporting staying with old version of the kernel.

Romeo Ninov
  • 17,484
  • 1
    agree with the "lot of backporting", eg nftables, introduced in kernel 3.13, is available (albeit perhaps not on par with latest kernels) on RHEL/CentOS 3.10 kernel. – A.B Dec 23 '18 at 09:12
  • 1
    Historically, for the better out worse, RH and friends also were the ones messing more with the kernel sources afair – Rui F Ribeiro Dec 23 '18 at 09:34
2

Your kernel identifies itself as 3.10 because that’s the baseline ABI which is maintained for RHEL 7 (and CentOS 7). The ABI is preserved so that, among other things, kernel modules built with an earlier release of RHEL 7 will continue working, as-is, in later releases.

However, when this is possible without breaking the ABI, useful kernel features are backported from new kernels to the RHEL kernel. This includes MemAvailable, which has even been backported to the “2.6.32” kernel in RHEL 6! The changes in each release’s kernel are detailed in the release notes; see for example the changes in RHEL 7.6’s kernel.

For an explanation of MemAvailable itself, see How can I get the amount of available memory portably across distributions?

Stephen Kitt
  • 434,908
  • Do you mean that 3.10 is not a linux kernel version literally and instead it is a kind of ABI version for only RHEL? – mznet07 Dec 23 '18 at 13:59
  • 1
    It’s the kernel version which was used in the first release of RHEL 7 (with some patches even then), and is still the basis for the current RHEL 7 kernel, but the version number only indicates the minimum level of support (everything the upstream 3.10 kernel supports), not the maximum (the RHEL kernel supports more than the upstream 3.10 kernel). – Stephen Kitt Dec 23 '18 at 17:58