migration: Refactor auto-converge capability logic

Check if block migration is running before throttling
guest down in auto-converge way.

Note that this modification is kind of like code clean,
because block migration does not depend on auto-converge
capability, so the order of checks can be adjusted.

Signed-off-by: Hyman Huang(黄勇) <yong.huang@smartx.com>
Acked-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-Id: <168618975839.6361.17407633874747688653-5@git.sr.ht>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Hyman Huang(黄勇) 2023-06-07 23:32:51 +08:00 committed by Juan Quintela
parent dc62395557
commit bb9993c672
1 changed files with 5 additions and 1 deletions

View File

@ -995,7 +995,11 @@ static void migration_trigger_throttle(RAMState *rs)
/* During block migration the auto-converge logic incorrectly detects /* During block migration the auto-converge logic incorrectly detects
* that ram migration makes no progress. Avoid this by disabling the * that ram migration makes no progress. Avoid this by disabling the
* throttling logic during the bulk phase of block migration. */ * throttling logic during the bulk phase of block migration. */
if (migrate_auto_converge() && !blk_mig_bulk_active()) { if (blk_mig_bulk_active()) {
return;
}
if (migrate_auto_converge()) {
/* The following detection logic can be refined later. For now: /* The following detection logic can be refined later. For now:
Check to see if the ratio between dirtied bytes and the approx. Check to see if the ratio between dirtied bytes and the approx.
amount of bytes that just got transferred since the last time amount of bytes that just got transferred since the last time