This patch set provides a new method for throttling a vcpu and makes use of said method to dynamically increase cpu throttling during an autoconverge migration until the migration completes.
The method used here for throttling vcpus is likely not the best. However, I believe that it is preferable to what is used for autoconverge today. This work is related to the following discussion: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg00287.html Changelog ----------- v4 - Switch to a static timer - Use QEMU_CLOCK_VIRTUAL_RT instead of QEMU_CLOCK_REALTIME - Get rid of throttle_timer_stop, use throttle_percentage = 0 instead - Calculate throttle_ratio directly in cpu_throttle_thread - Consolidate timer mod operations to single function - Remove some unneeded cpu_throttle_active() checks - Check for throttle_percentage == 0 in cpu_throttle_thread - Change throttle_percentage to unsigned int - Renamed cpu_throttle_timer_pop to cpu_throttle_timer_tick v3 - Cpu throttling parameters moved from CPUState to global scope - Throttling interface now uses a percentage instead of ratio - Migration parameters added to allow tweaking of how aggressive throttling is - Add throttle active check to the throttle stop routine. - Remove asserts from throttle start/stop functions and instead force the input to fall within the acceptable range - Rename cpu_throttle_start to cpu_throttle_set to better describe its purpose - Remove unneeded object casts - Fixed monitor output formatting - Comment cleanups v2 - Add cpu throttle ratio output to hmp/qmp info/query migrate commands v1 - Initial Jason J. Herne (5): cpu: Provide vcpu throttling interface migration: Parameters for auto-converge cpu throttling migration: Dynamic cpu throttling for auto-converge qmp/hmp: Add throttle ratio to query-migrate and info migrate migration: Disambiguate MAX_THROTTLE arch_init.c | 88 ++++++++++++++++++--------------------------------- cpus.c | 66 ++++++++++++++++++++++++++++++++++++++ hmp.c | 21 ++++++++++++ include/qom/cpu.h | 38 ++++++++++++++++++++++ migration/migration.c | 57 +++++++++++++++++++++++++++++++-- qapi-schema.json | 40 ++++++++++++++++++++--- 6 files changed, 246 insertions(+), 64 deletions(-) -- 1.9.1