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
26 PGFREE, PGACTIVATE, PGDEACTIVATE,26 PGFREE, PGACTIVATE, PGDEACTIVATE,
27 PGFAULT, PGMAJFAULT,27 PGFAULT, PGMAJFAULT,
28 FOR_ALL_ZONES(PGREFILL),28 FOR_ALL_ZONES(PGREFILL),
29 FOR_ALL_ZONES(PGSTEAL),29 FOR_ALL_ZONES(PGSTEAL_KSWAPD),
30 FOR_ALL_ZONES(PGSTEAL_DIRECT),
30 FOR_ALL_ZONES(PGSCAN_KSWAPD),31 FOR_ALL_ZONES(PGSCAN_KSWAPD),
31 FOR_ALL_ZONES(PGSCAN_DIRECT),32 FOR_ALL_ZONES(PGSCAN_DIRECT),
32#ifdef CONFIG_NUMA33#ifdef CONFIG_NUMA
33 PGSCAN_ZONE_RECLAIM_FAILED,34 PGSCAN_ZONE_RECLAIM_FAILED,
34#endif35#endif
35 PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,36 PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
36 KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,37 KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
37 KSWAPD_SKIP_CONGESTION_WAIT,38 KSWAPD_SKIP_CONGESTION_WAIT,
38 PAGEOUTRUN, ALLOCSTALL, PGROTATED,39 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
1568 reclaim_stat->recent_scanned[0] += nr_anon;1568 reclaim_stat->recent_scanned[0] += nr_anon;
1569 reclaim_stat->recent_scanned[1] += nr_file;1569 reclaim_stat->recent_scanned[1] += nr_file;
1570 1570
1571 if (current_is_kswapd())1571 if (global_reclaim(sc)) {
1572 __count_vm_events(KSWAPD_STEAL, nr_reclaimed);1572 if (current_is_kswapd())
1573 __count_zone_vm_events(PGSTEAL, zone, nr_reclaimed);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 }
1574 1579
1575 putback_inactive_pages(mz, &page_list);1580 putback_inactive_pages(mz, &page_list);
1576 1581
mm/vmstat.c+2−2
@@ -738,7 +738,8 @@ const char * const vmstat_text[] = { · 737 unmodified lines
738 "pgmajfault",738 "pgmajfault",
739 739
740 TEXTS_FOR_ZONES("pgrefill")740 TEXTS_FOR_ZONES("pgrefill")
741 TEXTS_FOR_ZONES("pgsteal")741 TEXTS_FOR_ZONES("pgsteal_kswapd")
742 TEXTS_FOR_ZONES("pgsteal_direct")
742 TEXTS_FOR_ZONES("pgscan_kswapd")743 TEXTS_FOR_ZONES("pgscan_kswapd")
743 TEXTS_FOR_ZONES("pgscan_direct")744 TEXTS_FOR_ZONES("pgscan_direct")
744 745
@@ -747,7 +748,6 @@ const char * const vmstat_text[] = { · 2 unmodified lines
747#endif748#endif
748 "pginodesteal",749 "pginodesteal",
749 "slabs_scanned",750 "slabs_scanned",
750 "kswapd_steal",
751 "kswapd_inodesteal",751 "kswapd_inodesteal",
752 "kswapd_low_wmark_hit_quickly",752 "kswapd_low_wmark_hit_quickly",
753 "kswapd_high_wmark_hit_quickly",753 "kswapd_high_wmark_hit_quickly",