1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
use procfs::process::Process;
fn main() {
let me = Process::myself().expect("Unable to load myself!");
println!("PID: {}", me.pid);
let page_size = procfs::page_size();
println!("Memory page size: {}", page_size);
// Note: when comparing the below values to what "top" will display, note that "top" will use
// base-2 units (kibibytes), not base-10 units (kilobytes).
if let Ok(stat) = me.stat() {
println!("== Data from /proc/self/stat:");
println!("Total virtual memory used: {} bytes", stat.vsize);
println!(
"Total resident set: {} pages ({} bytes)",
stat.rss,
stat.rss * page_size
);
println!();
}
if let Ok(statm) = me.statm() {
println!("== Data from /proc/self/statm:");
println!(
"Total virtual memory used: {} pages ({} bytes)",
statm.size,
statm.size * page_size
);
println!(
"Total resident set: {} pages ({} byte)s",
statm.resident,
statm.resident * page_size
);
println!(
"Total shared memory: {} pages ({} bytes)",
statm.shared,
statm.shared * page_size
);
println!();
}
if let Ok(status) = me.status() {
println!("== Data from /proc/self/status:");
println!(
"Total virtual memory used: {} bytes",
status.vmsize.expect("vmsize") * 1024
);
println!("Total resident set: {} bytes", status.vmrss.expect("vmrss") * 1024);
println!(
"Total shared memory: {} bytes",
status.rssfile.expect("rssfile") * 1024 + status.rssshmem.expect("rssshmem") * 1024
);
}
}
|