On 09/01/2015 08:46 AM, Jason J. Herne wrote: > Remove traditional auto-converge static 30ms throttling code and replace it > with a dynamic throttling algorithm. > > Additionally, be more aggressive when deciding when to start throttling. > Previously we waited until four unproductive memory passes. Now we begin > throttling after only two unproductive memory passes. Four seemed quite > arbitrary and only waiting for two passes allows us to complete the migration > faster. > > Signed-off-by: Jason J. Herne <jjhe...@linux.vnet.ibm.com> > Reviewed-by: Matthew Rosato <mjros...@linux.vnet.ibm.com> > --- > arch_init.c | 88 > ++++++++++++++++++--------------------------------- > migration/migration.c | 4 +++ > 2 files changed, 34 insertions(+), 58 deletions(-)
> +static void mig_throttle_guest_down(void) > +{ > + MigrationState *s = migrate_get_current(); > + uint64_t pct_initial = > + s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INITIAL]; > + uint64_t pct_icrement = > + s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INCREMENT]; > + > + /* We have not started throttling yet. Let's start it. */ > + if (!cpu_throttle_active()) { > + cpu_throttle_set(pct_initial); > + } else { > + /* Throttling already on, just increase the rate */ > + cpu_throttle_set(cpu_throttle_get_percentage() + pct_icrement); What happens if the addition results in a percentage larger than 99? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature