mm: fix up the vmscan stat in vmstat
The "pgsteal" stat is confusing because it counts both direct reclaim as well as background reclaim. However, we have "kswapd_steal" which also counts background reclaim value. This patch fixes it and also makes it match the existng "pgscan_" stats. Test: pgsteal_kswapd_dma32 447623 pgsteal_kswapd_normal 42272677 pgsteal_kswapd_movable 0 pgsteal_direct_dma32 2801 pgsteal_direct_normal 44353270 pgsteal_direct_movable 0 Signed-off-by: Ying Han <yinghan@google.com> Reviewed-by: Rik van Riel <riel@redhat.com> Acked-by: Christoph Lameter <cl@linux.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Cc: Mel Gorman <mel@csn.ul.ie> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Hillf Danton <dhillf@gmail.com> Cc: Hugh Dickins <hughd@google.com> Cc: Dan Magenheimer <dan.magenheimer@oracle.com> Reviewed-by: Minchan Kim <minchan@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
13d518074a
commit
904249aa68
|
@ -26,13 +26,14 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
|
||||||
PGFREE, PGACTIVATE, PGDEACTIVATE,
|
PGFREE, PGACTIVATE, PGDEACTIVATE,
|
||||||
PGFAULT, PGMAJFAULT,
|
PGFAULT, PGMAJFAULT,
|
||||||
FOR_ALL_ZONES(PGREFILL),
|
FOR_ALL_ZONES(PGREFILL),
|
||||||
FOR_ALL_ZONES(PGSTEAL),
|
FOR_ALL_ZONES(PGSTEAL_KSWAPD),
|
||||||
|
FOR_ALL_ZONES(PGSTEAL_DIRECT),
|
||||||
FOR_ALL_ZONES(PGSCAN_KSWAPD),
|
FOR_ALL_ZONES(PGSCAN_KSWAPD),
|
||||||
FOR_ALL_ZONES(PGSCAN_DIRECT),
|
FOR_ALL_ZONES(PGSCAN_DIRECT),
|
||||||
#ifdef CONFIG_NUMA
|
#ifdef CONFIG_NUMA
|
||||||
PGSCAN_ZONE_RECLAIM_FAILED,
|
PGSCAN_ZONE_RECLAIM_FAILED,
|
||||||
#endif
|
#endif
|
||||||
PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,
|
PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
|
||||||
KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
|
KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
|
||||||
KSWAPD_SKIP_CONGESTION_WAIT,
|
KSWAPD_SKIP_CONGESTION_WAIT,
|
||||||
PAGEOUTRUN, ALLOCSTALL, PGROTATED,
|
PAGEOUTRUN, ALLOCSTALL, PGROTATED,
|
||||||
|
|
11
mm/vmscan.c
11
mm/vmscan.c
|
@ -1568,9 +1568,14 @@ shrink_inactive_list(unsigned long nr_to_scan, struct mem_cgroup_zone *mz,
|
||||||
reclaim_stat->recent_scanned[0] += nr_anon;
|
reclaim_stat->recent_scanned[0] += nr_anon;
|
||||||
reclaim_stat->recent_scanned[1] += nr_file;
|
reclaim_stat->recent_scanned[1] += nr_file;
|
||||||
|
|
||||||
if (current_is_kswapd())
|
if (global_reclaim(sc)) {
|
||||||
__count_vm_events(KSWAPD_STEAL, nr_reclaimed);
|
if (current_is_kswapd())
|
||||||
__count_zone_vm_events(PGSTEAL, zone, nr_reclaimed);
|
__count_zone_vm_events(PGSTEAL_KSWAPD, zone,
|
||||||
|
nr_reclaimed);
|
||||||
|
else
|
||||||
|
__count_zone_vm_events(PGSTEAL_DIRECT, zone,
|
||||||
|
nr_reclaimed);
|
||||||
|
}
|
||||||
|
|
||||||
putback_inactive_pages(mz, &page_list);
|
putback_inactive_pages(mz, &page_list);
|
||||||
|
|
||||||
|
|
|
@ -738,7 +738,8 @@ const char * const vmstat_text[] = {
|
||||||
"pgmajfault",
|
"pgmajfault",
|
||||||
|
|
||||||
TEXTS_FOR_ZONES("pgrefill")
|
TEXTS_FOR_ZONES("pgrefill")
|
||||||
TEXTS_FOR_ZONES("pgsteal")
|
TEXTS_FOR_ZONES("pgsteal_kswapd")
|
||||||
|
TEXTS_FOR_ZONES("pgsteal_direct")
|
||||||
TEXTS_FOR_ZONES("pgscan_kswapd")
|
TEXTS_FOR_ZONES("pgscan_kswapd")
|
||||||
TEXTS_FOR_ZONES("pgscan_direct")
|
TEXTS_FOR_ZONES("pgscan_direct")
|
||||||
|
|
||||||
|
@ -747,7 +748,6 @@ const char * const vmstat_text[] = {
|
||||||
#endif
|
#endif
|
||||||
"pginodesteal",
|
"pginodesteal",
|
||||||
"slabs_scanned",
|
"slabs_scanned",
|
||||||
"kswapd_steal",
|
|
||||||
"kswapd_inodesteal",
|
"kswapd_inodesteal",
|
||||||
"kswapd_low_wmark_hit_quickly",
|
"kswapd_low_wmark_hit_quickly",
|
||||||
"kswapd_high_wmark_hit_quickly",
|
"kswapd_high_wmark_hit_quickly",
|
||||||
|
|
Loading…
Reference in New Issue