Features/Migration: Difference between revisions

From QEMU
No edit summary
Line 24: Line 24:
** we can remove several layers of buffering (due to the mainloop design, we are forced to have several layers of buffering).
** we can remove several layers of buffering (due to the mainloop design, we are forced to have several layers of buffering).


* split foo_live_migration_calls() onto its parts.  Other devices that don't have live migration also need the setup part
* split foo_live_migration_calls() onto its parts.  Other devices that don't have live migration also need the setup part (iwhm, device assignment).
  (iwhm, device assignment).
** foo_setup()    (was stage 1)
** foo_setup()    (was stage 1)
** foo_save_live() (was stage 2)
** foo_save_live() (was stage 2)
Line 36: Line 35:


* fix migration during reboot (haven't triaged what data is missing)
* fix migration during reboot (haven't triaged what data is missing)
* port rest of devices to VMState (several of them are already done, but they are on my local tree and not upstream).


== TODO Long Term ==  
== TODO Long Term ==  

Revision as of 18:08, 15 February 2011

Summary

Migration improvementes for 0.15.

Owner

  • Name: Juan Quintela
  • Email: quintela@redhat.com

Detailed Summary

Migration and live migration have several parts that are suboptimal. This describes way to improve it.

Status

This is the roadmap, features are integrated upstream as they are done.

TODO Short Term

  • split migration in its own thread/subroutine. This allows several improments:
    • monitor can be used on migration target
    • vcpus/iothreads can work while live migration part is working
    • we can remove several layers of buffering (due to the mainloop design, we are forced to have several layers of buffering).
  • split foo_live_migration_calls() onto its parts. Other devices that don't have live migration also need the setup part (iwhm, device assignment).
    • foo_setup() (was stage 1)
    • foo_save_live() (was stage 2)
    • foo_save_rest() (was stage 3, better name needed)
    • foo_cancel() (was stage -1)
  • Once previous split is done, we can create the setup of live handlers for the ones that really exit, not for the rest of them.
  • fix migration while using a cdrom (cdrom is not opened correctly on target)
  • fix migration during reboot (haven't triaged what data is missing)
  • port rest of devices to VMState (several of them are already done, but they are on my local tree and not upstream).

TODO Long Term

  • Add size + checksum to sections. This is one incompatible change and needs further thought.
  • Make embedded sections real sections, with headers. This will allow us to version internal state.
  • Unit testing. In colaboration with qdev, allow devices to be tested alone with old/new migration versions/subsections.
  • define target machine from the monitor. This will allow us to migrate the configuration of the machine from source to destination, instead of having to had an identical command line in both places.

Code

The code still not merged is currently kept in several branches of this git repository: