[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RESEND v6 5/5] migration: Reduce time of loading non-iterable vms
From: |
Chuang Xu |
Subject: |
[PATCH RESEND v6 5/5] migration: Reduce time of loading non-iterable vmstate |
Date: |
Fri, 3 Mar 2023 18:56:55 +0800 |
The duration of loading non-iterable vmstate accounts for a significant
portion of downtime (starting with the timestamp of source qemu stop and
ending with the timestamp of target qemu start). Most of the time is spent
committing memory region changes repeatedly.
This patch packs all the changes to memory region during the period of
loading non-iterable vmstate in a single memory transaction. With the
increase of devices, this patch will greatly improve the performance.
Here are the test1 results:
test info:
- Host
- Intel(R) Xeon(R) Platinum 8362 CPU
- Mellanox Technologies MT28841
- VM
- 32 CPUs 128GB RAM VM
- 8 16-queue vhost-net device
- 16 4-queue vhost-user-blk device.
time of loading non-iterable vmstate downtime
before about 112 ms 285 ms
after about 44 ms 208 ms
In test2, we keep the number of the device the same as test1, reduce the
number of queues per device:
Here are the test2 results:
test info:
- Host
- Intel(R) Xeon(R) Platinum 8362 CPU
- Mellanox Technologies MT28841
- VM
- 32 CPUs 128GB RAM VM
- 8 1-queue vhost-net device
- 16 1-queue vhost-user-blk device.
time of loading non-iterable vmstate downtime
before about 65 ms about 151 ms
after about 30 ms about 110 ms
In test3, we keep the number of queues per device the same as test1, reduce
the number of devices:
Here are the test3 results:
test info:
- Host
- Intel(R) Xeon(R) Platinum 8362 CPU
- Mellanox Technologies MT28841
- VM
- 32 CPUs 128GB RAM VM
- 1 16-queue vhost-net device
- 1 4-queue vhost-user-blk device.
time of loading non-iterable vmstate downtime
before about 24 ms about 51 ms
after about 12 ms about 38 ms
As we can see from the test results above, both the number of queues and
the number of devices have a great impact on the time of loading non-iterable
vmstate. The growth of the number of devices and queues will lead to more
mr commits, and the time consumption caused by the flatview reconstruction
will also increase.
Signed-off-by: Chuang Xu <xuchuangxclwt@bytedance.com>
---
migration/savevm.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/migration/savevm.c b/migration/savevm.c
index b5e6962bb6..3dd9daabd8 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2770,6 +2770,7 @@ out:
goto retry;
}
}
+
return ret;
}
@@ -2795,7 +2796,25 @@ int qemu_loadvm_state(QEMUFile *f)
cpu_synchronize_all_pre_loadvm();
+ /*
+ * Call memory_region_transaction_begin() before loading vmstate.
+ * This call is paired with memory_region_transaction_commit() at
+ * the end of qemu_loadvm_state_main(), in order to pack all the
+ * changes to memory region during the period of loading
+ * non-iterable vmstate in a single memory transaction.
+ * This operation will reduce time of loading non-iterable vmstate
+ */
+ memory_region_transaction_begin();
+
ret = qemu_loadvm_state_main(f, mis);
+
+ /*
+ * Call memory_region_transaction_commit() after loading vmstate.
+ * At this point, qemu actually completes all the previous memory
+ * region transactions.
+ */
+ memory_region_transaction_commit();
+
qemu_event_set(&mis->main_thread_load_event);
trace_qemu_loadvm_state_post_main(ret);
--
2.20.1
- [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/03
- [PATCH RESEND v6 2/5] rcu: Introduce rcu_read_is_locked(), Chuang Xu, 2023/03/03
- [PATCH RESEND v6 4/5] memory: Add sanity check in address_space_to_flatview, Chuang Xu, 2023/03/03
- [PATCH RESEND v6 1/5] memory: Reference as->current_map directly in memory commit, Chuang Xu, 2023/03/03
- [PATCH RESEND v6 3/5] memory: Introduce memory_region_transaction_do_commit(), Chuang Xu, 2023/03/03
- [PATCH RESEND v6 5/5] migration: Reduce time of loading non-iterable vmstate,
Chuang Xu <=
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Peter Xu, 2023/03/05
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/06
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Peter Xu, 2023/03/06
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/07
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Peter Xu, 2023/03/07
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/08
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Peter Xu, 2023/03/08
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/08
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Peter Xu, 2023/03/08
- Re: [PATCH RESEND v6 0/5] migration: reduce time of loading non-iterable vmstate, Chuang Xu, 2023/03/09