Add static CPU model and core count to CPU collector
All checks were successful
Build and Release / build-and-release (push) Successful in 1m47s
All checks were successful
Build and Release / build-and-release (push) Successful in 1m47s
- Collect CPU model name and core count from /proc/cpuinfo - Only collect once at startup (check if fields already set) - Display below C-state row in dashboard CPU section - Move CPU info collection from NixOS collector to CPU collector
This commit is contained in:
@@ -119,6 +119,34 @@ impl CpuCollector {
|
||||
utils::parse_u64(content.trim())
|
||||
}
|
||||
|
||||
/// Collect static CPU information from /proc/cpuinfo (only once at startup)
|
||||
async fn collect_cpu_info(&self, agent_data: &mut AgentData) -> Result<(), CollectorError> {
|
||||
let content = utils::read_proc_file("/proc/cpuinfo")?;
|
||||
|
||||
let mut model_name: Option<String> = None;
|
||||
let mut core_count: u32 = 0;
|
||||
|
||||
for line in content.lines() {
|
||||
if line.starts_with("model name") {
|
||||
if let Some(colon_pos) = line.find(':') {
|
||||
let name = line[colon_pos + 1..].trim().to_string();
|
||||
if model_name.is_none() {
|
||||
model_name = Some(name);
|
||||
}
|
||||
}
|
||||
} else if line.starts_with("processor") {
|
||||
core_count += 1;
|
||||
}
|
||||
}
|
||||
|
||||
agent_data.system.cpu.model_name = model_name;
|
||||
if core_count > 0 {
|
||||
agent_data.system.cpu.core_count = Some(core_count);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Collect CPU C-state (idle depth) and populate AgentData with top 3 C-states by usage
|
||||
async fn collect_cstate(&self, agent_data: &mut AgentData) -> Result<(), CollectorError> {
|
||||
// Read C-state usage from first CPU (representative of overall system)
|
||||
@@ -192,6 +220,11 @@ impl Collector for CpuCollector {
|
||||
debug!("Collecting CPU metrics");
|
||||
let start = std::time::Instant::now();
|
||||
|
||||
// Collect static CPU info (only once at startup)
|
||||
if agent_data.system.cpu.model_name.is_none() || agent_data.system.cpu.core_count.is_none() {
|
||||
self.collect_cpu_info(agent_data).await?;
|
||||
}
|
||||
|
||||
// Collect load averages (always available)
|
||||
self.collect_load_averages(agent_data).await?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user