cgroup

package
v0.0.0-...-433fd04 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2021 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Unavailable indicates the lack of controller.
	Unavailable = Backend(0)

	// V1 indicates the controller is backed by Cgroup V1.
	V1 = Backend(1)

	// V2 indicates the controller is backed by Cgroup V2.
	V2 = Backend(2)
)

Variables

View Source
var DeviceSchedRebalance = make(chan []string, 2)

DeviceSchedRebalance channel for scheduling a CPU rebalance.

View Source
var ErrControllerMissing = fmt.Errorf("Cgroup controller is missing")

ErrControllerMissing indicates that the requested controller isn't setup on the system.

View Source
var ErrUnknownVersion = fmt.Errorf("Unknown cgroup version")

ErrUnknownVersion indicates that a version other than those supported was detected during init.

Functions

func ParseCPU

func ParseCPU(cpuAllowance string, cpuPriority string) (int64, int64, int64, error)

ParseCPU parses CPU allowances.

func TaskSchedulerTrigger

func TaskSchedulerTrigger(srcType string, srcName string, srcStatus string)

TaskSchedulerTrigger triggers a CPU rebalance.

Types

type Backend

type Backend int

Backend indicates whether to use v1, v2 or unavailable.

type CGroup

type CGroup struct {
	UnifiedCapable bool
	// contains filtered or unexported fields
}

CGroup represents the main cgroup abstraction.

func New

func New(rw ReadWriter) (*CGroup, error)

New setups a new CGroup abstraction using the provided read/writer.

func NewFileReadWriter

func NewFileReadWriter(pid int, unifiedCapable bool) (*CGroup, error)

NewFileReadWriter returns a CGroup instance using the filesystem as its backend.

func (*CGroup) GetBlkioWeight

func (cg *CGroup) GetBlkioWeight() (int64, error)

GetBlkioWeight returns the currently allowed range of weights

func (*CGroup) GetCPUAcctUsage

func (cg *CGroup) GetCPUAcctUsage() (int64, error)

GetCPUAcctUsage returns the total CPU time in ns used by processes

func (*CGroup) GetCpuset

func (cg *CGroup) GetCpuset() (string, error)

GetCpuset returns the current set of CPUs for the cgroup

func (*CGroup) GetEffectiveCpuset

func (cg *CGroup) GetEffectiveCpuset() (string, error)

GetEffectiveCpuset returns the current set of CPUs for the cgroup

func (*CGroup) GetMemoryLimit

func (cg *CGroup) GetMemoryLimit() (int64, error)

GetMemoryLimit return the hard limit for memory

func (*CGroup) GetMemoryMaxUsage

func (cg *CGroup) GetMemoryMaxUsage() (int64, error)

GetMemoryMaxUsage returns the record high for memory usage

func (*CGroup) GetMemorySoftLimit

func (cg *CGroup) GetMemorySoftLimit() (int64, error)

GetMemorySoftLimit returns the soft limit for memory

func (*CGroup) GetMemorySwapLimit

func (cg *CGroup) GetMemorySwapLimit() (int64, error)

GetMemorySwapLimit returns the hard limit on swap usage

func (*CGroup) GetMemorySwapMaxUsage

func (cg *CGroup) GetMemorySwapMaxUsage() (int64, error)

GetMemorySwapMaxUsage returns the record high for swap usage

func (*CGroup) GetMemorySwapUsage

func (cg *CGroup) GetMemorySwapUsage() (int64, error)

GetMemorySwapUsage return current usage of swap

func (*CGroup) GetMemoryUsage

func (cg *CGroup) GetMemoryUsage() (int64, error)

GetMemoryUsage returns the current use of memory

func (*CGroup) GetProcessesUsage

func (cg *CGroup) GetProcessesUsage() (int64, error)

GetProcessesUsage returns the current number of pids

func (*CGroup) SetBlkioLimit

func (cg *CGroup) SetBlkioLimit(dev string, oType string, uType string, limit int64) error

SetBlkioLimit sets the specified read or write limit for a device

func (*CGroup) SetBlkioWeight

func (cg *CGroup) SetBlkioWeight(limit int64) error

SetBlkioWeight sets the currently allowed range of weights

func (*CGroup) SetCPUCfsLimit

