Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Livemigration #39

Open
wants to merge 25 commits into
base: master
Choose a base branch
from
Open

Livemigration #39

wants to merge 25 commits into from

Conversation

udosteinberg
Copy link
Contributor

The following series of patches implements virtual-machine live migration and the necessary ACPI hotplug code for the Seoul VMM. A description of the concepts and mechanisms can be found in Jacek's thesis titled "Live Migration of Virtual Machines between Heterogeneous Host Systems".

Jacek Galowicz added 25 commits November 15, 2013 12:28
This is needed for:

- luring the VCPU recall context into a blocking semaphore to pause its execution at end of migration.
- unlocking the VCPU before boot to let it run into recall context and restoring it to exact state like on the source migration host.
This is needed for live migration.

The general semantic works like this:
- The caller will ask for some RW-mapped memory range
- This range will be found in the host op
- It will be remapped as read-only and reported back to the caller

This routine uses a pointer which is moved round-robin through the guest memory range.

WARNING: Assumes NOVA as underlying kernel. Was not ported to UNIX.
Added a CpuMessage to add arbitrary offsets to the VCPU's timestamp counter.
This is needed for live migration.
Devices will be attached to this.
The migration code uses this to to communicate with classes of devices.
Devices can write their state into restore messages and also read it back to restore.
…eval.

The live migration module needs this to tell the target host what kind of VMM has to be started.
…which was in use in the Vancouver project on NUL to do host app networking.
This is only compiled into the project and not in use, yet.
The next commit will embedd these mechanisms into main.cc
…d backspace key press.

As this migrates to a hard coded destination host, this could also be done more elegant:
- By a VMCALL from the VM, carrying a magic number in the eax register and the destination host in the ebx register.
- By some VM manager application, triggering the migration event via some IPC event.
- By a fancy ncurses menu, prompting the user for the destination host IP.
ACPI events can be rised with this, fixed and GP events.
The restore procedure does automatically propagate its new position within the LAN.
… methods.

This has been done in the Migration class constructor, but this was too early after reordering VMM parameters for live migration retrieval.
Users of the memory bus can now determine if they are working with actual guest-physmem.
From now on, only actual guest-physmem will be tracked.
It will now only check memory ranges which are actual guest-physmem.
In general the transfer has demonstrated to be errorfree.
However, checksumming is useful to find out if changes on the tracking mechanism etc. provoke data corruption.
The last resend round did tend to be uncomplete in the scenario of both slow ethernet and large Writeable Working Sets.
@blitz
Copy link
Contributor

blitz commented Nov 18, 2013

Very cool. Give me some time to review this!

@tpressure
Copy link

what's the status here?

@blitz
Copy link
Contributor

blitz commented Dec 11, 2016

@tpressure You can consider this repo abandoned. I have no time to work on this, so feel free to fork and integrate any patches you consider useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants