File: self_memory.rs

package info (click to toggle)
rust-procfs 0.17.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 664 kB
  • sloc: makefile: 2
file content (56 lines) | stat: -rw-r--r-- 1,766 bytes parent folder | download | duplicates (2)
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
        );
    }
}