proc: meminfo: estimate available memory more conservatively [Linux 4.5]

This Linux kernel change "proc: meminfo: estimate available memory more conservatively" is included in the Linux 4.5 release. This change is authored by Johannes Weiner <hannes [at]> on Thu Jan 14 15:20:18 2016 -0800. The commit for this change in Linux stable tree is 84ad580 (patch).

proc: meminfo: estimate available memory more conservatively

The MemAvailable item in /proc/meminfo is to give users a hint of how
much memory is allocatable without causing swapping, so it excludes the
zones' low watermarks as unavailable to userspace.

However, for a userspace allocation, kswapd will actually reclaim until
the free pages hit a combination of the high watermark and the page
allocator's lowmem protection that keeps a certain amount of DMA and
DMA32 memory from userspace as well.

Subtract the full amount we know to be unavailable to userspace from the
number of free pages when calculating MemAvailable.

Signed-off-by: Johannes Weiner <>
Cc: Rik van Riel <>
Cc: Mel Gorman <>
Acked-by: Michal Hocko <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>

There are 5 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 fs/proc/meminfo.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index 9155a5a..df4661a 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -57,11 +57,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
     * Estimate the amount of memory available for userspace allocations,
     * without causing swapping.
-    *
-    * Free memory cannot be taken below the low watermark, before the
-    * system starts swapping.
-   available = i.freeram - wmark_low;
+   available = i.freeram - totalreserve_pages;

     * Not all the page cache can be freed, otherwise the system will

Leave a Reply

Your email address will not be published. Required fields are marked *