Crate cgroup_memory

Source
Expand description

§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

Structs§

MemoryStat
Represents the memory statistics from the MEMORY_STAT file.

Enums§

ReadParseError

Constants§

MEMORY_MAX
MEMORY_STAT

Functions§

memory_available
Returns the available memory in bytes.
memory_max
Reads and parses the memory max file.
memory_max_parse
Parses the max memory line.
memory_max_unsafe
Reads and parses the memory max file using unsafe code.
memory_net_used
Returns the net used memory in bytes.
memory_net_used_calc
Calculates the net used memory in bytes.
memory_stat
Reads and parses the memory statistics file.