config: Add config of mem-agent

Add config of mem-agent to configate the mem-agent.

Fixes: #10625

Signed-off-by: Hui Zhu <teawater@antgroup.com>
This commit is contained in:
Hui Zhu 2024-12-03 14:18:59 +08:00
parent 692ded8f96
commit cb86d700a6
2 changed files with 128 additions and 0 deletions

View File

@ -18,6 +18,44 @@ use crate::eother;
/// agent name of Kata agent.
pub const AGENT_NAME_KATA: &str = "kata";
#[derive(Default, Debug, Deserialize, Serialize, Clone)]
pub struct MemAgent {
#[serde(default, alias = "mem_agent_enable")]
pub enable: bool,
#[serde(default)]
pub memcg_disable: Option<bool>,
#[serde(default)]
pub memcg_swap: Option<bool>,
#[serde(default)]
pub memcg_swappiness_max: Option<u8>,
#[serde(default)]
pub memcg_period_secs: Option<u64>,
#[serde(default)]
pub memcg_period_psi_percent_limit: Option<u8>,
#[serde(default)]
pub memcg_eviction_psi_percent_limit: Option<u8>,
#[serde(default)]
pub memcg_eviction_run_aging_count_min: Option<u64>,
#[serde(default)]
pub compact_disable: Option<bool>,
#[serde(default)]
pub compact_period_secs: Option<u64>,
#[serde(default)]
pub compact_period_psi_percent_limit: Option<u8>,
#[serde(default)]
pub compact_psi_percent_limit: Option<u8>,
#[serde(default)]
pub compact_sec_max: Option<i64>,
#[serde(default)]
pub compact_order: Option<u8>,
#[serde(default)]
pub compact_threshold: Option<u64>,
#[serde(default)]
pub compact_force_times: Option<u64>,
}
/// Kata agent configuration information.
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Agent {
@ -98,6 +136,10 @@ pub struct Agent {
/// container pipe size
#[serde(default)]
pub container_pipe_size: u32,
/// Memory agent configuration
#[serde(default)]
pub mem_agent: MemAgent,
}
impl std::default::Default for Agent {
@ -116,6 +158,7 @@ impl std::default::Default for Agent {
health_check_request_timeout_ms: 90_000,
kernel_modules: Default::default(),
container_pipe_size: 0,
mem_agent: MemAgent::default(),
}
}
}

View File

@ -115,6 +115,14 @@ pub struct TomlConfig {
pub runtime: Runtime,
}
macro_rules! mem_agent_kv_insert {
($ma_cfg:expr, $key:expr, $map:expr) => {
if let Some(n) = $ma_cfg {
$map.insert($key.to_string(), n.to_string());
}
};
}
impl TomlConfig {
/// Load Kata configuration information from configuration files.
///
@ -204,6 +212,83 @@ impl TomlConfig {
DEFAULT_AGENT_DBG_CONSOLE_PORT.to_string(),
);
}
if cfg.mem_agent.enable {
kv.insert("psi".to_string(), "1".to_string());
kv.insert("agent.mem_agent_enable".to_string(), "1".to_string());
mem_agent_kv_insert!(
cfg.mem_agent.memcg_disable,
"agent.mem_agent_memcg_disable",
kv
);
mem_agent_kv_insert!(cfg.mem_agent.memcg_swap, "agent.mem_agent_memcg_swap", kv);
mem_agent_kv_insert!(
cfg.mem_agent.memcg_swappiness_max,
"agent.mem_agent_memcg_swappiness_max",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.memcg_period_secs,
"agent.mem_agent_memcg_period_secs",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.memcg_period_psi_percent_limit,
"agent.mem_agent_memcg_period_psi_percent_limit",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.memcg_eviction_psi_percent_limit,
"agent.mem_agent_memcg_eviction_psi_percent_limit",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.memcg_eviction_run_aging_count_min,
"agent.mem_agent_memcg_eviction_run_aging_count_min",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_disable,
"agent.mem_agent_compact_disable",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_period_secs,
"agent.mem_agent_compact_period_secs",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_period_psi_percent_limit,
"agent.mem_agent_compact_period_psi_percent_limit",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_psi_percent_limit,
"agent.mem_agent_compact_psi_percent_limit",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_sec_max,
"agent.mem_agent_compact_sec_max",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_order,
"agent.mem_agent_compact_order",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_threshold,
"agent.mem_agent_compact_threshold",
kv
);
mem_agent_kv_insert!(
cfg.mem_agent.compact_force_times,
"agent.mem_agent_compact_force_times",
kv
);
}
}
Ok(kv)
}