package v2
import "github.com/containerd/cgroups/v2"
Index ¶
- Variables
- func DeviceFilter(devices []specs.LinuxDeviceCgroup) (asm.Instructions, string, error)
- func LoadAttachCgroupDeviceFilter(insts asm.Instructions, license string, dirFD int) (func() error, error)
- func NestedGroupPath(suffix string) (string, error)
- func PidGroupPath(pid int) (string, error)
- func VerifyGroupPath(g string) error
- type BFQ
- type CPU
- type CPUMax
- type ControllerToggle
- type Entry
- type Event
- type HugeTlb
- type HugeTlbEntry
- type IO
- type IOType
- type Manager
- func LoadManager(mountpoint string, group string) (*Manager, error)
- func LoadSystemd(slice, group string) (*Manager, error)
- func NewManager(mountpoint string, group string, resources *Resources) (*Manager, error)
- func NewSystemd(slice, group string, pid int, resources *Resources) (*Manager, error)
- func (c *Manager) AddProc(pid uint64) error
- func (c *Manager) AddThread(tid uint64) error
- func (c *Manager) Controllers() ([]string, error)
- func (c *Manager) Delete() error
- func (c *Manager) DeleteSystemd() error
- func (c *Manager) EventChan() (<-chan Event, <-chan error)
- func (c *Manager) Freeze() error
- func (c *Manager) MemoryEventFD() (int, uint32, error)
- func (c *Manager) MoveTo(destination *Manager) error
- func (c *Manager) NewChild(name string, resources *Resources) (*Manager, error)
- func (c *Manager) Procs(recursive bool) ([]uint64, error)
- func (c *Manager) RootControllers() ([]string, error)
- func (c *Manager) Stat() (*stats.Metrics, error)
- func (c *Manager) Thaw() error
- func (c *Manager) ToggleControllers(controllers []string, t ControllerToggle) error
- func (c *Manager) Update(resources *Resources) error
- type Memory
- type Pids
- type RDMA
- type RDMAEntry
- type Resources
- func ToResources(spec *specs.LinuxResources) *Resources
- func (r *Resources) EnabledControllers() (c []string)
- func (r *Resources) Values() (o []Value)
- type State
- type Value
Variables ¶
var ( ErrInvalidFormat = errors.New("cgroups: parsing file with invalid format failed") ErrInvalidGroupPath = errors.New("cgroups: invalid group path") )
Functions ¶
func DeviceFilter ¶
func DeviceFilter(devices []specs.LinuxDeviceCgroup) (asm.Instructions, string, error)
DeviceFilter returns eBPF device filter program and its license string
func LoadAttachCgroupDeviceFilter ¶
func LoadAttachCgroupDeviceFilter(insts asm.Instructions, license string, dirFD int) (func() error, error)
LoadAttachCgroupDeviceFilter installs eBPF device filter program to /sys/fs/cgroup/<foo> directory.
Requires the system to be running in cgroup2 unified-mode with kernel >= 4.15 .
https://github.com/torvalds/linux/commit/ebc614f687369f9df99828572b1d85a7c2de3d92
func NestedGroupPath ¶
NestedGroupPath will nest the cgroups based on the calling processes cgroup placing its child processes inside its own path
func PidGroupPath ¶
PidGroupPath will return the correct cgroup paths for an existing process running inside a cgroup This is commonly used for the Load function to restore an existing container
func VerifyGroupPath ¶
VerifyGroupPath verifies the format of group path string g. The format is same as the third field in /proc/PID/cgroup. e.g. "/user.slice/user-1001.slice/session-1.scope"
g must be a "clean" absolute path starts with "/", and must not contain "/sys/fs/cgroup" prefix.
VerifyGroupPath doesn't verify whether g actually exists on the system.
Types ¶
type BFQ ¶
type BFQ struct { Weight uint16 }
type CPU ¶
func (*CPU) Values ¶
type CPUMax ¶
type CPUMax string
func NewCPUMax ¶
type ControllerToggle ¶
type ControllerToggle int
const ( Enable ControllerToggle = iota + 1 Disable )
type Entry ¶
func (Entry) String ¶
type Event ¶
type HugeTlb ¶
type HugeTlb []HugeTlbEntry
func (*HugeTlb) Values ¶
type HugeTlbEntry ¶
type IO ¶
func (*IO) Values ¶
type IOType ¶
type IOType string
const ( ReadBPS IOType = "rbps" WriteBPS IOType = "wbps" ReadIOPS IOType = "riops" WriteIOPS IOType = "wiops" )
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func LoadManager ¶
func LoadSystemd ¶
func NewManager ¶
func NewSystemd ¶
func (*Manager) AddProc ¶
func (*Manager) AddThread ¶
func (*Manager) Controllers ¶
func (*Manager) Delete ¶
func (*Manager) DeleteSystemd ¶
func (*Manager) EventChan ¶
func (*Manager) Freeze ¶
func (*Manager) MemoryEventFD ¶
MemoryEventFD returns inotify file descriptor and 'memory.events' inotify watch descriptor
func (*Manager) MoveTo ¶
func (*Manager) NewChild ¶
func (*Manager) Procs ¶
func (*Manager) RootControllers ¶
func (*Manager) Stat ¶
func (*Manager) Thaw ¶
func (*Manager) ToggleControllers ¶
func (c *Manager) ToggleControllers(controllers []string, t ControllerToggle) error
func (*Manager) Update ¶
type Memory ¶
func (*Memory) Values ¶
type Pids ¶
type Pids struct { Max int64 }
func (*Pids) Values ¶
type RDMA ¶
type RDMA struct { Limit []RDMAEntry }
func (*RDMA) Values ¶
type RDMAEntry ¶
func (RDMAEntry) String ¶
type Resources ¶
type Resources struct { CPU *CPU Memory *Memory Pids *Pids IO *IO RDMA *RDMA HugeTlb *HugeTlb // When len(Devices) is zero, devices are not controlled Devices []specs.LinuxDeviceCgroup }
Resources for a cgroups v2 unified hierarchy
func ToResources ¶
func ToResources(spec *specs.LinuxResources) *Resources
ToResources converts the oci LinuxResources struct into a v2 Resources type for use with this package.
converting cgroups configuration from v1 to v2 ref: https://github.com/containers/crun/blob/master/crun.1.md#cgroup-v2
func (*Resources) EnabledControllers ¶
EnabledControllers returns the list of all not nil resource controllers
func (*Resources) Values ¶
Values returns the raw filenames and values that can be written to the unified hierarchy
type State ¶
type State string
State is a type that represents the state of the current cgroup
const ( Unknown State = "" Thawed State = "thawed" Frozen State = "frozen" Deleted State = "deleted" )
func (State) Values ¶
type Value ¶
type Value struct {
// contains filtered or unexported fields
}
Value of a cgroup setting
Source Files ¶
cpu.go devicefilter.go ebpf.go errors.go hugetlb.go io.go manager.go memory.go paths.go pids.go rdma.go state.go utils.go
Directories ¶
Path | Synopsis |
---|---|
v2/stats |
- Version
- v1.1.0 (latest)
- Published
- Oct 27, 2022
- Platform
- linux/amd64
- Imports
- 21 packages
- Last checked
- 1 month ago –
Tools for package owners.