Documentation
¶
Overview ¶
Package cgroupfs implements cgroupfs.
A cgroup is a collection of tasks on the system, organized into a tree-like structure similar to a filesystem directory tree. In fact, each cgroup is represented by a directory on cgroupfs, and is manipulated through control files in the directory.
All cgroups on a system are organized into hierarchies. Hierarchies are a distinct tree of cgroups, with a common set of controllers. One or more cgroupfs mounts may point to each hierarchy. These mounts provide a common view into the same tree of cgroups.
A controller (also known as a "resource controller", or a cgroup "subsystem") determines the behaviour of each cgroup.
In addition to cgroupfs, the kernel has a cgroup registry that tracks system-wide state related to cgroups such as active hierarchies and the controllers associated with them.
Since cgroupfs doesn't allow hardlinks, there is a unique mapping between cgroupfs dentries and inodes. Thus, cgroupfs inodes don't need to be ref counted and exist until they're unlinked once or the FS is destroyed.
Synchronization ¶
Cgroup hierarchy creation and destruction is protected by the kernel.CgroupRegistry.mu. Once created, a hierarchy's set of controllers, the filesystem associated with it, and the root cgroup for the hierarchy are immutable.
Membership of tasks within cgroups is protected by cgroupfs.filesystem.tasksMu. Tasks also maintain a set of all cgroups they're in, and this list is protected by Task.mu.
Lock order:
kernel.CgroupRegistry.mu
kernfs.filesystem.mu
kernel.TaskSet.mu
kernel.Task.mu
cgroupfs.filesystem.tasksMu.
cgroupfs.dir.OrderedChildren.mu
Index ¶
Constants ¶
const (
// Name is the default filesystem name.
Name = "cgroup"
)
Variables ¶
var SupportedMountOptions = []string{"all", "cpu", "cpuacct", "cpuset", "devices", "job", "memory", "pids"}
SupportedMountOptions is the set of supported mount options for cgroupfs.
Functions ¶
This section is empty.
Types ¶
type FilesystemType ¶
type FilesystemType struct{}
FilesystemType implements vfs.FilesystemType.
+stateify savable
func (FilesystemType) GetFilesystem ¶
func (fsType FilesystemType) GetFilesystem(ctx context.Context, vfsObj *vfs.VirtualFilesystem, creds *auth.Credentials, source string, opts vfs.GetFilesystemOptions) (*vfs.Filesystem, *vfs.Dentry, error)
GetFilesystem implements vfs.FilesystemType.GetFilesystem.
func (FilesystemType) Name ¶
func (FilesystemType) Name() string
Name implements vfs.FilesystemType.Name.
func (FilesystemType) Release ¶
func (FilesystemType) Release(ctx context.Context)
Release implements vfs.FilesystemType.Release.
type InitialCgroup ¶
type InitialCgroup struct {
// Path is an absolute path relative to the root of a cgroupfs filesystem
// that indicates where to place the init task. An empty string indicates
// the root of the filesystem.
Path string
// SetOwner indicates the UID and GID fields contain valid values. If true,
// Both UID and GID must be provided.
SetOwner bool
// UID of the initial cgroup path components, excluding the root cgroup.
UID auth.KUID
// GID of the initial cgroup path components, excluding the root cgroup.
GID auth.KGID
// SetMode indicates the Mode field contains a valid value.
SetMode bool
// Mode of the initial cgroup path components, excluding the root cgroup.
Mode linux.FileMode
}
InitialCgroup specifies properties of the cgroup for the init task.
+stateify savable
type InternalData ¶
type InternalData struct {
DefaultControlValues map[string]int64
InitialCgroup InitialCgroup
}
InternalData contains internal data passed in to the cgroupfs mount via vfs.GetFilesystemOptions.InternalData.
+stateify savable