mirror of
https://github.com/kata-containers/cgroups-rs.git
synced 2026-08-05 02:13:23 +00:00
a32f96e473f5974db5f338a302e52d79101db8b4
cgroups-rs exposes oci-spec types in its public API (e.g. Manager::set() takes &LinuxResources), so the version pinned here dictates which oci-spec version every consumer must use: 0.x lines are semver-incompatible, and a consumer on a newer oci-spec gets "expected LinuxResources, found LinuxResources" type mismatches. Kata Containers is moving its workspace to oci-spec 0.10.0 and cannot call into cgroups-rs until this crate follows. The 0.8 to 0.10 changes are additive for everything cgroups-rs touches (no code changes needed): the crate builds warning-free with the oci feature and the unit tests pass (the only failures are the pre-existing fs manager tests that need root to write cgroupfs). Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com> Assisted-by: Claude Fable 5 <noreply@anthropic.com>
cgroups-rs
Native Rust library for managing Linux control groups. Supports both cgroups v1 and v2.
Examples
Create a control group using the builder pattern
use cgroups_rs::*;
use cgroups_rs::cgroup_builder::*;
// Acquire a handle for the cgroup hierarchy.
let hier = cgroups_rs::hierarchies::auto();
// Use the builder pattern (see the documentation to create the control group)
//
// This creates a control group named "example" in the V1 hierarchy.
let cg: Cgroup = CgroupBuilder::new("example")
.cpu()
.shares(85)
.done()
.build(hier);
// Now `cg` is a control group that gets 85% of the CPU time in relative to
// other control groups.
// Get a handle to the CPU controller.
let cpus: &cgroups_rs::cpu::CpuController = cg.controller_of().unwrap();
cpus.add_task(&CgroupPid::from(1234u64));
// [...]
// Finally, clean up and delete the control group.
cg.delete();
// Note that `Cgroup` does not implement `Drop` and therefore when the
// structure is dropped, the Cgroup will stay around. This is because, later
// you can then re-create the `Cgroup` using `load()`. We aren't too set on
// this behavior, so it might change in the feature. Rest assured, it will be a
// major version change.
Disclaimer
This crate is licensed under:
- MIT License (see LICENSE-MIT); or
- Apache 2.0 License (see LICENSE-Apache-2.0),
at your option.
Please note that this crate is under heavy development, we will use sematic
versioning, but during the 0.0.* phase, no guarantees are made about
backwards compatibility.
Regardless, check back often and thanks for taking a look!
Description
Languages
Rust
96.5%
Shell
3.2%
Makefile
0.3%