Module hugetlb

Source
Expand description

Operations on a HugeTLB subsystem.

Subsystem implements Cgroup trait and subsystem-specific operations.

For more information about this subsystem, see the kernel’s documentation Documentation/cgroup-v1/hugetlb.txt.

§Examples

use std::path::PathBuf;
use controlgroup::{
    Pid,
    v1::{self, hugetlb::{self, HugepageSize, Limit}, Cgroup, CgroupPath, SubsystemKind},
};

let mut hugetlb_cgroup = hugetlb::Subsystem::new(
    CgroupPath::new(SubsystemKind::HugeTlb, PathBuf::from("students/charlie")));
hugetlb_cgroup.create()?;

// Define a resource limit about how many hugepage TLB a cgroup can use.
let resources = hugetlb::Resources {
    limits: [
        (hugetlb::HugepageSize::Mb2, Limit::Pages(1)),
        (hugetlb::HugepageSize::Gb1, Limit::Pages(1)),
    ].iter().copied().collect(),
};

// Apply the resource limit.
hugetlb_cgroup.apply(&resources.into())?;

// Add tasks to this cgroup.
let pid = Pid::from(std::process::id());
hugetlb_cgroup.add_task(pid)?;

// Do something ...

hugetlb_cgroup.remove_task(pid)?;
hugetlb_cgroup.delete()?;

Structs§

Resources
Resource limit no how many hugepage TLBs a cgroup can use.
Subsystem
Handler of a HugeTLB subsystem.

Enums§

HugepageSize
Hugepage sizes.
Limit
Limit on hugepage TLB usage in different units.