firecracker_rs_sdk/models/
machine_configuration.rs

1use serde::{Deserialize, Serialize};
2
3use super::cpu_template::CPUTemplate;
4
5/// # Example
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub struct MachineConfiguration {
8    /// cpu template
9    #[serde(rename = "cpu_template", skip_serializing_if = "Option::is_none")]
10    pub cpu_template: Option<CPUTemplate>,
11
12    /// Flag for enabling/disabling Hyperthreading
13    /// Required: true
14    #[serde(rename = "smt", skip_serializing_if = "Option::is_none")]
15    pub smt: Option<bool>,
16
17    /// Memory size of VM
18    /// Required: true
19    #[serde(rename = "mem_size_mib")]
20    pub mem_size_mib: isize,
21
22    /// Enable dirty page tracking.
23    /// If this is enabled, then incremental guest memory snapshots can be created.
24    /// These belong to diff snapshots, which contain, besides the microVM state, only the memory dirtied since
25    /// a previous snapshot. Full snapshots each contain a full copy of the guest memory.
26    #[serde(rename = "track_dirty_pages", skip_serializing_if = "Option::is_none")]
27    pub track_dirty_pages: Option<bool>,
28
29    /// Number of vCPUs (either 1 or an even number)
30    /// Required: true
31    /// Maximum: 32
32    /// Minimum: 1
33    #[serde(rename = "vcpu_count")]
34    pub vcpu_count: isize,
35
36    /// Which huge pages configuration (if any) should be used to back guest memory.
37    /// enum:
38    /// - None
39    /// - 2M
40    #[serde(rename = "huge_pages", skip_serializing_if = "Option::is_none")]
41    pub huge_pages: Option<HugePageOption>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
45pub enum HugePageOption {
46    #[serde(rename = "None")]
47    None,
48    #[serde(rename = "2M")]
49    HugePage2M,
50}