mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
3f65946756
A cgroup manager's Set method sets cgroup resources, but historically it was accepting configs.Cgroups. Refactor it to accept resources only. This is an improvement from the API point of view, as the method can not change cgroup configuration (such as path to the cgroup etc), it can only set (modify) its resources/limits. This also lays the foundation for complicated resource updates, as now Set has two sets of resources -- the one that was previously specified during cgroup manager creation (or the previous Set), and the one passed in the argument, so it could deduce the difference between these. This is a long term goal though. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
// +build linux
|
|
|
|
package cgroups
|
|
|
|
import (
|
|
"github.com/opencontainers/runc/libcontainer/configs"
|
|
)
|
|
|
|
type Manager interface {
|
|
// Applies cgroup configuration to the process with the specified pid
|
|
Apply(pid int) error
|
|
|
|
// Returns the PIDs inside the cgroup set
|
|
GetPids() ([]int, error)
|
|
|
|
// Returns the PIDs inside the cgroup set & all sub-cgroups
|
|
GetAllPids() ([]int, error)
|
|
|
|
// Returns statistics for the cgroup set
|
|
GetStats() (*Stats, error)
|
|
|
|
// Toggles the freezer cgroup according with specified state
|
|
Freeze(state configs.FreezerState) error
|
|
|
|
// Destroys the cgroup set
|
|
Destroy() error
|
|
|
|
// Path returns a cgroup path to the specified controller/subsystem.
|
|
// For cgroupv2, the argument is unused and can be empty.
|
|
Path(string) string
|
|
|
|
// Sets the cgroup as configured.
|
|
Set(r *configs.Resources) error
|
|
|
|
// GetPaths returns cgroup path(s) to save in a state file in order to restore later.
|
|
//
|
|
// For cgroup v1, a key is cgroup subsystem name, and the value is the path
|
|
// to the cgroup for this subsystem.
|
|
//
|
|
// For cgroup v2 unified hierarchy, a key is "", and the value is the unified path.
|
|
GetPaths() map[string]string
|
|
|
|
// GetCgroups returns the cgroup data as configured.
|
|
GetCgroups() (*configs.Cgroup, error)
|
|
|
|
// GetFreezerState retrieves the current FreezerState of the cgroup.
|
|
GetFreezerState() (configs.FreezerState, error)
|
|
|
|
// Whether the cgroup path exists or not
|
|
Exists() bool
|
|
|
|
// OOMKillCount reports OOM kill count for the cgroup.
|
|
OOMKillCount() (uint64, error)
|
|
}
|