--- mm/vmscan.c | 9 +++++++++ 1 file changed, 9 insertions(+) Index: linux-2.6.21-rc6/mm/vmscan.c =================================================================== --- linux-2.6.21-rc6.orig/mm/vmscan.c 2007-04-13 23:11:03.000000000 -0700 +++ linux-2.6.21-rc6/mm/vmscan.c 2007-04-13 23:17:58.000000000 -0700 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -1017,6 +1018,8 @@ static unsigned long shrink_zones(int pr */ unsigned long try_to_free_pages(struct zone **zones, gfp_t gfp_mask) { + INIT_PC(pc_scanned, PC_DIRECT_RECLAIM_SCANNED); + INIT_PC(pc_reclaimed, PC_DIRECT_RECLAIM_RECLAIMED); int priority; int ret = 0; unsigned long total_scanned = 0; @@ -1098,6 +1101,8 @@ out: zone->prev_priority = priority; } + pc_bytes(&pc_scanned, PAGE_SIZE * sc.nr_scanned); + pc_bytes(&pc_reclaimed, PAGE_SIZE * nr_reclaimed); return ret; } @@ -1124,6 +1129,8 @@ out: */ static unsigned long balance_pgdat(pg_data_t *pgdat, int order) { + INIT_PC(pc_reclaim_scanned, PC_RECLAIM_SCANNED); + INIT_PC(pc_reclaim_reclaimed, PC_RECLAIM_RECLAIMED); int all_zones_ok; int priority; int i; @@ -1273,6 +1280,8 @@ out: goto loop_again; } + pc_bytes(&pc_reclaim_scanned, total_scanned * PAGE_SIZE); + pc_bytes(&pc_reclaim_reclaimed, nr_reclaimed * PAGE_SIZE); return nr_reclaimed; }