pub fn running_in_kubernetes() -> bool {
std::env::var_os("KUBERNETES_SERVICE_HOST").is_some()
}
pub fn total_memory_megabyte() -> Option<u64> {
let mut system = sysinfo::System::new();
system.refresh_memory();
let mut available = system.total_memory();
if let Some(limits) = system.cgroup_limits() {
available = available.min(limits.total_memory);
}
let mb = available / 1_000_000;
if mb > 0 { Some(mb) } else { None }
}
#[cfg(test)]
mod tests {
#[cfg(target_os = "linux")]
#[test]
fn reports_nonzero_memory() {
let mb = super::total_memory_megabyte().expect("Linux reports available memory");
assert!(mb > 0, "available memory must be positive, got {mb} MB");
}
}