On Fri, 15 Mar 2013 00:36:35 +0900 (JST) HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote: > If buddy page has order n, (2^n) pages are filtered at the same > time. Then, next (2^n) pages are already filterd, so we can skip the > (2^n) pages for free. > > By this, on 32GB memory system, there's the following improvement: > > - with mmap() on /proc/vmcore from 0.594421 seconds to 0.496517 > seconds, and > - with normal read() from 1.533796 seconds to 0.750935 seconds. > > Note that the two improvements are measured on the same /proc/vmcore. > > Note also that amount of the improvement depends on amount of free > pages, though it's obvious. > > Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> Good ! Applied. Thanks Atsushi Kumagai > --- > makedumpfile.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index 7acbf72..9075f38 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -4303,9 +4303,9 @@ __exclude_unnecessary_pages(unsigned long mem_map, > && info->flag_cyclic > && info->page_is_buddy > && info->page_is_buddy(flags, _mapcount, private, _count)) { > - int i; > + int i, nr_pages = 1 << private; > > - for (i = 0; i < (1 << private); ++i) { > + for (i = 0; i < nr_pages; ++i) { > /* > * According to combination of > * MAX_ORDER and size of cyclic > @@ -4318,6 +4318,9 @@ __exclude_unnecessary_pages(unsigned long mem_map, > clear_bit_on_2nd_bitmap_for_kernel(pfn + i); > } > pfn_free += i; > + > + pfn += nr_pages - 1; > + mem_map += (nr_pages - 1) * SIZE(page); > } > /* > * Exclude the cache page without the private page. > -- > 1.8.1.4 > > > > _______________________________________________ > kexec mailing list > kexec at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec