diff --git a/cspell.json b/cspell.json index c0d952f9..a1d442d0 100644 --- a/cspell.json +++ b/cspell.json @@ -600,6 +600,7 @@ "vmrcs", "vmrss", "vms", + "vmswap", "vns", "VTeam", "vtpm", diff --git a/proxy_agent/src/proxy_agent_status.rs b/proxy_agent/src/proxy_agent_status.rs index 293e44f6..422d8c50 100644 --- a/proxy_agent/src/proxy_agent_status.rs +++ b/proxy_agent/src/proxy_agent_status.rs @@ -336,34 +336,9 @@ impl ProxyAgentStatusTask { /// If the memory usage exceeds the limits for multiple times, take action (e.g., restart the process). #[cfg(not(windows))] fn monitor_memory_usage(&self) { - const RAM_LIMIT_IN_MB: u64 = 20; match proxy_agent_shared::linux::read_proc_memory_status(std::process::id()) { Ok(memory_status) => { - if let Some(vmrss_kb) = memory_status.vmrss_kb { - let ram_in_mb = vmrss_kb / 1024; - logger::write_information(format!( - "Current process memory usage: {ram_in_mb} MB", - )); - - if ram_in_mb > RAM_LIMIT_IN_MB { - logger::write_warning(format!( - "Current process memory usage {ram_in_mb} MB exceeds the limit of {RAM_LIMIT_IN_MB} MB.", - )); - // take action if needed, e.g., restart the process - } - } else { - logger::write_information("Current process memory usage: Unknown".to_string()); - } - if let Some(vmhwm_kb) = memory_status.vmhwm_kb { - logger::write_information(format!( - "Current process peak memory usage: {} MB", - vmhwm_kb / 1024 - )); - } else { - logger::write_information( - "Current process peak memory usage: Unknown".to_string(), - ); - } + logger::write(format!("Current process memory usage: {memory_status:?} ",)); } Err(e) => { logger::write_error(format!("Error reading process memory status: {e}")); diff --git a/proxy_agent_shared/src/linux.rs b/proxy_agent_shared/src/linux.rs index 8e765c2d..29b793e5 100644 --- a/proxy_agent_shared/src/linux.rs +++ b/proxy_agent_shared/src/linux.rs @@ -157,7 +157,11 @@ pub fn set_cpu_quota(service_name: &str, cpu_quota: u16) -> Result<()> { #[derive(Debug)] pub struct MemStatus { + /// virtual-memory pages currently resident in physical RAM in kilobytes. pub vmrss_kb: Option, + /// virtual-memory pages currently swapped out to disk in kilobytes. + pub vmswap_kb: Option, + /// peak virtual-memory pages currently resident in physical RAM in kilobytes. pub vmhwm_kb: Option, } @@ -165,6 +169,7 @@ pub fn read_proc_memory_status(pid: u32) -> Result { let s = fs::read_to_string(format!("/proc/{pid}/status"))?; let mut vmrss_kb = None; let mut vmhwm_kb = None; + let mut vmswap_kb = None; for line in s.lines() { if line.starts_with("VmRSS:") { // Format: "VmRSS:\t 12345 kB" @@ -173,9 +178,16 @@ pub fn read_proc_memory_status(pid: u32) -> Result { } else if line.starts_with("VmHWM:") { let val = line.split_whitespace().nth(1).and_then(|x| x.parse().ok()); vmhwm_kb = val; + } else if line.starts_with("VmSwap:") { + let val = line.split_whitespace().nth(1).and_then(|x| x.parse().ok()); + vmswap_kb = val; } } - Ok(MemStatus { vmrss_kb, vmhwm_kb }) + Ok(MemStatus { + vmrss_kb, + vmswap_kb, + vmhwm_kb, + }) } /// Set the file permissions for a file or directory. diff --git a/proxy_agent_shared/src/telemetry/event_reader.rs b/proxy_agent_shared/src/telemetry/event_reader.rs index e1b1ace6..0ec8dfbb 100644 --- a/proxy_agent_shared/src/telemetry/event_reader.rs +++ b/proxy_agent_shared/src/telemetry/event_reader.rs @@ -124,10 +124,12 @@ impl EventReader { Ok(files) => { let file_count = files.len(); event_count = self.process_events_and_clean(files).await; - let message = format!( - "Telemetry event reader sent {event_count} events from {file_count} files" + logger_manager::write_log( + log::Level::Trace, + format!( + "Telemetry event reader sent {event_count} events from {file_count} files" + ), ); - logger_manager::write_info(message); } Err(e) => { logger_manager::write_warn(format!( @@ -289,9 +291,12 @@ impl EventReader { for file in files { event_count += self.process_one_extension_status_event_file(file).await; } - logger_manager::write_info( format!( - "Telemetry event reader sent {event_count} extension status events from {file_count} files" - )); + logger_manager::write_log( + log::Level::Trace, + format!( + "Telemetry event reader sent {event_count} extension status events from {file_count} files" + ), + ); if event_count > 0 { if let Err(e) = self.common_state.notify_telemetry_event().await { diff --git a/proxy_agent_shared/src/telemetry/event_sender.rs b/proxy_agent_shared/src/telemetry/event_sender.rs index e8b1c11d..90201b4f 100644 --- a/proxy_agent_shared/src/telemetry/event_sender.rs +++ b/proxy_agent_shared/src/telemetry/event_sender.rs @@ -81,7 +81,10 @@ impl EventSender { .await { Ok(()) => { - logger_manager::write_info("success updated the vm metadata.".to_string()); + logger_manager::write_log( + log::Level::Trace, + "success updated the vm metadata.".to_string(), + ); } Err(e) => { logger_manager::write_warn(format!("Failed to update vm metadata with error {e}."));