Module cgroups_rs::cgroup_builder[][src]

This module allows the user to create a control group using the Builder pattern.

Example

The following example demonstrates how the control group builder looks like. The user specifies the name of the control group (here: “hello”) and the hierarchy it belongs to (here: a V1 hierarchy). Next, the user selects a subsystem by calling functions like memory(), cpu() and devices(). The user can then add restrictions and details via subsystem-specific calls. To finalize a subsystem, the user may call done(). Finally, if the control group build is done and all requirements/restrictions have been specified, the control group can be created by a call to build().

let h = cgroups_rs::hierarchies::auto();
let cgroup: Cgroup = CgroupBuilder::new("hello")
     .memory()
         .kernel_memory_limit(1024 * 1024)
         .memory_hard_limit(1024 * 1024)
         .done()
     .cpu()
         .shares(100)
         .done()
     .devices()
         .device(1000, 10, DeviceType::Block, true,
            vec![DevicePermissions::Read,
                 DevicePermissions::Write,
                 DevicePermissions::MkNod])
         .device(6, 1, DeviceType::Char, false, vec![])
         .done()
     .network()
         .class_id(1337)
         .priority("eth0".to_string(), 100)
         .priority("wl0".to_string(), 200)
         .done()
     .hugepages()
         .limit("2M".to_string(), 0)
         .limit("4M".to_string(), 4 * 1024 * 1024 * 100)
         .limit("2G".to_string(), 2 * 1024 * 1024 * 1024)
         .done()
     .blkio()
         .weight(123)
         .leaf_weight(99)
         .weight_device(6, 1, Some(100), Some(55))
         .weight_device(6, 1, Some(100), Some(55))
         .throttle_iops()
             .read(6, 1, 10)
             .write(11, 1, 100)
         .throttle_bps()
             .read(6, 1, 10)
             .write(11, 1, 100)
         .done()
     .build(h);

Structs

BlkIoResourcesBuilder

A builder that configures the blkio controller of a control group.

CgroupBuilder

A control group builder instance

CpuResourceBuilder

A builder that configures the cpuset & cpu controllers of a control group.

DeviceResourceBuilder

A builder that configures the devices controller of a control group.

HugepagesResourceBuilder

A builder that configures the hugepages controller of a control group.

MemoryResourceBuilder

A builder that configures the memory controller of a control group.

NetworkResourceBuilder

A builder that configures the net_cls & net_prio controllers of a control group.

PidResourceBuilder

A builder that configures the pid controller of a control group.