-
Notifications
You must be signed in to change notification settings - Fork 18
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
udosteinberg
wants to merge
25
commits into
TUD-OS:master
Choose a base branch
from
IntelLabs:livemigration
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Livemigration #39
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
…w live migration code.
…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.
Very cool. Give me some time to review this! |
what's the status here? |
@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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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".