[PATCH 03/16] [PATCH v3 3/12] Change the function related to excluding unnecessary pages.
Atsushi Kumagai
kumagai-atsushi at mxc.nes.nec.co.jp
Mon Sep 3 03:37:38 EDT 2012
Hello HATAYAMA-san,
On Mon, 03 Sep 2012 11:13:35 +0900 (JST)
HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:
> From: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
> 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.
Thank you for pointing out my mistake.
I'll merge the fix below into [PATCH 03/16].
Thanks
Atsushi Kumagai
> 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
More information about the kexec
mailing list