src/tools/procfs.rs: implement read_memory_usage()
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
3005ef48b6
commit
13abfdc57a
|
@ -3,6 +3,7 @@ use failure::*;
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::io::{BufRead, BufReader};
|
use std::io::{BufRead, BufReader};
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
use std::process;
|
||||||
use crate::tools;
|
use crate::tools;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
@ -208,3 +209,27 @@ pub fn read_cpuinfo() -> Result<ProcFsCPUInfo, Error> {
|
||||||
|
|
||||||
Ok(cpuinfo)
|
Ok(cpuinfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct ProcFsMemUsage {
|
||||||
|
pub size: u64,
|
||||||
|
pub resident: u64,
|
||||||
|
pub shared: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn read_memory_usage() -> Result<ProcFsMemUsage, Error> {
|
||||||
|
let path = format!("/proc/{}/statm", process::id());
|
||||||
|
let line = tools::file_read_firstline(&path)?;
|
||||||
|
let mut values = line.split_whitespace().map(|v| v.parse::<u64>());
|
||||||
|
|
||||||
|
let ps = 4096;
|
||||||
|
match (values.next(), values.next(), values.next()) {
|
||||||
|
(Some(Ok(size)), Some(Ok(resident)), Some(Ok(shared))) =>
|
||||||
|
Ok(ProcFsMemUsage {
|
||||||
|
size: size * ps,
|
||||||
|
resident: resident * ps,
|
||||||
|
shared: shared * ps,
|
||||||
|
}),
|
||||||
|
_ => bail!("Error while parsing '{}'", path),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue