[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 21/25] migration: Parameter x-postcopy-preempt-break-huge
From: |
Peter Xu |
Subject: |
[PATCH v2 21/25] migration: Parameter x-postcopy-preempt-break-huge |
Date: |
Tue, 1 Mar 2022 16:39:21 +0800 |
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.
Signed-off-by: Peter Xu <peterx@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 78e1e6bfb9..cd4a150202 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -4325,6 +4325,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 53dfd9be38..ede8aaac01 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
- [PATCH v2 10/25] migration: Enlarge postcopy recovery to capture !-EIO too, (continued)
- [PATCH v2 10/25] migration: Enlarge postcopy recovery to capture !-EIO too, Peter Xu, 2022/03/01
- [PATCH v2 11/25] migration: postcopy_pause_fault_thread() never fails, Peter Xu, 2022/03/01
- [PATCH v2 14/25] migration: Add migration_incoming_transport_cleanup(), Peter Xu, 2022/03/01
- [PATCH v2 15/25] migration: Allow migrate-recover to run multiple times, Peter Xu, 2022/03/01
- [PATCH v2 13/25] migration: Move channel setup out of postcopy_try_recover(), Peter Xu, 2022/03/01
- [PATCH v2 16/25] migration: Add postcopy-preempt capability, Peter Xu, 2022/03/01
- [PATCH v2 17/25] migration: Postcopy preemption preparation on channel creation, Peter Xu, 2022/03/01
- [PATCH v2 18/25] migration: Postcopy preemption enablement, Peter Xu, 2022/03/01
- [PATCH v2 19/25] migration: Postcopy recover with preempt enabled, Peter Xu, 2022/03/01
- [PATCH v2 12/25] migration: Export ram_load_postcopy(), Peter Xu, 2022/03/01
- [PATCH v2 21/25] migration: Parameter x-postcopy-preempt-break-huge,
Peter Xu <=
- [PATCH v2 22/25] migration: Add helpers to detect TLS capability, Peter Xu, 2022/03/01
- [PATCH v2 23/25] migration: Fail postcopy preempt with TLS for now, Peter Xu, 2022/03/01
- [PATCH v2 20/25] migration: Create the postcopy preempt channel asynchronously, Peter Xu, 2022/03/01
- [PATCH v2 25/25] tests: Pass in MigrateStart** into test_migrate_start(), Peter Xu, 2022/03/01
- [PATCH v2 24/25] tests: Add postcopy preempt test, Peter Xu, 2022/03/01
- Re: [PATCH v2 00/25] migration: Postcopy Preemption, Daniel P . Berrangé, 2022/03/01