#memory #cgroup #linux #sysfs #read-memory

cgroup-memory

A library for reading and interpreting /sys/fs/cgroup memory statistics

1 unstable release

0.1.0 Sep 18, 2024

#383 in Unix APIs

26 downloads per month
Used in tower-memlim

MIT license

17KB
218 lines

cgroup-memory

A Rust crate for reading and interpreting /sys/fs/cgroup memory statistics.

/sys/fs/cgroup/memory.stat
/sys/fs/cgroup/memory.max

Examples

Read total / max memory

match memory_max() {
    Ok(Some(v)) => println!("Max memory: {v}"),
    Ok(None) => println!("No max memory constraint"),
    Err(e) => println!("Failed to read and parse memory files: {e}"),
}

Calculate available memory

match memory_available() {
    Ok(Some(v)) => println!("Available memory: {v} bytes"),
    Ok(None) => println!("No memory limit set"),
    Err(e) => println!("Failed to read memory information: {}", e),
}

Development

Integration tests

These tests require environments with specific memory attributes. We utilize Docker to create such virtual Linux environments.

Note that memory.max only contains a valid value if the --memory option was specified.

Run

docker build -t cgroup-memory
# Run tests that expect 100mb of total memory
docker run --rm --memory=100m cgroup-memory /usr/local/bin/cargo-nextest ntr --archive-file test_memory_max_100m.tar.zst --workspace-remap . --no-capture

No runtime deps