diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml index 99464eb14a3..3f5eaf3ef9f 100644 --- a/man/kernel-command-line.xml +++ b/man/kernel-command-line.xml @@ -71,8 +71,6 @@ systemd.default_standard_error= systemd.setenv= systemd.machine_id= - systemd.unified_cgroup_hierarchy - systemd.legacy_systemd_cgroup_controller systemd.set_credential= systemd.import_credentials= diff --git a/man/sd_bus_creds_get_pid.xml b/man/sd_bus_creds_get_pid.xml index 48007f50bd8..56cfa4efa57 100644 --- a/man/sd_bus_creds_get_pid.xml +++ b/man/sd_bus_creds_get_pid.xml @@ -340,9 +340,8 @@ that kernel threads do not have a command line, in which case -ENXIO is returned. - sd_bus_creds_get_cgroup() will retrieve - the control group path. See Control Groups version 1. + sd_bus_creds_get_cgroup() will retrieve the control group path. See Control Groups v2. sd_bus_creds_get_unit() will retrieve diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml index a6d9671952b..074eeb246bb 100644 --- a/man/systemd-cgtop.xml +++ b/man/systemd-cgtop.xml @@ -45,16 +45,12 @@ one iteration. The argument, if given, is honored. This mode is suitable for scripting. - Resource usage is only accounted for control groups in the - relevant hierarchy, i.e. CPU usage is only accounted for control - groups in the cpuacct hierarchy, memory usage - only for those in memory and disk I/O usage for - those in blkio. If resource monitoring for - these resources is required, it is recommended to add the - CPUAccounting=1, - MemoryAccounting=1 and - BlockIOAccounting=1 settings in the unit files - in question. See + Resource usage is only accounted for control groups with the appropriate controllers turned on: + cpu controller for CPU usage, memory controller for memory usage, + and io contoller for disk I/O consumption. If resource monitoring for these resources + is required, it is recommended to add the CPUAccounting=1, + MemoryAccounting=1 and IOAccounting=1 settings in the unit files in + question. See systemd.resource-control5 for details. @@ -63,13 +59,10 @@ the CPU load value is going to be between 0% and 800%. The number of processors can be found in /proc/cpuinfo. - To emphasize this: unless - CPUAccounting=1, - MemoryAccounting=1 and - BlockIOAccounting=1 are enabled for the - services in question, no resource accounting will be available for - system services and the data shown by - systemd-cgtop will be incomplete. + To emphasize: unless CPUAccounting=1, MemoryAccounting=1, and + IOAccounting=1 are enabled for the services in question, no resource accounting will + be available for system services and the data shown by systemd-cgtop will be + incomplete. diff --git a/man/systemd-run.xml b/man/systemd-run.xml index ab1fb825671..794ff635ed4 100644 --- a/man/systemd-run.xml +++ b/man/systemd-run.xml @@ -447,14 +447,13 @@ Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20. Limiting resources available to a command - # systemd-run -p BlockIOWeight=10 updatedb + # systemd-run -p IOWeight=10 updatedb - This command invokes the - updatedb8 + This command invokes the updatedb8 tool, but lowers the block I/O weight for it to 10. See systemd.resource-control5 - for more information on the BlockIOWeight= - property. + for more information on the IOWeight= property. diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml index 065bbd5a647..36f25f94e4f 100644 --- a/man/systemd-system.conf.xml +++ b/man/systemd-system.conf.xml @@ -437,20 +437,22 @@ DefaultCPUAccounting= - DefaultBlockIOAccounting= DefaultMemoryAccounting= DefaultTasksAccounting= DefaultIOAccounting= DefaultIPAccounting= Configure the default resource accounting settings, as configured per-unit by - CPUAccounting=, BlockIOAccounting=, MemoryAccounting=, - TasksAccounting=, IOAccounting= and IPAccounting=. See + CPUAccounting=, MemoryAccounting=, + TasksAccounting=, IOAccounting= and + IPAccounting=. See systemd.resource-control5 for details on the per-unit settings. DefaultTasksAccounting= defaults to yes, - DefaultMemoryAccounting= to &MEMORY_ACCOUNTING_DEFAULT;. DefaultCPUAccounting= - defaults to yes if enabling CPU accounting doesn't require the CPU controller to be enabled (Linux 4.15+ using the - unified hierarchy for resource control), otherwise it defaults to no. The other three settings default to no. + DefaultMemoryAccounting= to + &MEMORY_ACCOUNTING_DEFAULT;. DefaultCPUAccounting= defaults to yes if enabling CPU + accounting doesn't require the CPU controller to be enabled (Linux 4.15+ using the unified hierarchy + for resource control), otherwise it defaults to no. The other three settings default to + no. diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml index c16eb3951a1..ba4a14440a8 100644 --- a/man/systemd.resource-control.xml +++ b/man/systemd.resource-control.xml @@ -98,60 +98,6 @@ - - Unified and Legacy Control Group Hierarchies - - The unified control group hierarchy is the new version of kernel control group interface, see - Control Groups v2. - Depending on the resource type, there are differences in resource control capabilities. Also, because of - interface changes, some resource types have separate set of options on the unified hierarchy. - - - - - - CPU - - CPUWeight= and StartupCPUWeight= replace - CPUShares= and StartupCPUShares=, respectively. - - The cpuacct controller does not exist separately on the unified hierarchy. - - - - - Memory - - MemoryMax= replaces MemoryLimit=. MemoryLow= - and MemoryHigh= are effective only on unified hierarchy. - - - - - IO - - IO-prefixed settings are a superset of and replace - BlockIO-prefixed ones. On unified hierarchy, IO resource control also applies - to buffered writes. - - - - - - - To ease the transition, there is best-effort translation between the two versions of settings. For each - controller, if any of the settings for the unified hierarchy are present, all settings for the legacy hierarchy are - ignored. If the resulting settings are for the other type of hierarchy, the configurations are translated before - application. - - Legacy control group hierarchy (see Control Groups version 1), - also called cgroup-v1, doesn't allow safe delegation of controllers to unprivileged processes. If the - system uses the legacy control group hierarchy, resource control is disabled for the systemd user - instance, see - systemd1. - - Options @@ -205,8 +151,6 @@ CPUWeight= applies to normal runtime of the system, and if the former is not set also to the startup and shutdown phases. Using StartupCPUWeight= allows prioritizing specific services at boot-up and shutdown differently than during normal runtime. - - These settings replace CPUShares= and StartupCPUShares=. @@ -332,9 +276,6 @@ For details about this control group attribute, see Memory Interface Files. - This setting is supported only if the unified control group hierarchy is used and disables - MemoryLimit=. - Units may have their children use a default memory.min or memory.low value by specifying DefaultMemoryMin= or DefaultMemoryLow=, which has the same semantics as @@ -361,9 +302,6 @@ special value infinity, no memory throttling is applied. This controls the memory.high control group attribute. For details about this control group attribute, see Memory Interface Files. - - This setting is supported only if the unified control group hierarchy is used and disables - MemoryLimit=. @@ -382,8 +320,6 @@ assigned the special value infinity, no memory limit is applied. This controls the memory.max control group attribute. For details about this control group attribute, see Memory Interface Files. - - This setting replaces MemoryLimit=. @@ -398,9 +334,6 @@ special value infinity, no swap limit is applied. This controls the memory.swap.max control group attribute. For details about this control group attribute, see Memory Interface Files. - - This setting is supported only if the unified control group hierarchy is used and disables - MemoryLimit=. @@ -427,13 +360,14 @@ TasksMax=N - Specify the maximum number of tasks that may be created in the unit. This ensures that the number of - tasks accounted for the unit (see above) stays below a specific limit. This either takes an absolute number - of tasks or a percentage value that is taken relative to the configured maximum number of tasks on the - system. If assigned the special value infinity, no tasks limit is applied. This controls - the pids.max control group attribute. For details about this control group attribute, see - Process Number Controller. - + Specify the maximum number of tasks that may be created in the unit. This ensures that the + number of tasks accounted for the unit (see above) stays below a specific limit. This either takes + an absolute number of tasks or a percentage value that is taken relative to the configured maximum + number of tasks on the system. If assigned the special value infinity, no tasks + limit is applied. This controls the pids.max control group attribute. For + details about this control group attribute, the + pids controller + . The system default for this setting may be controlled with DefaultTasksMax= in @@ -451,9 +385,6 @@ therein. The system default for this setting may be controlled with DefaultIOAccounting= in systemd-system.conf5. - - This setting replaces BlockIOAccounting= and disables settings prefixed with - BlockIO or StartupBlockIO. @@ -477,9 +408,6 @@ the system, and if the former is not set also to the startup and shutdown phases. This allows prioritizing specific services at boot-up and shutdown differently than during runtime. - - These settings replace BlockIOWeight= and StartupBlockIOWeight= - and disable settings prefixed with BlockIO or StartupBlockIO. @@ -496,9 +424,6 @@ For details about this control group attribute, see IO Interface Files. - This setting replaces BlockIODeviceWeight= and disables settings prefixed with - BlockIO or StartupBlockIO. - The specified device node should reference a block device that has an I/O scheduler associated, i.e. should not refer to partition or loopback block devices, but to the originating, physical device. When a path to a regular file or directory is specified it is attempted to @@ -527,10 +452,6 @@ url="https://docs.kernel.org/admin-guide/cgroup-v2.html#io-interface-files">IO Interface Files. - These settings replace BlockIOReadBandwidth= and - BlockIOWriteBandwidth= and disable settings prefixed with BlockIO or - StartupBlockIO. - Similar restrictions on block device discovery as for IODeviceWeight= apply, see above. @@ -553,9 +474,6 @@ url="https://docs.kernel.org/admin-guide/cgroup-v2.html#io-interface-files">IO Interface Files. - These settings are supported only if the unified control group hierarchy is used and disable settings - prefixed with BlockIO or StartupBlockIO. - Similar restrictions on block device discovery as for IODeviceWeight= apply, see above. @@ -935,11 +853,8 @@ RestrictNetworkInterfaces=~eth1 strings: a device node specifier followed by a combination of r, w, m to control reading, writing, or creation of the specific device node(s) by the unit - (mknod), respectively. On cgroup-v1 this controls the - devices.allow control group attribute. For details about this control group - attribute, see Device Whitelist Controller. - In the unified cgroup hierarchy this functionality is implemented using eBPF filtering. + (mknod), respectively. This functionality is implemented using eBPF + filtering. When access to all physical devices should be disallowed, PrivateDevices= may be used instead. See @@ -1188,149 +1103,6 @@ DeviceAllow=/dev/loop-control - - Deprecated Options - - The following options are deprecated. Use the indicated superseding options instead: - - - - - CPUShares=weight - StartupCPUShares=weight - - - Assign the specified CPU time share weight to the processes executed. These options take an integer - value and control the cpu.shares control group attribute. The allowed range is 2 to - 262144. Defaults to 1024. For details about this control group attribute, see CFS Scheduler. - The available CPU time is split up among all units within one slice relative to their CPU time share - weight. - - While StartupCPUShares= applies to the startup and shutdown phases of the system, - CPUShares= applies to normal runtime of the system, and if the former is not set also to - the startup and shutdown phases. Using StartupCPUShares= allows prioritizing specific services at - boot-up and shutdown differently than during normal runtime. - - Implies CPUAccounting=yes. - - These settings are deprecated. Use CPUWeight= and - StartupCPUWeight= instead. - - - - - MemoryLimit=bytes - - - Specify the limit on maximum memory usage of the executed processes. The limit specifies how much - process and kernel memory can be used by tasks in this unit. Takes a memory size in bytes. If the value is - suffixed with K, M, G or T, the specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or - Terabytes (with the base 1024), respectively. Alternatively, a percentage value may be specified, which is - taken relative to the installed physical memory on the system. If assigned the special value - infinity, no memory limit is applied. This controls the - memory.limit_in_bytes control group attribute. For details about this control group - attribute, see Memory Resource Controller. - - Implies MemoryAccounting=yes. - - This setting is deprecated. Use MemoryMax= instead. - - - - - BlockIOAccounting= - - - Turn on Block I/O accounting for this unit, if the legacy control group hierarchy is used on the - system. Takes a boolean argument. Note that turning on block I/O accounting for one unit will also implicitly - turn it on for all units contained in the same slice and all for its parent slices and the units contained - therein. The system default for this setting may be controlled with - DefaultBlockIOAccounting= in - systemd-system.conf5. - - This setting is deprecated. Use IOAccounting= instead. - - - - - BlockIOWeight=weight - StartupBlockIOWeight=weight - - Set the default overall block I/O weight for the executed processes, if the legacy control - group hierarchy is used on the system. Takes a single weight value (between 10 and 1000) to set the default - block I/O weight. This controls the blkio.weight control group attribute, which defaults to - 500. For details about this control group attribute, see Block IO Controller. - The available I/O bandwidth is split up among all units within one slice relative to their block I/O - weight. - - While StartupBlockIOWeight= only - applies to the startup and shutdown phases of the system, - BlockIOWeight= applies to the later runtime - of the system, and if the former is not set also to the - startup and shutdown phases. This allows prioritizing specific services at - boot-up and shutdown differently than during runtime. - - Implies - BlockIOAccounting=yes. - - These settings are deprecated. Use IOWeight= and StartupIOWeight= - instead. - - - - - - BlockIODeviceWeight=device weight - - - Set the per-device overall block I/O weight for the executed processes, if the legacy control group - hierarchy is used on the system. Takes a space-separated pair of a file path and a weight value to specify - the device specific weight value, between 10 and 1000. (Example: "/dev/sda 500"). The file path may be - specified as path to a block device node or as any other file, in which case the backing block device of the - file system of the file is determined. This controls the blkio.weight_device control group - attribute, which defaults to 1000. Use this option multiple times to set weights for multiple devices. For - details about this control group attribute, see Block IO Controller. - - Implies - BlockIOAccounting=yes. - - This setting is deprecated. Use IODeviceWeight= instead. - - - - - BlockIOReadBandwidth=device bytes - BlockIOWriteBandwidth=device bytes - - - Set the per-device overall block I/O bandwidth limit for the executed processes, if the legacy control - group hierarchy is used on the system. Takes a space-separated pair of a file path and a bandwidth value (in - bytes per second) to specify the device specific bandwidth. The file path may be a path to a block device - node, or as any other file in which case the backing block device of the file system of the file is used. If - the bandwidth is suffixed with K, M, G, or T, the specified bandwidth is parsed as Kilobytes, Megabytes, - Gigabytes, or Terabytes, respectively, to the base of 1000. (Example: - "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5M"). This controls the - blkio.throttle.read_bps_device and blkio.throttle.write_bps_device - control group attributes. Use this option multiple times to set bandwidth limits for multiple devices. For - details about these control group attributes, see Block IO Controller. - - - Implies - BlockIOAccounting=yes. - - These settings are deprecated. Use IOReadBandwidthMax= and - IOWriteBandwidthMax= instead. - - - - - - See Also diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index ea95ba88692..c7def6bdcb1 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1575,25 +1575,14 @@ ConditionControlGroupController= Check whether given cgroup controllers (e.g. cpu) are available - for use on the system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used. - + for use on the system. Multiple controllers may be passed with a space separating them; in this case the condition will only pass if all listed controllers are available for use. Controllers unknown to systemd are - ignored. Valid controllers are cpu, cpuacct, - io, blkio, memory, - devices, and pids. Even if available in the kernel, a - particular controller may not be available if it was disabled on the kernel command line with - cgroup_disable=controller. - - Alternatively, two special strings v1 and v2 may be - specified (without any controller names). v2 will pass if the unified v2 cgroup - hierarchy is used, and v1 will pass if the legacy v1 hierarchy or the hybrid - hierarchy are used (see the discussion of systemd.unified_cgroup_hierarchy and - systemd.legacy_systemd_cgroup_controller in - systemd.service5 - for more information). - + ignored. Valid controllers are cpu, cpuset, + io, memory, and pids. Even if available in + the kernel, a particular controller may not be available if it was disabled on the kernel command + line with cgroup_disable=controller. diff --git a/man/systemd.xml b/man/systemd.xml index 30484e09a9b..d19318929ac 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -207,21 +207,17 @@ memory its accounting data is flushed out too. However, this data is generally not lost, as a journal log record is generated declaring the consumed resources whenever a unit shuts down. - Processes systemd spawns are placed in individual Linux - control groups named after the unit which they belong to in the - private systemd hierarchy. (see Control Groups version 1 - for more information about control groups, or short "cgroups"). - systemd uses this to effectively keep track of processes. Control - group information is maintained in the kernel, and is accessible - via the file system hierarchy (beneath - /sys/fs/cgroup/systemd/), or in tools such as - systemd-cgls1 - or - ps1 - (ps xawf -eo pid,user,cgroup,args is - particularly useful to list all processes and the systemd units - they belong to.). + Processes systemd spawns are placed in individual Linux control groups named after the unit which + they belong to in the private systemd hierarchy. (see Control Groups v2 for more information + about control groups, or short "cgroups"). systemd uses this to effectively keep track of + processes. Control group information is maintained in the kernel, and is accessible via the file system + hierarchy (beneath /sys/fs/cgroup/), or in tools such as systemd-cgls1 or + ps1 (ps + xawf -eo pid,user,cgroup,args is particularly useful to list all processes and the systemd + units they belong to.). systemd is compatible with the SysV init system to a large degree: SysV init scripts are supported and simply read as an @@ -910,41 +906,6 @@ for every boot. - - systemd.unified_cgroup_hierarchy - - When specified without an argument or with a true argument, - enables the usage of - unified cgroup hierarchy - (a.k.a. cgroups-v2). When specified with a false argument, fall back to - hybrid or full legacy cgroup hierarchy. - - If this option is not specified, the default behaviour is determined - during compilation (the meson - option). If the kernel does not support unified cgroup hierarchy, the legacy - hierarchy will be used even if this option is specified. - - - - - systemd.legacy_systemd_cgroup_controller - - Takes effect if the full unified cgroup hierarchy is not used - (see previous option). When specified without an argument or with a true - argument, disables the use of "hybrid" cgroup hierarchy (i.e. a cgroups-v2 - tree used for systemd, and - legacy - cgroup hierarchy, a.k.a. cgroups-v1, for other controllers), and - forces a full "legacy" mode. When specified with a false argument, enables - the use of "hybrid" hierarchy. - - If this option is not specified, the default behaviour is determined - during compilation (the meson - option). If the kernel does not support unified cgroup hierarchy, the legacy - hierarchy will be used even if this option is specified. - - - systemd.set_credential= diff --git a/src/core/system.conf.in b/src/core/system.conf.in index 318c0348264..a4e79d30330 100644 --- a/src/core/system.conf.in +++ b/src/core/system.conf.in @@ -54,7 +54,6 @@ #DefaultCPUAccounting=no #DefaultIOAccounting=no #DefaultIPAccounting=no -#DefaultBlockIOAccounting=no #DefaultMemoryAccounting={{ 'yes' if MEMORY_ACCOUNTING_DEFAULT else 'no' }} #DefaultTasksAccounting=yes #DefaultTasksMax=15%