On 6/20/20 9:10 PM, Derek Su wrote:
To reduce the guest's downtime during checkpoint, migrate dirty
ram pages as many as possible before colo checkpoint.
If the iteration count reaches COLO_RAM_MIGRATE_ITERATION_MAX or
ram pending size is lower than 'x-colo-migrate-ram-threshold',
stop the ram migration and colo checkpoint.
Signed-off-by: Derek Su <dere...@qnap.com>
---
migration/colo.c | 79 ++++++++++++++++++++++++++++++++++++++++++
migration/migration.c | 20 +++++++++++
migration/trace-events | 2 ++
monitor/hmp-cmds.c | 8 +++++
qapi/migration.json | 18 ++++++++--
5 files changed, 125 insertions(+), 2 deletions(-)
Focusing just on UI,
+++ b/qapi/migration.json
@@ -600,6 +600,9 @@
# @x-checkpoint-delay: The delay time (in ms) between two COLO checkpoints in
# periodic mode. (Since 2.8)
#
+# @x-colo-migrate-ram-threshold: the threshold (in bytes) of the COLO ram
migration's
Long line, please wrap prior to 80 columns.
+# pending size before COLO checkpoint. (Since
5.0)
s/5.0/5.1/
+#
# @block-incremental: Affects how much storage is migrated when the
# block migration capability is enabled. When false, the
entire
# storage backing chain is migrated into a flattened
image at
@@ -651,7 +654,8 @@
'cpu-throttle-initial', 'cpu-throttle-increment',
'cpu-throttle-tailslow',
'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
- 'downtime-limit', 'x-checkpoint-delay', 'block-incremental',
+ 'downtime-limit', 'x-checkpoint-delay',
+ 'x-colo-migrate-ram-threshold', 'block-incremental',
'multifd-channels',
'xbzrle-cache-size', 'max-postcopy-bandwidth',
'max-cpu-throttle', 'multifd-compression',
@@ -740,6 +744,9 @@
#
# @x-checkpoint-delay: the delay time between two COLO checkpoints. (Since
2.8)
#
+# @x-colo-migrate-ram-threshold: the threshold in bytes of the COLO ram
migration's
+# pending size before COLO checkpoint. (Since
5.0)
+#
Ditto.
@@ -1116,12 +1128,14 @@
#
# @vmstate-loaded: VM's state has been loaded by SVM.
#
+# @migrate-ram: Send dirty pages as many as possible before COLO checkpoint.
+#
Missing a notation that migrate-ram is since 5.1.
# Since: 2.8
##
{ 'enum': 'COLOMessage',
'data': [ 'checkpoint-ready', 'checkpoint-request', 'checkpoint-reply',
'vmstate-send', 'vmstate-size', 'vmstate-received',
- 'vmstate-loaded' ] }
+ 'vmstate-loaded', 'migrate-ram' ] }
##
# @COLOMode:
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org