mm: add node_reclaim successes to VM event counters
authorMatthew Cassell <mcassell411@gmail.com>
Mon, 22 Jul 2024 17:13:16 +0000 (17:13 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 2 Sep 2024 03:25:43 +0000 (20:25 -0700)
/proc/vmstat currently shows the number of node_reclaim() failures when
vm.zone_reclaim_mode is set appropriately.  It would be convenient to have
the number of successes right next to zone_reclaim_failed (similar to
compaction and migration).

While just a trivially addition to the vmstat file.  It was helpful during
benchmarking to not have to probe node_reclaim() to observe the
success/failure ratio.

Link: https://lkml.kernel.org/r/20240722171316.7517-1-mcassell411@gmail.com
Signed-off-by: Matthew Cassell <mcassell411@gmail.com>
Cc: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
Cc: "Huang, Ying" <ying.huang@intel.com>
Cc: Li Zhijian <lizhijian@fujitsu.com>
Cc: Yosry Ahmed <yosryahmed@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/vm_event_item.h
mm/vmscan.c
mm/vmstat.c

index 747943b..6fff8ed 100644 (file)
@@ -50,6 +50,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
                PGSTEAL_ANON,
                PGSTEAL_FILE,
 #ifdef CONFIG_NUMA
+               PGSCAN_ZONE_RECLAIM_SUCCESS,
                PGSCAN_ZONE_RECLAIM_FAILED,
 #endif
                PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
index cfa8392..c9682c8 100644 (file)
@@ -7539,7 +7539,9 @@ int node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned int order)
        ret = __node_reclaim(pgdat, gfp_mask, order);
        clear_bit(PGDAT_RECLAIM_LOCKED, &pgdat->flags);
 
-       if (!ret)
+       if (ret)
+               count_vm_event(PGSCAN_ZONE_RECLAIM_SUCCESS);
+       else
                count_vm_event(PGSCAN_ZONE_RECLAIM_FAILED);
 
        return ret;
index e875f2a..1ac2a56 100644 (file)
@@ -1314,6 +1314,7 @@ const char * const vmstat_text[] = {
        "pgsteal_file",
 
 #ifdef CONFIG_NUMA
+       "zone_reclaim_success",
        "zone_reclaim_failed",
 #endif
        "pginodesteal",