-
Notifications
You must be signed in to change notification settings - Fork 32
[RFC] Save/restore state design proposal #118
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
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Laura Loghin <lauralg@amazon.com>
|
That means we need to move versionize crate to rust vmm, and get an agreement about data structures versions? |
|
Moving the versionize crate to rust-vmm shouldn't be required, but yes we will need to get an agreement on the structures versions. Other option would be to not have the explicit versionize support in rust-vmm crates, and let the VMMs define their own |
It's not easy to cooperate several vmms about the data structure versioning. |
|
As we have offline discussed with @lauralt, the major challenge is to cooperate on the data structure version numbering. One possible solution is:
|
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
|
How do you plan to enforce this standard to all the components? Is there a way to mechanically generate the required code snippets? I was hoping you introduced some traits that all components must implement to conform to the standard, which also enables programmatically dealing with states from VMM's point of view, like looping through a list of trait objects to retrieve or set their states. But looking at the example PR it looks manual and bespoke to each component. |
|
What happens if the contents in the states are different across hypervisors for example KVM states are a little bit different than Microsoft Hypervisor? |
I'm not sure it is possible to programmatically enforce this standard, I assume even if we'd add a trait, the component would still not be forced to implement it. |
Exactly. I think the only way to "force" the adoption is to have a nice framework that provides a lot of goodies when you implement those traits.
Sure. This sounds fair. |
Hmm, I think this one belongs to the broader discussion of how the interfaces will look like in vm-vcpu. We can decide at that point where/how to define the state and the setter/getter for it. I can't think of any blocker with the current proposal for the vcpu use case, but maybe I am missing something. |
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
RtcState represents the state of the Rtc device, and is storing the state needed for restoring the device (no implementation detailis). The generic `events` object is not stored due to complexity reasons. More details in the design proposal: rust-vmm/community#118. Signed-off-by: Laura Loghin <lauralg@amazon.com>
|
As someone familiar with using QEMU and VirtManager (or similar) where a VM guest could be saved and it's state later restored, does this RFC imply Beyond that, I'm trying to seek more information on what OSS equivalent components I should be engaging with to help push forward support for a feature VMware has long had, the ability to snapshot a VM guest that has 3D acceleration enabled. I'm not sure how VMware achieved that, just that anyone I've interacted with thus far doesn't seem confident about how to proceed with implementing that feature. If someone could point me in the right direction to focus on for attempting to build a proof of concept, I'd appreciate that. I am aware of CRIU support for CUDA/ROCm and QT6 in Wayland having similar functionality, I'm specifically interested in whatever approach VMware is doing for the guest, rather than solutions that also work on a host. |
No description provided.