From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> Hi, This is an experimental adition to COLO, based off the colo-v1.5-developing branch. It's not ready for inclusion.
The first patch, adds a 'hybrid mode' where the SVM is sent checkpoints from the primary but does not run, and is thus much similar to a normal checkpoint setup. This mode is entered dynamically based on the checkpoint lengths; if the average checkpoint length drops below the 'colo_passive_limit' it flips into this mode running checkpoints each of 'colo_passive_time' ms in length. After 'colo_passive_count' checkpoints, it runs 5 COLO cycles again and then decides what to do based on the same limit as before, thus giving it a chance to return to COLO mode. A simple demo of this is to: a) ssh into the guest b) Open a top on the SVM host c) start a heavy CPU load in the guest (e.g. md5sum /dev/zero &) You see the QEMU at 100% in the host top d) now run 'top' in the guest this causes checkpoint miscomparisons every time top redisplays. e) change the top redisplay time to something short, e.g. type d0.2 and hit return f) After a few seconds it flips into passive mode and you see the CPU load on the SVM drop. (Watching the added trace-events also shows this happening). The other patches make all the COLO parameters changeable via migrate_set_parameter (I wasn't sure what to call the time after the miscompare - I called it 'relax time') (This work has been partially funded by the EU Orbit project: see http://www.orbitproject.eu/about/ ) Dave Dr. David Alan Gilbert (3): COLO: Hybrid mode Parameterise min/max/relax time COLO: Parameterise background RAM transfer limit hmp-commands.hx | 15 ----- hmp.c | 65 +++++++++++++++++-- hmp.h | 1 - migration/colo.c | 170 ++++++++++++++++++++++++++++++++++++------------- migration/migration.c | 139 +++++++++++++++++++++++++++++++++++++++- qapi-schema.json | 56 +++++++++++----- qmp-commands.hx | 31 +++------ stubs/migration-colo.c | 4 -- trace-events | 8 +++ 9 files changed, 378 insertions(+), 111 deletions(-) -- 2.4.3