Skip to main content

RestorePool

Struct RestorePool 

Source
pub struct RestorePool { /* private fields */ }
Available on crate feature kvm only.
Expand description

Pool of empty VM shells optimized for snapshot restoration.

Unlike crate::pool::VmPool, this pool does not keep fully booted guests. Instead, it keeps KVM VM shells with memory and vCPU structures allocated so snapshot state can be restored with less setup latency.

Implementations§

Source§

impl RestorePool

Source

pub fn new( base_config: SandboxConfig, config: MicrovmConfig, pool_config: RestorePoolConfig, ) -> Result<Self, RestorePoolError>

Available on Linux only.

Creates a pool of empty VM shells for snapshot restore.

The pool validates capacity limits and microVM assets, then warms the configured minimum number of empty slots.

Source

pub fn restore( &self, memory: &[u8], vcpu_state: &[u8], ) -> Result<PooledRestoreVm, RestorePoolError>

Available on Linux only.

Restores a microVM from guest memory pages and serialized vCPU state.

A pre-created slot is used when available; otherwise the pool creates one on demand and rolls back accounting if restoration fails.

Source

pub fn restore_from_bytes( &self, data: &[u8], ) -> Result<PooledRestoreVm, RestorePoolError>

Available on Linux only.

Restores a microVM from full self-describing snapshot bytes.

Source

pub fn restore_snapshot( &self, snapshot: &SandboxSnapshot, ) -> Result<PooledRestoreVm, RestorePoolError>

Available on Linux only.

Restores a microVM from a SandboxSnapshot.

File-backed snapshots use the optimized file path when the build supports it; otherwise the snapshot is loaded into memory before restoration.

Source

pub fn idle_count(&self) -> usize

Available on Linux only.

Returns the current number of idle slots in the restore pool.

If the internal lock is poisoned, this method logs the condition and returns 0 rather than panicking.

Source

pub fn warm(&self, target: usize) -> Result<(), RestorePoolError>

Available on Linux only.

Warms the restore pool to at least target empty VM shells.

The effective target is capped by RestorePoolConfig::max_size.

Trait Implementations§

Source§

impl Clone for RestorePool

Available on Linux only.
Source§

fn clone(&self) -> RestorePool

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more