Index: linux-2.6-git/kernel/sysctl.c =================================================================== --- linux-2.6-git.orig/kernel/sysctl.c 2010-02-16 13:38:48.000000000 +0100 +++ linux-2.6-git/kernel/sysctl.c 2010-02-16 15:07:21.000000000 +0100 @@ -267,13 +267,49 @@ extern unsigned long long perf_count_direct_reclaim_slow_dursum_pre_ttf_2_post_ttf; extern unsigned long long perf_count_direct_reclaim_slow_dursum_post_ttf_2_pre_get_page; -extern unsigned long long perf_count_direct_reclaim_slow_dursum_pre_get_page_2_post_ttf; +extern unsigned long long perf_count_direct_reclaim_slow_dursum_pre_get_page_2_post_get_page; extern unsigned long long perf_count_direct_reclaim_fast_dursum_pre_ttf_2_post_ttf; extern unsigned long long perf_count_direct_reclaim_fast_dursum_post_ttf_2_pre_get_page; -extern unsigned long long perf_count_direct_reclaim_fast_dursum_pre_get_page_2_post_ttf; +extern unsigned long long perf_count_direct_reclaim_fast_dursum_pre_get_page_2_post_get_page; +extern unsigned long perf_count_direct_reclaim_fast_sum_progress; +extern unsigned long perf_count_direct_reclaim_slow_sum_progress; +extern unsigned long perf_count_direct_reclaim_fast_sum_order; +extern unsigned long perf_count_direct_reclaim_slow_sum_order; static struct ctl_table perf_table[] = { { .ctl_name = CTL_UNNUMBERED, + .procname = "perf_count_direct_reclaim_slow_sum_progress", + .data = &perf_count_direct_reclaim_slow_sum_progress, + .mode = 0666, + .maxlen = sizeof(unsigned long long), + .proc_handler = &proc_doulongvec_minmax, + }, + { + .ctl_name = CTL_UNNUMBERED, + .procname = "perf_count_direct_reclaim_slow_sum_order", + .data = &perf_count_direct_reclaim_slow_sum_order, + .mode = 0666, + .maxlen = sizeof(unsigned long long), + .proc_handler = &proc_doulongvec_minmax, + }, + { + .ctl_name = CTL_UNNUMBERED, + .procname = "perf_count_direct_reclaim_fast_sum_progress", + .data = &perf_count_direct_reclaim_fast_sum_progress, + .mode = 0666, + .maxlen = sizeof(unsigned long long), + .proc_handler = &proc_doulongvec_minmax, + }, + { + .ctl_name = CTL_UNNUMBERED, + .procname = "perf_count_direct_reclaim_fast_sum_order", + .data = &perf_count_direct_reclaim_fast_sum_order, + .mode = 0666, + .maxlen = sizeof(unsigned long long), + .proc_handler = &proc_doulongvec_minmax, + }, + { + .ctl_name = CTL_UNNUMBERED, .procname = "perf_count_direct_reclaim_slow_dursum_pre_ttf_2_post_ttf", .data = &perf_count_direct_reclaim_slow_dursum_pre_ttf_2_post_ttf, .mode = 0666, Index: linux-2.6-git/mm/page_alloc.c =================================================================== --- linux-2.6-git.orig/mm/page_alloc.c 2010-02-16 14:58:28.000000000 +0100 +++ linux-2.6-git/mm/page_alloc.c 2010-02-16 15:06:15.000000000 +0100 @@ -1663,6 +1663,11 @@ unsigned long long perf_count_direct_reclaim_fast_dursum_post_ttf_2_pre_get_page = 0; unsigned long long perf_count_direct_reclaim_fast_dursum_pre_get_page_2_post_get_page = 0; +unsigned long perf_count_direct_reclaim_fast_sum_progress = 0; +unsigned long perf_count_direct_reclaim_slow_sum_progress = 0; +unsigned long perf_count_direct_reclaim_fast_sum_order = 0; +unsigned long perf_count_direct_reclaim_slow_sum_order = 0; + static inline unsigned long long tod_duration_ns(unsigned long long from, unsigned long long to) { return ((to*125)>>9)-((from*125)>>9); } @@ -1719,11 +1724,17 @@ perf_count_direct_reclaim_slow_dursum_pre_ttf_2_post_ttf += tod_duration_ns(t1,t2); perf_count_direct_reclaim_slow_dursum_post_ttf_2_pre_get_page += tod_duration_ns(t2,t3); perf_count_direct_reclaim_slow_dursum_pre_get_page_2_post_get_page += tod_duration_ns(t3,t4); + + perf_count_direct_reclaim_slow_sum_progress += *did_some_progress; + perf_count_direct_reclaim_slow_sum_order += order; } else { perf_count_direct_reclaim_fast_dursum_pre_ttf_2_post_ttf += tod_duration_ns(t1,t2); perf_count_direct_reclaim_fast_dursum_post_ttf_2_pre_get_page += tod_duration_ns(t2,t3); perf_count_direct_reclaim_fast_dursum_pre_get_page_2_post_get_page += tod_duration_ns(t3,t4); + + perf_count_direct_reclaim_fast_sum_progress += *did_some_progress; + perf_count_direct_reclaim_fast_sum_order += order; } return page;