pub struct CpuSetController { /* private fields */ }
Expand description
A controller that allows controlling the cpuset
subsystem of a Cgroup.
In essence, this controller is responsible for restricting the tasks in the control group to a set of CPUs and/or memory nodes.
Implementations§
Source§impl CpuSetController
impl CpuSetController
Sourcepub fn new(root: PathBuf, v2: bool) -> Self
pub fn new(root: PathBuf, v2: bool) -> Self
Contructs a new CpuSetController
with root
serving as the root of the control group.
Sourcepub fn cpuset(&self) -> CpuSet
pub fn cpuset(&self) -> CpuSet
Returns the statistics gathered by the kernel for this control group. See the struct for more information on what information this entails.
Sourcepub fn set_cpu_exclusive(&self, b: bool) -> Result<()>
pub fn set_cpu_exclusive(&self, b: bool) -> Result<()>
Control whether the CPUs selected via set_cpus()
should be exclusive to this control
group or not.
Sourcepub fn set_mem_exclusive(&self, b: bool) -> Result<()>
pub fn set_mem_exclusive(&self, b: bool) -> Result<()>
Control whether the memory nodes selected via set_memss()
should be exclusive to this control
group or not.
Sourcepub fn set_cpus(&self, cpus: &str) -> Result<()>
pub fn set_cpus(&self, cpus: &str) -> Result<()>
Set the CPUs that the tasks in this control group can run on.
Syntax is a comma separated list of CPUs, with an additional extension that ranges can be represented via dashes.
Sourcepub fn set_mems(&self, mems: &str) -> Result<()>
pub fn set_mems(&self, mems: &str) -> Result<()>
Set the memory nodes that the tasks in this control group can use.
Syntax is the same as with set_cpus()
.
Sourcepub fn set_hardwall(&self, b: bool) -> Result<()>
pub fn set_hardwall(&self, b: bool) -> Result<()>
Controls whether the control group should be “hardwalled”, i.e., whether kernel allocations
should exclusively use the memory nodes set via set_mems()
.
Note that some kernel allocations, most notably those that are made in interrupt handlers may disregard this.
Sourcepub fn set_load_balancing(&self, b: bool) -> Result<()>
pub fn set_load_balancing(&self, b: bool) -> Result<()>
Controls whether the kernel should attempt to rebalance the load between the CPUs specified in the
cpus
field of this control group.
Sourcepub fn set_rebalance_relax_domain_level(&self, i: i64) -> Result<()>
pub fn set_rebalance_relax_domain_level(&self, i: i64) -> Result<()>
Contorl how much effort the kernel should invest in rebalacing the control group.
See @CpuSet ’s similar field for more information.
Sourcepub fn set_memory_migration(&self, b: bool) -> Result<()>
pub fn set_memory_migration(&self, b: bool) -> Result<()>
Control whether when using set_mems()
the existing memory used by the tasks should be
migrated over to the now-selected nodes.
Sourcepub fn set_memory_spread_page(&self, b: bool) -> Result<()>
pub fn set_memory_spread_page(&self, b: bool) -> Result<()>
Control whether filesystem buffers should be evenly split across the nodes selected via
set_mems()
.
Sourcepub fn set_memory_spread_slab(&self, b: bool) -> Result<()>
pub fn set_memory_spread_slab(&self, b: bool) -> Result<()>
Control whether the kernel’s slab cache for file I/O should be evenly split across the
nodes selected via set_mems()
.
Sourcepub fn set_enable_memory_pressure(&self, b: bool) -> Result<()>
pub fn set_enable_memory_pressure(&self, b: bool) -> Result<()>
Control whether the kernel should collect information to calculate memory pressure for control groups.
Note: This will fail with InvalidOperation
if the current congrol group is not the root
control group.
Trait Implementations§
Source§impl Clone for CpuSetController
impl Clone for CpuSetController
Source§fn clone(&self) -> CpuSetController
fn clone(&self) -> CpuSetController
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for CpuSetController
impl Debug for CpuSetController
Source§impl<'a> From<&'a Subsystem> for &'a CpuSetController
impl<'a> From<&'a Subsystem> for &'a CpuSetController
Source§fn from(sub: &'a Subsystem) -> &'a CpuSetController
fn from(sub: &'a Subsystem) -> &'a CpuSetController
Auto Trait Implementations§
impl Freeze for CpuSetController
impl RefUnwindSafe for CpuSetController
impl Send for CpuSetController
impl Sync for CpuSetController
impl Unpin for CpuSetController
impl UnwindSafe for CpuSetController
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Controller for Twhere
T: ControllerInternal,
impl<T> Controller for Twhere
T: ControllerInternal,
Source§fn apply(&self, res: &Resources) -> Result<(), Error>
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 add_task_by_tgid(&self, pid: &CgroupPid) -> Result<(), Error>
fn add_task_by_tgid(&self, pid: &CgroupPid) -> Result<(), Error>
Attach a task to this controller by thread group id.