History

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

Ying Han committed 14 years ago

Commit 904249a1 parent 13d51803 files · +13 −7Browse files

Unified · Split

3 files
  1. include/linux/vm_event_item.h +3 −2
  2. mm/vmscan.c +8 −3
  3. mm/vmstat.c +2 −2
include/linux/vm_event_item.h+3−2
@@ -26,13 +26,14 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, · 25 unmodified lines
2626 PGFREE, PGACTIVATE, PGDEACTIVATE,
2727 PGFAULT, PGMAJFAULT,
2828 FOR_ALL_ZONES(PGREFILL),
29− FOR_ALL_ZONES(PGSTEAL),
29+ FOR_ALL_ZONES(PGSTEAL_KSWAPD),
30+ FOR_ALL_ZONES(PGSTEAL_DIRECT),
3031 FOR_ALL_ZONES(PGSCAN_KSWAPD),
3132 FOR_ALL_ZONES(PGSCAN_DIRECT),
3233 #ifdef CONFIG_NUMA
3334 PGSCAN_ZONE_RECLAIM_FAILED,
3435 #endif
35− PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,
36+ PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
3637 KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
3738 KSWAPD_SKIP_CONGESTION_WAIT,
3839 PAGEOUTRUN, ALLOCSTALL, PGROTATED,
mm/vmscan.c+8−3
@@ -1568,9 +1568,14 @@ shrink_inactive_list(unsigned long nr_to_scan, struct mem_cgroup_zone *mz, · 1567 unmodified lines
15681568 reclaim_stat->recent_scanned[0] += nr_anon;
15691569 reclaim_stat->recent_scanned[1] += nr_file;
15701570
1571− if (current_is_kswapd())
1572− __count_vm_events(KSWAPD_STEAL, nr_reclaimed);
1573− __count_zone_vm_events(PGSTEAL, zone, nr_reclaimed);
1571+ if (global_reclaim(sc)) {
1572+ if (current_is_kswapd())
1573+ __count_zone_vm_events(PGSTEAL_KSWAPD, zone,
1574+ nr_reclaimed);
1575+ else
1576+ __count_zone_vm_events(PGSTEAL_DIRECT, zone,
1577+ nr_reclaimed);
1578+ }
15741579
15751580 putback_inactive_pages(mz, &page_list);
15761581
mm/vmstat.c+2−2
@@ -738,7 +738,8 @@ const char * const vmstat_text[] = { · 737 unmodified lines
738738 "pgmajfault",
739739
740740 TEXTS_FOR_ZONES("pgrefill")
741− TEXTS_FOR_ZONES("pgsteal")
741+ TEXTS_FOR_ZONES("pgsteal_kswapd")
742+ TEXTS_FOR_ZONES("pgsteal_direct")
742743 TEXTS_FOR_ZONES("pgscan_kswapd")
743744 TEXTS_FOR_ZONES("pgscan_direct")
744745
@@ -747,7 +748,6 @@ const char * const vmstat_text[] = { · 2 unmodified lines
747748 #endif
748749 "pginodesteal",
749750 "slabs_scanned",
750− "kswapd_steal",
751751 "kswapd_inodesteal",
752752 "kswapd_low_wmark_hit_quickly",
753753 "kswapd_high_wmark_hit_quickly",