func (cg *CGroup) SetCPUCfsLimit(limitPeriod int64, limitQuota int64) error

SetCPUCfsLimit sets the quota and duration in ms for each scheduling period

func (*CGroup) SetCPUShare

func (cg *CGroup) SetCPUShare(limit int64) error

SetCPUShare sets the weight of each group in the same hierarchy

func (*CGroup) SetCpuset

func (cg *CGroup) SetCpuset(limit string) error

SetCpuset set the currently allowed set of CPUs for the cgroups

func (*CGroup) SetHugepagesLimit

func (cg *CGroup) SetHugepagesLimit(pageType string, limit int64) error

SetHugepagesLimit applies a limit to the number of processes

func (*CGroup) SetMaxProcesses

func (cg *CGroup) SetMaxProcesses(limit int64) error

SetMaxProcesses applies a limit to the number of processes

func (*CGroup) SetMemoryLimit

func (cg *CGroup) SetMemoryLimit(limit int64) error

SetMemoryLimit sets the hard limit for memory

func (*CGroup) SetMemorySoftLimit

func (cg *CGroup) SetMemorySoftLimit(limit int64) error

SetMemorySoftLimit set the soft limit for memory

func (*CGroup) SetMemorySwapLimit

func (cg *CGroup) SetMemorySwapLimit(limit int64) error

SetMemorySwapLimit sets the hard limit for swap

func (*CGroup) SetMemorySwappiness

func (cg *CGroup) SetMemorySwappiness(limit int64) error

SetMemorySwappiness sets swappiness paramet of vmscan

func (*CGroup) SetNetIfPrio

func (cg *CGroup) SetNetIfPrio(limit string) error

SetNetIfPrio sets the priority for the process

type Info

type Info struct {
	// Layout is one of CgroupsDisabled, CgroupsUnified, CgroupsHybrid, CgroupsLegacy
	Layout Layout

	// Namespacing indicates support for the cgroup namespace
	Namespacing bool
}

Info contains system cgroup information

func GetInfo

func GetInfo() Info

GetInfo returns basic system cgroup information

func (*Info) Mode

func (info *Info) Mode() string

Mode returns the cgroup layout name

func (*Info) Supports

func (info *Info) Supports(resource Resource, cgroup *CGroup) bool

Supports indicates whether or not a given resource is controllable.

func (*Info) SupportsVersion

func (info *Info) SupportsVersion(resource Resource) (Backend, bool)

SupportsVersion indicates whether or not a given cgroup resource is controllable and in which type of cgroup filesystem.

func (*Info) Warnings

func (info *Info) Warnings() []db.Warning

Warnings returns a list of CGroup warnings.

type Layout

type Layout int

Layout determines the cgroup layout on this system

const (
	// CgroupsDisabled indicates that cgroups are not supported
	CgroupsDisabled Layout = iota
	// CgroupsUnified indicates that this is a pure cgroup2 layout
	CgroupsUnified
	// CgroupsHybrid indicates that this is a mixed cgroup1 and cgroup2 layout
	CgroupsHybrid
	// CgroupsLegacy indicates that this is a pure cgroup1 layout
	CgroupsLegacy
)

type ReadWriter

type ReadWriter interface {
	Get(backend Backend, controller string, key string) (string, error)
	Set(backend Backend, controller string, key string, value string) error
}

The ReadWriter interface is used to read/write cgroup data.

type Resource

type Resource int

Resource is a generic type used to abstract resource control features support for the legacy and unified hierarchy.

const (
	// Blkio resource control
	Blkio Resource = iota

	// BlkioWeight resource control
	BlkioWeight

	// CPU resource control
	CPU

	// CPUAcct resource control
	CPUAcct

	// CPUSet resource control
	CPUSet

	// Devices resource control
	Devices

	// Freezer resource control
	Freezer

	// Hugetlb resource control
	Hugetlb

	// Memory resource control
	Memory

	// MemoryMaxUsage resource control
	MemoryMaxUsage

	// MemorySwap resource control
	MemorySwap

	// MemorySwapMaxUsage resource control
	MemorySwapMaxUsage

	// MemorySwapUsage resource control
	MemorySwapUsage

	// MemorySwappiness resource control
	MemorySwappiness

	// NetPrio resource control
	NetPrio

	// Pids resource control
	Pids
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL