[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 15/30] migration: Add property x-postcopy-preempt-break-huge
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 15/30] migration: Add property x-postcopy-preempt-break-huge |
Date: |
Wed, 20 Jul 2022 12:19:11 +0100 |
From: Peter Xu <peterx@redhat.com>
Add a property field 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.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Manish Mishra <manish.mishra@nutanix.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20220707185511.27366-1-peterx@redhat.com>
Signed-off-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 427d4de185..864164ad96 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -4363,6 +4363,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 ae4ffd3454..cdad8aceaa 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 65b08c4edb..7cbe9c310d 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.36.1
- [PULL 05/30] accel/kvm/kvm-all: Introduce kvm_dirty_ring_size function, (continued)
- [PULL 05/30] accel/kvm/kvm-all: Introduce kvm_dirty_ring_size function, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 02/30] cpus: Introduce cpu_list_generation_id, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 06/30] softmmu/dirtylimit: Implement virtual CPU throttle, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 13/30] migration: Postcopy recover with preempt enabled, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 10/30] migration: Add postcopy-preempt capability, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 07/30] softmmu/dirtylimit: Implement dirty page rate limit, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 12/30] migration: Postcopy preemption enablement, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 14/30] migration: Create the postcopy preempt channel asynchronously, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 11/30] migration: Postcopy preemption preparation on channel creation, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 16/30] migration: Add helpers to detect TLS capability, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 15/30] migration: Add property x-postcopy-preempt-break-huge,
Dr. David Alan Gilbert (git) <=
- [PULL 19/30] migration: Respect postcopy request order in preemption mode, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 22/30] tests: Add postcopy tls recovery migration test, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 18/30] migration: Enable TLS for preempt channel, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 09/30] multifd: Copy pages before compressing them with zlib, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 20/30] tests: Move MigrateCommon upper, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 24/30] migration: remove unreachable code after reading data, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 17/30] migration: Export tls-[creds|hostname|authz] params to cmdline too, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 26/30] Add dirty-sync-missed-zero-copy migration stat, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 21/30] tests: Add postcopy tls migration test, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 23/30] tests: Add postcopy preempt tests, Dr. David Alan Gilbert (git), 2022/07/20