From: Atsushi Kumagai <kumagai-atsushi@xxxxxxxxxxxxxxxxx> Subject: [PATCH 03/16] [PATCH v3 3/12] Change the function related to excluding unnecessary pages. Date: Thu, 30 Aug 2012 16:47:01 +0900 > From: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp> > Date: Thu, 23 Aug 2012 17:49:16 +0900 > Subject: [PATCH 03/16] [PATCH v3 3/12] Change the function related to excluding unnecessary pages. <cut> > +int > +exclude_unnecessary_pages_cyclic(void) > +{ > + unsigned int mm; > + struct mem_map_data *mmd; > + > + /* > + * Copy 1st-bitmap to 2nd-bitmap. > + */ > + copy_bitmap_cyclic(); > + > + if (info->dump_level & DL_EXCLUDE_FREE) > + if (!exclude_free_page()) > + return FALSE; > + > + /* > + * Exclude cache pages, cache private pages, user data pages, and free pages. > + */ > + if (info->dump_level & DL_EXCLUDE_CACHE || > + info->dump_level & DL_EXCLUDE_CACHE_PRI || > + info->dump_level & DL_EXCLUDE_USER_DATA) { > + for (mm = 0; mm < info->num_mem_map; mm++) { > + > + mmd = &info->mem_map_data[mm]; > + > + if (mmd->mem_map == NOT_MEMMAP_ADDR) > + continue; > + > + if (mmd->pfn_end >= info->cyclic_start_pfn || mmd->pfn_start <= info->cyclic_end_pfn) { > + if (!__exclude_unnecessary_pages(mmd->mem_map, > + mmd->pfn_start, mmd->pfn_end)) > + return FALSE; > + } > + } > + } This patch misses reporting the time consumed for excluding necessary pages. I noticed this during benchmarking. Here is the patch I used at the time, but I wrote this version over your patch set. Report the time consumed for excluding unnecessary pages in cyclic mode Here is the example: [Before] STEP [Excluding free pages ] : 0.500269 seconds STEP [Excluding free pages ] : 0.002081 seconds STEP [Copying data ] : 2.115097 seconds [After] STEP [Excluding free pages ] : 0.002148 seconds STEP [Excluding unnecessary pages] : 0.015641 seconds STEP [Excluding free pages ] : 0.002130 seconds STEP [Excluding unnecessary pages] : 0.024436 seconds STEP [Copying data ] : 0.211287 seconds diff --git a/makedumpfile.c b/makedumpfile.c index 0a43181..caac37b 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -3882,6 +3882,7 @@ exclude_unnecessary_pages_cyclic(void) { unsigned int mm; struct mem_map_data *mmd; + struct timeval tv_start; /* * Copy 1st-bitmap to 2nd-bitmap. @@ -3898,8 +3899,13 @@ exclude_unnecessary_pages_cyclic(void) if (info->dump_level & DL_EXCLUDE_CACHE || info->dump_level & DL_EXCLUDE_CACHE_PRI || info->dump_level & DL_EXCLUDE_USER_DATA) { + + gettimeofday(&tv_start, NULL); + for (mm = 0; mm < info->num_mem_map; mm++) { + print_progress(PROGRESS_UNN_PAGES, mm, info->num_mem_map); + mmd = &info->mem_map_data[mm]; if (mmd->mem_map == NOT_MEMMAP_ADDR) @@ -3911,6 +3917,12 @@ exclude_unnecessary_pages_cyclic(void) return FALSE; } } + + /* + * print [100 %] + */ + print_progress(PROGRESS_UNN_PAGES, info->num_mem_map, info->num_mem_map); + print_execution_time(PROGRESS_UNN_PAGES, &tv_start); } return TRUE; Thanks. HATAYAMA, Daisuke