mirror of
https://codeberg.org/icewind/palantir.git
synced 2026-06-03 18:24:08 +02:00
fix cpu time again
This commit is contained in:
parent
bfda9ac1bb
commit
76b34af04f
2 changed files with 15 additions and 5 deletions
|
|
@ -17,7 +17,7 @@ pub fn get_metrics() -> Result<String> {
|
|||
let pools = pools();
|
||||
let networks = network_stats()?;
|
||||
let mut result = String::with_capacity(256);
|
||||
writeln!(&mut result, "cpu_time{{host=\"{}\"}} {:.1}", hostname, cpu).ok();
|
||||
writeln!(&mut result, "cpu_time{{host=\"{}\"}} {:.3}", hostname, cpu).ok();
|
||||
writeln!(
|
||||
&mut result,
|
||||
"memory_total{{host=\"{}\"}} {}",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ pub fn memory() -> Result<Memory> {
|
|||
Ok(mem)
|
||||
}
|
||||
|
||||
pub fn cpu_time() -> Result<u64> {
|
||||
pub fn cpu_time() -> Result<f32> {
|
||||
let stat = BufReader::new(File::open("/proc/stat")?);
|
||||
let line = stat
|
||||
.lines()
|
||||
|
|
@ -121,9 +121,9 @@ pub fn cpu_time() -> Result<u64> {
|
|||
if let (_cpu, Some(user), _nice, Some(system)) =
|
||||
(parts.next(), parts.next(), parts.next(), parts.next())
|
||||
{
|
||||
let user: u64 = user.parse()?;
|
||||
let system: u64 = system.parse()?;
|
||||
Ok((user + system) / clock_ticks()?)
|
||||
let user: f32 = user.parse()?;
|
||||
let system: f32 = system.parse()?;
|
||||
Ok((user + system) / (clock_ticks()? as f32) / (cpu_count()? as f32))
|
||||
} else {
|
||||
Err(Report::msg("Invalid /proc/stat"))
|
||||
}
|
||||
|
|
@ -241,3 +241,13 @@ fn statvfs(path: &CStr) -> Result<libc::statvfs> {
|
|||
Err(Report::msg("Failed to stat vfs"))
|
||||
}
|
||||
}
|
||||
|
||||
fn cpu_count() -> Result<u64> {
|
||||
let result = unsafe { libc::sysconf(libc::_SC_NPROCESSORS_ONLN) };
|
||||
|
||||
if result < 0 {
|
||||
Err(Report::msg("Failed to get cpu count"))
|
||||
} else {
|
||||
Ok(result as u64)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue