pub enum IoEngine {
Sync,
Async,
}Expand description
Block device IO engine, default to “Sync”. The Async engine leverages io_uring for executing requests in an async manner, therefore getting overall higher throughput by taking better advantage of the block device hardware, which typically supports queue depths greater than 1. The block IO engine is configured via the PUT /drives API call (pre-boot only), with the io_engine field taking two possible values:
- Sync (default)
- Async (in developer preview) The Sync variant is the default, in order to provide backwards compatibility with older Firecracker versions. Note vhost-user block device is another option for block IO that requires an external backend process.
Variants§
Sync
Async
Firecracker requires a minimum host kernel version of 5.10.51 for the Async IO engine. This requirement is based on the availability of the io_uring subsystem, as well as a couple of features and bugfixes that were added in newer kernel versions. If a block device is configured with the Async io_engine on a host kernel older than 5.10.51, the API call will return a 400 Bad Request, with a suggestive error message.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for IoEngine
impl<'de> Deserialize<'de> for IoEngine
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Ord for IoEngine
impl Ord for IoEngine
Source§impl PartialOrd for IoEngine
impl PartialOrd for IoEngine
impl Copy for IoEngine
impl Eq for IoEngine
impl StructuralPartialEq for IoEngine
Auto Trait Implementations§
impl Freeze for IoEngine
impl RefUnwindSafe for IoEngine
impl Send for IoEngine
impl Sync for IoEngine
impl Unpin for IoEngine
impl UnwindSafe for IoEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more