cgroups

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2021 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Tasks is a cgroup's "tasks" entry.
	Tasks = "tasks"
	// Procs is cgroup's "cgroup.procs" entry.
	Procs = "cgroup.procs"
	// CpuShares is the cpu controller's "cpu.shares" entry.
	CpuShares = "cpu.shares"
	// CpuPeriod is the cpu controller's "cpu.cfs_period_us" entry.
	CpuPeriod = "cpu.cfs_period_us"
	// CpuQuota is the cpu controller's "cpu.cfs_quota_us" entry.
	CpuQuota = "cpu.cfs_quota_us"
	// CpusetCpus is the cpuset controller's cpuset.cpus entry.
	CpusetCpus = "cpuset.cpus"
	// CpusetMems is the cpuset controller's cpuset.mems entry.
	CpusetMems = "cpuset.mems"
)

nolint

Variables

View Source
var (

	// KubeletRoot is the --cgroup-root option the kubelet is running with.
	KubeletRoot = ""
)

Functions

func GetMountDir

func GetMountDir() string

GetMountDir returns the common mount point for cgroup v1 controllers.

func GetV2Dir

func GetV2Dir() string

GetV2Dir returns the cgroup v2 unified mount directory.

func NewFsiMock

func NewFsiMock(files map[string]mockFile) fsiIface

func ResetBlkioParameters

func ResetBlkioParameters(groupDir string, blockIO BlockIOParameters) error

ResetBlkioParameters adds new, changes existing and removes missing blockIO parameters in cgroupsDir.

func SetBlkioParameters

func SetBlkioParameters(group string, blockIO BlockIOParameters) error

SetBlkioParameters writes BlockIO parameters to files in cgroups blkio contoller directory.

func SetMountDir

func SetMountDir(dir string)

SetMountDir sets the common mount point for the cgroup v1 controllers.

func SetV2Dir

func SetV2Dir(dir string)

SetV2Dir sets the unified cgroup v2 mount directory.

Types

type BlockIOParameters

type BlockIOParameters struct {
	Weight                  int64
	WeightDevice            DeviceWeights
	ThrottleReadBpsDevice   DeviceRates
	ThrottleWriteBpsDevice  DeviceRates
	ThrottleReadIOPSDevice  DeviceRates
	ThrottleWriteIOPSDevice DeviceRates
}

BlockIOParameters contains cgroups blockio controller parameters.

Effects of Weight and Rate values in SetBlkioParameters(): Value | Effect -------+-------------------------------------------------------------------

  -1  |  Do not write to cgroups, value is missing.
   0  |  Write to cgroups, will clear the setting as specified in cgroups blkio interface.
other |  Write to cgroups, sets the value.

func GetBlkioParameters

func GetBlkioParameters(group string) (BlockIOParameters, error)

GetBlkioParameters returns BlockIO parameters from files in cgroups blkio controller directory.

func NewBlockIOParameters

func NewBlockIOParameters() BlockIOParameters

NewBlockIOParameters creates new BlockIOParameters instance.

type CgroupID

type CgroupID struct {
	sync.Mutex
	// contains filtered or unexported fields
}

CgroupID implements mapping kernel cgroup IDs to cgroupfs paths with transparent caching.

func NewCgroupID

func NewCgroupID(root string) *CgroupID

NewCgroupID creates a new CgroupID map/cache.

func (*CgroupID) Find

func (cgid *CgroupID) Find(id uint64) (string, error)

Find finds the path for the given cgroup id.

type Controller

type Controller int

Controller is our enumerated type for cgroup controllers.

const (
	// UnkownController represents a controller of unknown type.
	UnknownController Controller = iota
	// blkio cgroup controller.
	Blkio
	// cpu cgroup controller.
	Cpu
	// cpuacct cgroup controller.
	Cpuacct
	// cpuset cgroup controller.
	Cpuset
	// devices cgroup controller.
	Devices
	// freezer cgroup controller.
	Freezer
	// hugetlb cgroup controller.
	Hugetlb
	// memory cgroup controller.
	Memory
	// net_cls cgroup controller.
	NetCls
	// net_prio cgroup controller.
	NetPrio
	// per_event cgroup controller.
	PerfEvent
	// pids cgroup controller.
	Pids
)

nolint

func (Controller) Group

func (c Controller) Group(group string) Group

Group returns the given group for the controller.

func (Controller) Path

func (c Controller) Path() string

Path returns the absolute path of the given controller.

func (Controller) RelPath

func (c Controller) RelPath() string

RelPath returns the relative path of the given controller.

func (Controller) String

func (c Controller) String() string

String returns the name of the given controller.

type DeviceParameters

type DeviceParameters interface {
	Append(maj, min, val int64)
	Update(maj, min, val int64)
}

DeviceParameters interface provides functions common to DeviceWeights and DeviceRates.

type DeviceRate

type DeviceRate struct {
	Major int64
	Minor int64
	Rate  int64
}

DeviceRate contains values for - blkio.throttle.read_bps_device - blkio.throttle.write_bps_device - blkio.throttle.read_iops_device - blkio.throttle.write_iops_device

func NewDeviceRate

func NewDeviceRate() DeviceRate

NewDeviceRate creates new DeviceRate instance.

type DeviceRates

type DeviceRates []DeviceRate

DeviceRates contains throttling rates for devices.

func (*DeviceRates) Append

func (r *DeviceRates) Append(maj, min, val int64)

Append appends (major, minor, value) to DeviceRates slice.

func (*DeviceRates) Update

func (r *DeviceRates) Update(maj, min, val int64)

Update updates device rate in DeviceRates slice, or appends it if not found.

type DeviceWeight

type DeviceWeight struct {
	Major  int64
	Minor  int64
	Weight int64
}

DeviceWeight contains values for - blkio.[io-scheduler].weight

func NewDeviceWeight

func NewDeviceWeight() DeviceWeight

NewDeviceWeight creates new DeviceWeight instance.

type DeviceWeights

type DeviceWeights []DeviceWeight

DeviceWeights contains weights for devices.

func (*DeviceWeights) Append

func (w *DeviceWeights) Append(maj, min, val int64)

Append appends (major, minor, value) to DeviceWeights slice.

func (*DeviceWeights) Update

func (w *DeviceWeights) Update(maj, min, val int64)

Update updates device weight in DeviceWeights slice, or appends it if not found.

type Group

type Group string

Group represents a control group.

func AsGroup

func AsGroup(absDir string) Group

AsGroup returns the group for the given absolute directory path.

func (Group) AddProcesses

func (g Group) AddProcesses(pids ...string) error

AddProcesses writes the given process pids to the group.

func (Group) AddTasks

func (g Group) AddTasks(pids ...string) error

AddTasks writes the given thread pids to the group.

func (Group) Controller

func (g Group) Controller() Controller

Controller returns the controller for the group.

func (Group) GetProcesses

func (g Group) GetProcesses() ([]string, error)

GetProcesses reads the pids of processes currently assigned to the group.

func (Group) GetTasks

func (g Group) GetTasks() ([]string, error)

GetTasks reads the pids of threads currently assigned to the group.

func (Group) Read

func (g Group) Read(entry string) (string, error)

Read the groups entry and return contents in a string

func (Group) Write

func (g Group) Write(entry, format string, args ...interface{}) error

Write writes the formatted data to the groups entry.

Jump to

Keyboard shortcuts

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