mirror of
https://github.com/kata-containers/cgroups-rs.git
synced 2026-08-05 02:13:23 +00:00
- Add crates.io badge - Simplify header and description - Fix markdown heading levels (# -> ##) - Fix code block language annotation spacing - Remove redundant blank lines Signed-off-by: Gaius <gaius.qi@gmail.com>
60 lines
1.7 KiB
Markdown
60 lines
1.7 KiB
Markdown
# cgroups-rs
|
|
|
|
[](https://crates.io/crates/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
|
|
|
|
```rust
|
|
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!
|