All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tao Liu <ltao@redhat.com>
To: Stephen Brennan <stephen.s.brennan@oracle.com>
Cc: yamazaki-msmt@nec.com, k-hagio-ab@nec.com, kexec@lists.infradead.org
Subject: Re: [PATCH makedumpfile 4/9] Introduce a stat for pages retained by extension
Date: Thu, 13 Aug 2026 14:15:03 +1200	[thread overview]
Message-ID: <an0opyG2YuUD-Gez@localhost.localdomain> (raw)
In-Reply-To: <20260714004550.3698175-5-stephen.s.brennan@oracle.com>

Hi Stephen,

On Mon, Jul 13, 2026 at 05:45:37PM -0700, Stephen Brennan wrote:
> Extensions can mark pages to be excluded, but those pages may already be
> excluded due to the dump level. We have a statistic to count pages
> excluded by extensions. It counts only pages which were excluded because
> no other criteria excluded them.
> 
> Extensions can mark pages to be retained, but there is no statistic to
> count them. Adding a counter to the code as-is would not give us the
> value that we care about. Just as above, pages marked for inclusion may
> have been included anyway due to the dump-level configuration. The most
> useful statistic is the one that tells us how many pages were included
> by the extension, which would not have been included otherwise.
> 
> Introduce a statistic that counts this amount.  To do so, we have to
> skip the short-circuit evaluation when PG_INCLUDE is returned. This
> seems like a worthwhile trade-off, since the dump-level checks are all
> reasonably efficient.
> 
> Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
> ---
>  makedumpfile.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/makedumpfile.c b/makedumpfile.c
> index a4c9bbf..cf6a38f 100644
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -106,6 +106,7 @@ mdf_pfn_t pfn_elf_excluded;
>  mdf_pfn_t pfn_extension;
>  
>  mdf_pfn_t num_dumped;
> +mdf_pfn_t num_extension_retained;
>  
>  int retcd = FAILED;	/* return code */
>  
> @@ -6638,8 +6639,6 @@ check_order:
>  		 * makedumpfile extensions
>  		 */
>  		filter_pg = run_extension_callback(pfn, pcache, &i);
> -		if (filter_pg == PG_INCLUDE)
> -			continue;
>  
>  		/*
>  		 * Exclude the free page managed by a buddy
> @@ -6722,6 +6721,13 @@ check_order:
>  		else
>  			continue;
>  
> +		if (filter_pg == PG_INCLUDE) {
> +			/* Account pages which would have been excluded, but were
> +			 * retained by an extension. */
> +			num_extension_retained += nr_pages;
> +			continue;

Maybe I'm wrong, from the code we are trying to retain nr_pages, don't
we need to do
			pfn += nr_pages
to update the pfn of the next for-loop?

> +		}
> +
>  		/*
>  		 * Execute exclusion
>  		 */
> @@ -8265,6 +8271,7 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
>  	if (info->flag_cyclic) {
>  		pfn_zero = pfn_cache = pfn_cache_private = 0;
>  		pfn_user = pfn_free = pfn_hwpoison = pfn_offline = pfn_extension = 0;
> +		num_extension_retained = 0;
>  		pfn_memhole = info->max_mapnr;
>  	}
>  
> @@ -9610,6 +9617,7 @@ write_kdump_pages_and_bitmap_cyclic(struct cache_data *cd_header, struct cache_d
>  		 */
>  		pfn_zero = pfn_cache = pfn_cache_private = 0;
>  		pfn_user = pfn_free = pfn_hwpoison = pfn_offline = pfn_extension = 0;
> +		num_extension_retained = 0;
>  		pfn_memhole = info->max_mapnr;
>  
>  		/*
> @@ -10575,6 +10583,7 @@ print_report(void)
>  	REPORT_MSG("    Hwpoison pages          : 0x%016llx\n", pfn_hwpoison);
>  	REPORT_MSG("    Offline pages           : 0x%016llx\n", pfn_offline);
>  	REPORT_MSG("    Extension filter pages  : 0x%016llx\n", pfn_extension);
> +	REPORT_MSG("  Retained by extension     : 0x%016llx\n", num_extension_retained);
>  	REPORT_MSG("  Remaining pages  : 0x%016llx\n",
>  	    pfn_original - pfn_excluded);
> 
I suggest to reorder the "print_report" as follows:

Original pages  :
  Excluded pages   :
    Pages filled with zero  :
    Non-private cache pages :
    Private cache pages     :
    User process data pages :
    Free pages              :
    Hwpoison pages          :
    Offline pages           :
    Extension filter pages  :
  Remaining pages  :
    Extension retain pages  :

IMHO, this is clearer to represent "Original pages" == "Excluded pages" + "Remaining pages";
and "Extension retained pages" is a subset of "Remaining pages".

Thanks,
Tao Liu
> -- 
> 2.47.3
> 



  reply	other threads:[~2026-08-13  2:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-14  0:45 [PATCH makedumpfile 0/9] Improvements to makedumpfile extensions, plus userspace stack tracing extension Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 1/9] Do not call extensions for tail pages Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 2/9] Honor CFLAGS in extension/Makefile Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 3/9] Share page information with extension callbacks Stephen Brennan
2026-08-12  4:01   ` Tao Liu
2026-07-14  0:45 ` [PATCH makedumpfile 4/9] Introduce a stat for pages retained by extension Stephen Brennan
2026-08-13  2:15   ` Tao Liu [this message]
2026-07-14  0:45 ` [PATCH makedumpfile 5/9] Move page checks into makedumpfile.h Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 6/9] Simplify arguments for page checks Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 7/9] Add PG_INCLUDE_HEAD extension return status Stephen Brennan
2026-08-07 16:24   ` Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 8/9] Add userstack extension Stephen Brennan
2026-07-14  0:45 ` [PATCH makedumpfile 9/9] Add elfheader extension Stephen Brennan
2026-08-03 15:55 ` [PATCH makedumpfile 0/9] Improvements to makedumpfile extensions, plus userspace stack tracing extension Stephen Brennan
2026-08-04  4:43   ` Tao Liu
2026-08-07  1:52 ` HAGIO KAZUHITO(萩尾 一仁)
2026-08-07  7:57   ` Tao Liu
2026-08-07 21:24     ` Stephen Brennan
2026-08-08  4:44       ` HAGIO KAZUHITO(萩尾 一仁)
2026-08-11  6:11         ` Tao Liu
2026-08-12  1:31           ` HAGIO KAZUHITO(萩尾 一仁)
2026-08-12  5:07             ` Tao Liu
2026-08-13  2:51               ` Tao Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=an0opyG2YuUD-Gez@localhost.localdomain \
    --to=ltao@redhat.com \
    --cc=k-hagio-ab@nec.com \
    --cc=kexec@lists.infradead.org \
    --cc=stephen.s.brennan@oracle.com \
    --cc=yamazaki-msmt@nec.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.