aboutsummaryrefslogtreecommitdiff
path: root/migration/ram.c
diff options
context:
space:
mode:
authorPeter Lieven <pl@kamp.de>2017-09-26 12:33:16 +0200
committerDr. David Alan Gilbert <dgilbert@redhat.com>2017-09-27 11:27:14 +0100
commit9ac78b6171bec47083a9b6ce88dc1f114caea2f9 (patch)
tree5a7329bb5f0bd8c1f1fa9a02a960326dd992b44e /migration/ram.c
parent31bc1d8481af414cfa2857f905e40f7d8e6d5b2e (diff)
downloadqemu-9ac78b6171bec47083a9b6ce88dc1f114caea2f9.zip
qemu-9ac78b6171bec47083a9b6ce88dc1f114caea2f9.tar.gz
qemu-9ac78b6171bec47083a9b6ce88dc1f114caea2f9.tar.bz2
migration: disable auto-converge during bulk block migration
auto-converge and block migration currently do not play well together. During block migration the auto-converge logic detects that ram migration makes no progress and thus throttles down the vm until it nearly stalls completely. Avoid this by disabling the throttling logic during the bulk phase of the block migration. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Lieven <pl@kamp.de> Message-Id: <1506421996-12513-1-git-send-email-pl@kamp.de> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/ram.c')
-rw-r--r--migration/ram.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/migration/ram.c b/migration/ram.c
index 88ca69e..b83f897 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -46,6 +46,7 @@
#include "exec/ram_addr.h"
#include "qemu/rcu_queue.h"
#include "migration/colo.h"
+#include "migration/block.h"
/***********************************************************/
/* ram save/restore */
@@ -825,7 +826,10 @@ static void migration_bitmap_sync(RAMState *rs)
/ (end_time - rs->time_last_bitmap_sync);
bytes_xfer_now = ram_counters.transferred;
- if (migrate_auto_converge()) {
+ /* During block migration the auto-converge logic incorrectly detects
+ * that ram migration makes no progress. Avoid this by disabling the
+ * throttling logic during the bulk phase of block migration. */
+ if (migrate_auto_converge() && !blk_mig_bulk_active()) {
/* The following detection logic can be refined later. For now:
Check to see if the dirtied bytes is 50% more than the approx.
amount of bytes that just got transferred since the last time we