Struct CpuController

Source
pub struct CpuController { /* private fields */ }
Expand description

A controller that allows controlling the cpu subsystem of a Cgroup.

In essence, it allows gathering information about how much the tasks inside the control group are using the CPU and creating rules that limit their usage. Note that this crate does not yet support managing realtime tasks.

Implementations§

Source§

impl CpuController

Source

pub fn new(root: PathBuf, v2: bool) -> Self

Contructs a new CpuController with root serving as the root of the control group.

Source

pub fn cpu(&self) -> Cpu

Returns CPU time statistics based on the processes in the control group.

Source

pub fn set_shares(&self, shares: u64) -> Result<()>

Configures the CPU bandwidth (in relative relation to other control groups and this control group’s parent).

For example, setting control group A’s shares to 100, and control group B’s shares to 200 ensures that control group B receives twice as much as CPU bandwidth. (Assuming both A and B are of the same parent)

Source

pub fn shares(&self) -> Result<u64>

Retrieve the CPU bandwidth that this control group (relative to other control groups and this control group’s parent) can use.

Source

pub fn set_cfs_period(&self, us: u64) -> Result<()>

Specify a period (when using the CFS scheduler) of time in microseconds for how often this control group’s access to the CPU should be reallocated.

Source

pub fn cfs_period(&self) -> Result<u64>

Retrieve the period of time of how often this cgroup’s access to the CPU should be reallocated in microseconds.

Source

pub fn set_cfs_quota(&self, us: i64) -> Result<()>

Specify a quota (when using the CFS scheduler) of time in microseconds for which all tasks in this control group can run during one period (see: set_cfs_period()).

Source

pub fn cfs_quota(&self) -> Result<i64>

Retrieve the quota of time for which all tasks in this cgroup can run during one period, in microseconds.

Source

pub fn set_cfs_quota_and_period( &self, quota: Option<i64>, period: Option<u64>, ) -> Result<()>

Source

pub fn set_rt_runtime(&self, us: i64) -> Result<()>

Source

pub fn set_rt_period_us(&self, us: u64) -> Result<()>

Trait Implementations§

Source§

impl Clone for CpuController

Source§

fn clone(&self) -> CpuController

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CpuController

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<&'a Subsystem> for &'a CpuController

Source§

fn from(sub: &'a Subsystem) -> &'a CpuController

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Controller for T
where T: ControllerInternal,

Source§

fn apply(&self, res: &Resources) -> Result<(), Error>

Apply a set of resources to the Controller, invoking its internal functions to pass the kernel the information.

Source§

fn create(&self)

Create this controller

Source§

fn set_notify_on_release(&self, enable: bool) -> Result<(), Error>

Set notify_on_release

Source§

fn set_release_agent(&self, path: &str) -> Result<(), Error>

Set release_agent

Source§

fn exists(&self) -> bool

Does this controller already exist?

Source§

fn delete(&self) -> Result<(), Error>

Delete the controller.

Source§

fn add_task(&self, pid: &CgroupPid) -> Result<(), Error>

Attach a task to this controller.

Source§

fn add_task_by_tgid(&self, pid: &CgroupPid) -> Result<(), Error>

Attach a task to this controller by thread group id.

Source§

fn procs(&self) -> Vec<CgroupPid>

Get the list of procs that this controller has.

Source§

fn tasks(&self) -> Vec<CgroupPid>

Get the list of tasks that this controller has.

Source§

fn set_cgroup_type(&self, cgroup_type: &str) -> Result<(), Error>

set cgroup.type

Source§

fn get_cgroup_type(&self) -> Result<String, Error>

get cgroup.type

Source§

fn control_type(&self) -> Controllers

Source§

fn path(&self) -> &Path

The file system path to the controller.
Source§

fn v2(&self) -> bool

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.