* leirao (lei....@intel.com) wrote: > From: "Rao, Lei" <lei....@intel.com> > > If we don't disable the feature of auto-converge for live migration > before entering COLO mode, it will continue to run with COLO running, > and eventually the system will hang due to the CPU throttle reaching > DEFAULT_MIGRATE_MAX_CPU_THROTTLE. > > Signed-off-by: Lei Rao <lei....@intel.com>
I don't think that's the right answer, because it would seem reasonable to use auto-converge to ensure that a COLO snapshot succeeded by limiting guest CPU time. Is the right fix here to reset the state of the auto-converge counters at the start of each colo snapshot? Dave > --- > migration/migration.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/migration/migration.c b/migration/migration.c > index 31417ce..6ab37e5 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -1673,6 +1673,20 @@ void migrate_set_block_enabled(bool value, Error > **errp) > qapi_free_MigrationCapabilityStatusList(cap); > } > > +static void colo_auto_converge_enabled(bool value, Error **errp) > +{ > + MigrationCapabilityStatusList *cap = NULL; > + > + if (migrate_colo_enabled() && migrate_auto_converge()) { > + QAPI_LIST_PREPEND(cap, > + migrate_cap_add(MIGRATION_CAPABILITY_AUTO_CONVERGE, > + value)); > + qmp_migrate_set_capabilities(cap, errp); > + qapi_free_MigrationCapabilityStatusList(cap); > + } > + cpu_throttle_stop(); > +} > + > static void migrate_set_block_incremental(MigrationState *s, bool value) > { > s->parameters.block_incremental = value; > @@ -3401,7 +3415,7 @@ static MigIterateState > migration_iteration_run(MigrationState *s) > static void migration_iteration_finish(MigrationState *s) > { > /* If we enabled cpu throttling for auto-converge, turn it off. */ > - cpu_throttle_stop(); > + colo_auto_converge_enabled(false, &error_abort); > > qemu_mutex_lock_iothread(); > switch (s->state) { > -- > 1.8.3.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK