qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v5 15/21] migration: Parameter x-postcopy-preempt-break-huge


From: Dr. David Alan Gilbert
Subject: Re: [PATCH v5 15/21] migration: Parameter x-postcopy-preempt-break-huge
Date: Thu, 12 May 2022 18:42:54 +0100
User-agent: Mutt/2.2.1 (2022-02-19)

* Peter Xu (peterx@redhat.com) wrote:
> Add a parameter that can conditionally disable the "break sending huge
> page" behavior in postcopy preemption.  By default it's enabled.
> 
> It should only be used for debugging purposes, and we should never remove
> the "x-" prefix.

This is actually a 'property' and not a 'Parameter' isn't it?

> Signed-off-by: Peter Xu <peterx@redhat.com>

Other than the title,


Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/migration.c | 2 ++
>  migration/migration.h | 7 +++++++
>  migration/ram.c       | 7 +++++++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/migration/migration.c b/migration/migration.c
> index cce741e20e..cd9650f2e2 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -4329,6 +4329,8 @@ static Property migration_properties[] = {
>      DEFINE_PROP_SIZE("announce-step", MigrationState,
>                        parameters.announce_step,
>                        DEFAULT_MIGRATE_ANNOUNCE_STEP),
> +    DEFINE_PROP_BOOL("x-postcopy-preempt-break-huge", MigrationState,
> +                      postcopy_preempt_break_huge, true),
>  
>      /* Migration capabilities */
>      DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
> diff --git a/migration/migration.h b/migration/migration.h
> index f898b8547a..6ee520642f 100644
> --- a/migration/migration.h
> +++ b/migration/migration.h
> @@ -340,6 +340,13 @@ struct MigrationState {
>      bool send_configuration;
>      /* Whether we send section footer during migration */
>      bool send_section_footer;
> +    /*
> +     * Whether we allow break sending huge pages when postcopy preempt is
> +     * enabled.  When disabled, we won't interrupt precopy within sending a
> +     * host huge page, which is the old behavior of vanilla postcopy.
> +     * NOTE: this parameter is ignored if postcopy preempt is not enabled.
> +     */
> +    bool postcopy_preempt_break_huge;
>  
>      /* Needed by postcopy-pause state */
>      QemuSemaphore postcopy_pause_sem;
> diff --git a/migration/ram.c b/migration/ram.c
> index a4b39e3675..f3a79c8556 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -2266,11 +2266,18 @@ static int ram_save_target_page(RAMState *rs, 
> PageSearchStatus *pss)
>  
>  static bool postcopy_needs_preempt(RAMState *rs, PageSearchStatus *pss)
>  {
> +    MigrationState *ms = migrate_get_current();
> +
>      /* Not enabled eager preempt?  Then never do that. */
>      if (!migrate_postcopy_preempt()) {
>          return false;
>      }
>  
> +    /* If the user explicitly disabled breaking of huge page, skip */
> +    if (!ms->postcopy_preempt_break_huge) {
> +        return false;
> +    }
> +
>      /* If the ramblock we're sending is a small page?  Never bother. */
>      if (qemu_ram_pagesize(pss->block) == TARGET_PAGE_SIZE) {
>          return false;
> -- 
> 2.32.0
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK




reply via email to

[Prev in Thread] Current Thread [Next in Thread]