mm: introduce NR_INDIRECTLY_RECLAIMABLE_BYTES
authorRoman Gushchin <guro@fb.com>
Tue, 10 Apr 2018 23:27:36 +0000 (16:27 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Oct 2018 07:16:25 +0000 (09:16 +0200)
commit eb59254608bc1d42c4c6afdcdce9c0d3ce02b318 upstream.

Patch series "indirectly reclaimable memory", v2.

This patchset introduces the concept of indirectly reclaimable memory
and applies it to fix the issue of when a big number of dentries with
external names can significantly affect the MemAvailable value.

This patch (of 3):

Introduce a concept of indirectly reclaimable memory and adds the
corresponding memory counter and /proc/vmstat item.

Indirectly reclaimable memory is any sort of memory, used by the kernel
(except of reclaimable slabs), which is actually reclaimable, i.e.  will
be released under memory pressure.

The counter is in bytes, as it's not always possible to count such
objects in pages.  The name contains BYTES by analogy to
NR_KERNEL_STACK_KB.

Link: http://lkml.kernel.org/r/20180305133743.12746-2-guro@fb.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/mmzone.h
mm/vmstat.c

index f0938257ee6d388d11acb73814b71c48acaf6b69..f679f526846756b19ebef509a2d58676d8c8f97b 100644 (file)
@@ -180,6 +180,7 @@ enum node_stat_item {
        NR_VMSCAN_IMMEDIATE,    /* Prioritise for reclaim when writeback ends */
        NR_DIRTIED,             /* page dirtyings since bootup */
        NR_WRITTEN,             /* page writings since bootup */
+       NR_INDIRECTLY_RECLAIMABLE_BYTES, /* measured in bytes */
        NR_VM_NODE_STAT_ITEMS
 };
 
index 50b4c11fb6121c2c4e880902b1c76df760d04f86..de547e1c7adc1635cd768aa8b8d3b9a722c3dfdd 100644 (file)
@@ -1090,6 +1090,7 @@ const char * const vmstat_text[] = {
        "nr_vmscan_immediate_reclaim",
        "nr_dirtied",
        "nr_written",
+       "nr_indirectly_reclaimable",
 
        /* enum writeback_stat_item counters */
        "nr_dirty_threshold",