[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
- Re: [PATCH v5 15/21] migration: Parameter x-postcopy-preempt-break-huge,
Dr. David Alan Gilbert <=