This commit is contained in:
Christoffer Martinsson 2025-10-12 18:10:05 +02:00
parent b226217ba4
commit 53cb6510d0

View File

@ -390,6 +390,28 @@ impl ServiceCollector {
} }
async fn get_cpu_frequency_mhz(&self) -> Option<f32> { async fn get_cpu_frequency_mhz(&self) -> Option<f32> {
// Prioritize /proc/cpuinfo for actual current frequencies, then calculate average
if let Ok(content) = fs::read_to_string("/proc/cpuinfo").await {
let mut frequencies = Vec::new();
for line in content.lines() {
if let Some(rest) = line.strip_prefix("cpu MHz") {
if let Some(value) = rest.split(':').nth(1) {
if let Ok(mhz) = value.trim().parse::<f32>() {
if mhz > 0.0 {
frequencies.push(mhz);
}
}
}
}
}
if !frequencies.is_empty() {
let avg_freq = frequencies.iter().sum::<f32>() / frequencies.len() as f32;
return Some(avg_freq);
}
}
// Fallback to scaling frequency if cpuinfo is not available
let candidates = [ let candidates = [
"/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq", "/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq",
"/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq",
@ -405,20 +427,6 @@ impl ServiceCollector {
} }
} }
if let Ok(content) = fs::read_to_string("/proc/cpuinfo").await {
for line in content.lines() {
if let Some(rest) = line.strip_prefix("cpu MHz") {
if let Some(value) = rest.split(':').nth(1) {
if let Ok(mhz) = value.trim().parse::<f32>() {
if mhz > 0.0 {
return Some(mhz);
}
}
}
}
}
}
None None
} }