diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-08-24 17:00:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-24 17:00:53 +0200 |
commit | 771fe73c75781f52200ffdd30efef9fd870b7476 (patch) | |
tree | 8704fa732ec7fac8bb2b512eaf5a072e80a94f10 | |
parent | 98f3e84342dbb9da48ffa22bfdf122bdae4da1c6 (diff) | |
parent | af9d5d507aae7e037739139931350ea5573fdeff (diff) | |
download | systemd-771fe73c75781f52200ffdd30efef9fd870b7476.tar.gz |
Merge pull request #24072 from poettering/remove-cgroupsv1-docs
decgroupsv1ification: first steps – remove from docs, and generate warnings
-rw-r--r-- | man/kernel-command-line.xml | 14 | ||||
-rw-r--r-- | man/sd_bus_creds_get_pid.xml | 5 | ||||
-rw-r--r-- | man/systemd-cgtop.xml | 27 | ||||
-rw-r--r-- | man/systemd-run.xml | 9 | ||||
-rw-r--r-- | man/systemd-system.conf.xml | 26 | ||||
-rw-r--r-- | man/systemd.resource-control.xml | 265 | ||||
-rw-r--r-- | man/systemd.unit.xml | 21 | ||||
-rw-r--r-- | man/systemd.xml | 74 | ||||
-rw-r--r-- | src/core/load-fragment.c | 44 | ||||
-rw-r--r-- | src/core/system.conf.in | 1 |
10 files changed, 147 insertions, 339 deletions
diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml index 99464eb14a..c648f7779e 100644 --- a/man/kernel-command-line.xml +++ b/man/kernel-command-line.xml @@ -71,8 +71,6 @@ <term><varname>systemd.default_standard_error=</varname></term> <term><varname>systemd.setenv=</varname></term> <term><varname>systemd.machine_id=</varname></term> - <term><varname>systemd.unified_cgroup_hierarchy</varname></term> - <term><varname>systemd.legacy_systemd_cgroup_controller</varname></term> <term><varname>systemd.set_credential=</varname></term> <term><varname>systemd.import_credentials=</varname></term> <listitem> @@ -559,7 +557,19 @@ the hostname, it simply controls the initial hostname set during early boot.</para></listitem> </varlistentry> </variablelist> + </refsect1> + <refsect1> + <title>History</title> + + <variablelist> + <varlistentry> + <term>systemd 252</term> + <listitem><para>Kernel command-line arguments <varname>systemd.unified_cgroup_hierarchy</varname> + and <varname>systemd.legacy_systemd_cgroup_controller</varname> were deprecated. Please switch to + the unified cgroup hierarchy.</para></listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> diff --git a/man/sd_bus_creds_get_pid.xml b/man/sd_bus_creds_get_pid.xml index 48007f50bd..56cfa4efa5 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.</para> - <para><function>sd_bus_creds_get_cgroup()</function> will retrieve - the control group path. See <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/index.html">Control Groups version 1</ulink>. + <para><function>sd_bus_creds_get_cgroup()</function> will retrieve the control group path. See <ulink + url="https://docs.kernel.org/admin-guide/cgroup-v2.html">Control Groups v2</ulink>. </para> <para><function>sd_bus_creds_get_unit()</function> will retrieve diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml index a6d9671952..074eeb246b 100644 --- a/man/systemd-cgtop.xml +++ b/man/systemd-cgtop.xml @@ -45,16 +45,12 @@ one iteration. The <option>--iterations=</option> argument, if given, is honored. This mode is suitable for scripting.</para> - <para>Resource usage is only accounted for control groups in the - relevant hierarchy, i.e. CPU usage is only accounted for control - groups in the <literal>cpuacct</literal> hierarchy, memory usage - only for those in <literal>memory</literal> and disk I/O usage for - those in <literal>blkio</literal>. If resource monitoring for - these resources is required, it is recommended to add the - <varname>CPUAccounting=1</varname>, - <varname>MemoryAccounting=1</varname> and - <varname>BlockIOAccounting=1</varname> settings in the unit files - in question. See + <para>Resource usage is only accounted for control groups with the appropriate controllers turned on: + <literal>cpu</literal> controller for CPU usage, <literal>memory</literal> controller for memory usage, + and <literal>io</literal> contoller for disk I/O consumption. If resource monitoring for these resources + is required, it is recommended to add the <varname>CPUAccounting=1</varname>, + <varname>MemoryAccounting=1</varname> and <varname>IOAccounting=1</varname> settings in the unit files in + question. See <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details.</para> @@ -63,13 +59,10 @@ the CPU load value is going to be between 0% and 800%. The number of processors can be found in <literal>/proc/cpuinfo</literal>.</para> - <para>To emphasize this: unless - <literal>CPUAccounting=1</literal>, - <literal>MemoryAccounting=1</literal> and - <literal>BlockIOAccounting=1</literal> are enabled for the - services in question, no resource accounting will be available for - system services and the data shown by - <command>systemd-cgtop</command> will be incomplete.</para> + <para>To emphasize: unless <literal>CPUAccounting=1</literal>, <literal>MemoryAccounting=1</literal>, and + <literal>IOAccounting=1</literal> are enabled for the services in question, no resource accounting will + be available for system services and the data shown by <command>systemd-cgtop</command> will be + incomplete.</para> </refsect1> <refsect1> diff --git a/man/systemd-run.xml b/man/systemd-run.xml index faf88d560a..00f1586a5b 100644 --- a/man/systemd-run.xml +++ b/man/systemd-run.xml @@ -448,14 +448,13 @@ Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20. <example> <title>Limiting resources available to a command</title> - <programlisting># systemd-run -p BlockIOWeight=10 updatedb</programlisting> + <programlisting># systemd-run -p IOWeight=10 updatedb</programlisting> - <para>This command invokes the - <citerefentry project='man-pages'><refentrytitle>updatedb</refentrytitle><manvolnum>8</manvolnum></citerefentry> + <para>This command invokes the <citerefentry + project='man-pages'><refentrytitle>updatedb</refentrytitle><manvolnum>8</manvolnum></citerefentry> tool, but lowers the block I/O weight for it to 10. See <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry> - for more information on the <varname>BlockIOWeight=</varname> - property.</para> + for more information on the <varname>IOWeight=</varname> property.</para> </example> <example> diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml index 065bbd5a64..ac21c31d9a 100644 --- a/man/systemd-system.conf.xml +++ b/man/systemd-system.conf.xml @@ -437,20 +437,22 @@ <varlistentry> <term><varname>DefaultCPUAccounting=</varname></term> - <term><varname>DefaultBlockIOAccounting=</varname></term> <term><varname>DefaultMemoryAccounting=</varname></term> <term><varname>DefaultTasksAccounting=</varname></term> <term><varname>DefaultIOAccounting=</varname></term> <term><varname>DefaultIPAccounting=</varname></term> <listitem><para>Configure the default resource accounting settings, as configured per-unit by - <varname>CPUAccounting=</varname>, <varname>BlockIOAccounting=</varname>, <varname>MemoryAccounting=</varname>, - <varname>TasksAccounting=</varname>, <varname>IOAccounting=</varname> and <varname>IPAccounting=</varname>. See + <varname>CPUAccounting=</varname>, <varname>MemoryAccounting=</varname>, + <varname>TasksAccounting=</varname>, <varname>IOAccounting=</varname> and + <varname>IPAccounting=</varname>. See <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details on the per-unit settings. <varname>DefaultTasksAccounting=</varname> defaults to yes, - <varname>DefaultMemoryAccounting=</varname> to &MEMORY_ACCOUNTING_DEFAULT;. <varname>DefaultCPUAccounting=</varname> - 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.</para></listitem> + <varname>DefaultMemoryAccounting=</varname> to + &MEMORY_ACCOUNTING_DEFAULT;. <varname>DefaultCPUAccounting=</varname> 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.</para></listitem> </varlistentry> <varlistentry> @@ -591,6 +593,18 @@ </refsect1> <refsect1> + <title>History</title> + + <variablelist> + <varlistentry> + <term>systemd 252</term> + <listitem><para>Option <varname>DefaultBlockIOAccounting=</varname> was deprecated. Please switch + to the unified cgroup hierarchy.</para></listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> <title>See Also</title> <para> <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml index c16eb3951a..940395a442 100644 --- a/man/systemd.resource-control.xml +++ b/man/systemd.resource-control.xml @@ -99,60 +99,6 @@ <!-- We don't have any default dependency here. --> <refsect1> - <title>Unified and Legacy Control Group Hierarchies</title> - - <para>The unified control group hierarchy is the new version of kernel control group interface, see - <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html">Control Groups v2</ulink>. - 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.</para> - - <para> - <variablelist> - - <varlistentry> - <term>CPU</term> - <listitem> - <para><varname>CPUWeight=</varname> and <varname>StartupCPUWeight=</varname> replace - <varname>CPUShares=</varname> and <varname>StartupCPUShares=</varname>, respectively.</para> - - <para>The <literal>cpuacct</literal> controller does not exist separately on the unified hierarchy.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Memory</term> - <listitem> - <para><varname>MemoryMax=</varname> replaces <varname>MemoryLimit=</varname>. <varname>MemoryLow=</varname> - and <varname>MemoryHigh=</varname> are effective only on unified hierarchy.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>IO</term> - <listitem> - <para><literal>IO</literal>-prefixed settings are a superset of and replace - <literal>BlockIO</literal>-prefixed ones. On unified hierarchy, IO resource control also applies - to buffered writes.</para> - </listitem> - </varlistentry> - - </variablelist> - </para> - - <para>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.</para> - - <para>Legacy control group hierarchy (see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/">Control Groups version 1</ulink>), - 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 - <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para> - </refsect1> - - <refsect1> <title>Options</title> <para>Units of the types listed above can have settings @@ -205,8 +151,6 @@ <varname>CPUWeight=</varname> applies to normal runtime of the system, and if the former is not set also to the startup and shutdown phases. Using <varname>StartupCPUWeight=</varname> allows prioritizing specific services at boot-up and shutdown differently than during normal runtime.</para> - - <para>These settings replace <varname>CPUShares=</varname> and <varname>StartupCPUShares=</varname>.</para> </listitem> </varlistentry> @@ -332,9 +276,6 @@ For details about this control group attribute, see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para> - <para>This setting is supported only if the unified control group hierarchy is used and disables - <varname>MemoryLimit=</varname>.</para> - <para>Units may have their children use a default <literal>memory.min</literal> or <literal>memory.low</literal> value by specifying <varname>DefaultMemoryMin=</varname> or <varname>DefaultMemoryLow=</varname>, which has the same semantics as @@ -361,9 +302,6 @@ special value <literal>infinity</literal>, no memory throttling is applied. This controls the <literal>memory.high</literal> control group attribute. For details about this control group attribute, see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para> - - <para>This setting is supported only if the unified control group hierarchy is used and disables - <varname>MemoryLimit=</varname>.</para> </listitem> </varlistentry> @@ -382,8 +320,6 @@ assigned the special value <literal>infinity</literal>, no memory limit is applied. This controls the <literal>memory.max</literal> control group attribute. For details about this control group attribute, see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para> - - <para>This setting replaces <varname>MemoryLimit=</varname>.</para> </listitem> </varlistentry> @@ -398,9 +334,6 @@ special value <literal>infinity</literal>, no swap limit is applied. This controls the <literal>memory.swap.max</literal> control group attribute. For details about this control group attribute, see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para> - - <para>This setting is supported only if the unified control group hierarchy is used and disables - <varname>MemoryLimit=</varname>.</para> </listitem> </varlistentry> @@ -427,13 +360,14 @@ <term><varname>TasksMax=<replaceable>N</replaceable></varname></term> <listitem> - <para>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 <literal>infinity</literal>, no tasks limit is applied. This controls - the <literal>pids.max</literal> control group attribute. For details about this control group attribute, see - <ulink url="https://docs.kernel.org/admin-guide/cgroup-v1/pids.html">Process Number Controller</ulink>. - </para> + <para>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 <literal>infinity</literal>, no tasks + limit is applied. This controls the <literal>pids.max</literal> control group attribute. For + details about this control group attribute, the + <ulink url="https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#pid">pids controller + </ulink>.</para> <para>The system default for this setting may be controlled with <varname>DefaultTasksMax=</varname> in @@ -451,9 +385,6 @@ therein. The system default for this setting may be controlled with <varname>DefaultIOAccounting=</varname> in <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> - - <para>This setting replaces <varname>BlockIOAccounting=</varname> and disables settings prefixed with - <varname>BlockIO</varname> or <varname>StartupBlockIO</varname>.</para> </listitem> </varlistentry> @@ -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.</para> - - <para>These settings replace <varname>BlockIOWeight=</varname> and <varname>StartupBlockIOWeight=</varname> - and disable settings prefixed with <varname>BlockIO</varname> or <varname>StartupBlockIO</varname>.</para> </listitem> </varlistentry> @@ -496,9 +424,6 @@ For details about this control group attribute, see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#io-interface-files">IO Interface Files</ulink>.</para> - <para>This setting replaces <varname>BlockIODeviceWeight=</varname> and disables settings prefixed with - <varname>BlockIO</varname> or <varname>StartupBlockIO</varname>.</para> - <para>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</ulink>. </para> - <para>These settings replace <varname>BlockIOReadBandwidth=</varname> and - <varname>BlockIOWriteBandwidth=</varname> and disable settings prefixed with <varname>BlockIO</varname> or - <varname>StartupBlockIO</varname>.</para> - <para>Similar restrictions on block device discovery as for <varname>IODeviceWeight=</varname> apply, see above.</para> </listitem> </varlistentry> @@ -553,9 +474,6 @@ url="https://docs.kernel.org/admin-guide/cgroup-v2.html#io-interface-files">IO Interface Files</ulink>. </para> - <para>These settings are supported only if the unified control group hierarchy is used and disable settings - prefixed with <varname>BlockIO</varname> or <varname>StartupBlockIO</varname>.</para> - <para>Similar restrictions on block device discovery as for <varname>IODeviceWeight=</varname> apply, see above.</para> </listitem> </varlistentry> @@ -935,11 +853,8 @@ RestrictNetworkInterfaces=~eth1</programlisting> strings: a device node specifier followed by a combination of <constant>r</constant>, <constant>w</constant>, <constant>m</constant> to control <emphasis>r</emphasis>eading, <emphasis>w</emphasis>riting, or creation of the specific device node(s) by the unit - (<emphasis>m</emphasis>knod), respectively. On cgroup-v1 this controls the - <literal>devices.allow</literal> control group attribute. For details about this control group - attribute, see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/devices.html">Device Whitelist Controller</ulink>. - In the unified cgroup hierarchy this functionality is implemented using eBPF filtering.</para> + (<emphasis>m</emphasis>knod), respectively. This functionality is implemented using eBPF + filtering.</para> <para>When access to <emphasis>all</emphasis> physical devices should be disallowed, <varname>PrivateDevices=</varname> may be used instead. See @@ -1189,146 +1104,28 @@ DeviceAllow=/dev/loop-control </refsect1> <refsect1> - <title>Deprecated Options</title> - - <para>The following options are deprecated. Use the indicated superseding options instead:</para> - - <variablelist class='unit-directives'> - - <varlistentry> - <term><varname>CPUShares=<replaceable>weight</replaceable></varname></term> - <term><varname>StartupCPUShares=<replaceable>weight</replaceable></varname></term> - - <listitem> - <para>Assign the specified CPU time share weight to the processes executed. These options take an integer - value and control the <literal>cpu.shares</literal> control group attribute. The allowed range is 2 to - 262144. Defaults to 1024. For details about this control group attribute, see <ulink - url="https://docs.kernel.org/scheduler/sched-design-CFS.html">CFS Scheduler</ulink>. - The available CPU time is split up among all units within one slice relative to their CPU time share - weight.</para> - - <para>While <varname>StartupCPUShares=</varname> applies to the startup and shutdown phases of the system, - <varname>CPUShares=</varname> applies to normal runtime of the system, and if the former is not set also to - the startup and shutdown phases. Using <varname>StartupCPUShares=</varname> allows prioritizing specific services at - boot-up and shutdown differently than during normal runtime.</para> - - <para>Implies <literal>CPUAccounting=yes</literal>.</para> - - <para>These settings are deprecated. Use <varname>CPUWeight=</varname> and - <varname>StartupCPUWeight=</varname> instead.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>MemoryLimit=<replaceable>bytes</replaceable></varname></term> - - <listitem> - <para>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 - <literal>infinity</literal>, no memory limit is applied. This controls the - <literal>memory.limit_in_bytes</literal> control group attribute. For details about this control group - attribute, see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/memory.html">Memory Resource Controller</ulink>.</para> - - <para>Implies <literal>MemoryAccounting=yes</literal>.</para> - - <para>This setting is deprecated. Use <varname>MemoryMax=</varname> instead.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>BlockIOAccounting=</varname></term> - - <listitem> - <para>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 - <varname>DefaultBlockIOAccounting=</varname> in - <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> - - <para>This setting is deprecated. Use <varname>IOAccounting=</varname> instead.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>BlockIOWeight=<replaceable>weight</replaceable></varname></term> - <term><varname>StartupBlockIOWeight=<replaceable>weight</replaceable></varname></term> - - <listitem><para>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 <literal>blkio.weight</literal> control group attribute, which defaults to - 500. For details about this control group attribute, see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/blkio-controller.html">Block IO Controller</ulink>. - The available I/O bandwidth is split up among all units within one slice relative to their block I/O - weight.</para> - - <para>While <varname>StartupBlockIOWeight=</varname> only - applies to the startup and shutdown phases of the system, - <varname>BlockIOWeight=</varname> 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.</para> - - <para>Implies - <literal>BlockIOAccounting=yes</literal>.</para> - - <para>These settings are deprecated. Use <varname>IOWeight=</varname> and <varname>StartupIOWeight=</varname> - instead.</para> - - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>BlockIODeviceWeight=<replaceable>device</replaceable> <replaceable>weight</replaceable></varname></term> + <title>History</title> - <listitem> - <para>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 <literal>blkio.weight_device</literal> 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 <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/blkio-controller.html">Block IO Controller</ulink>.</para> - - <para>Implies - <literal>BlockIOAccounting=yes</literal>.</para> - - <para>This setting is deprecated. Use <varname>IODeviceWeight=</varname> instead.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>BlockIOReadBandwidth=<replaceable>device</replaceable> <replaceable>bytes</replaceable></varname></term> - <term><varname>BlockIOWriteBandwidth=<replaceable>device</replaceable> <replaceable>bytes</replaceable></varname></term> - - <listitem> - <para>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 - <literal>blkio.throttle.read_bps_device</literal> and <literal>blkio.throttle.write_bps_device</literal> - control group attributes. Use this option multiple times to set bandwidth limits for multiple devices. For - details about these control group attributes, see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/blkio-controller.html">Block IO Controller</ulink>. - </para> - - <para>Implies - <literal>BlockIOAccounting=yes</literal>.</para> - - <para>These settings are deprecated. Use <varname>IOReadBandwidthMax=</varname> and - <varname>IOWriteBandwidthMax=</varname> instead.</para> - </listitem> - </varlistentry> - - </variablelist> + <variablelist> + <varlistentry> + <term>systemd 252</term> + <listitem><para> Options for controlling the Legacy Control Group Hierarchy (<ulink + url="https://docs.kernel.org/admin-guide/cgroup-v1/index.html">Control Groups version 1</ulink> are + now fully deprecated: <varname>CPUShares=<replaceable>weight</replaceable></varname>, + <varname>StartupCPUShares=<replaceable>weight</replaceable></varname>, + <varname>MemoryLimit=<replaceable>bytes</replaceable></varname>, + <varname>BlockIOAccounting=</varname>, + <varname>BlockIOWeight=<replaceable>weight</replaceable></varname>, + <varname>StartupBlockIOWeight=<replaceable>weight</replaceable></varname>, + <varname>BlockIODeviceWeight=<replaceable>device</replaceable> + <replaceable>weight</replaceable></varname>, + <varname>BlockIOReadBandwidth=<replaceable>device</replaceable> + <replaceable>bytes</replaceable></varname>, + <varname>BlockIOWriteBandwidth=<replaceable>device</replaceable> + <replaceable>bytes</replaceable></varname>. + Please switch to the unified cgroup hierarchy.</para></listitem> + </varlistentry> + </variablelist> </refsect1> <refsect1> diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 7e744471c3..767c7186cd 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1576,25 +1576,14 @@ <term><varname>ConditionControlGroupController=</varname></term> <listitem><para>Check whether given cgroup controllers (e.g. <literal>cpu</literal>) are available - for use on the system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used. - </para> + for use on the system.</para> <para>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 <literal>cpu</literal>, <literal>cpuacct</literal>, - <literal>io</literal>, <literal>blkio</literal>, <literal>memory</literal>, - <literal>devices</literal>, and <literal>pids</literal>. Even if available in the kernel, a - particular controller may not be available if it was disabled on the kernel command line with - <varname>cgroup_disable=controller</varname>.</para> - - <para>Alternatively, two special strings <literal>v1</literal> and <literal>v2</literal> may be - specified (without any controller names). <literal>v2</literal> will pass if the unified v2 cgroup - hierarchy is used, and <literal>v1</literal> will pass if the legacy v1 hierarchy or the hybrid - hierarchy are used (see the discussion of <varname>systemd.unified_cgroup_hierarchy</varname> and - <varname>systemd.legacy_systemd_cgroup_controller</varname> in - <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry> - for more information).</para> - </listitem> + ignored. Valid controllers are <literal>cpu</literal>, <literal>cpuset</literal>, + <literal>io</literal>, <literal>memory</literal>, and <literal>pids</literal>. Even if available in + the kernel, a particular controller may not be available if it was disabled on the kernel command + line with <varname>cgroup_disable=controller</varname>.</para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd.xml b/man/systemd.xml index 30484e09a9..99b6f11b90 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.</para> - <para>Processes systemd spawns are placed in individual Linux - control groups named after the unit which they belong to in the - private systemd hierarchy. (see <ulink - url="https://docs.kernel.org/admin-guide/cgroup-v1/index.html">Control Groups version 1</ulink> - 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 - <filename>/sys/fs/cgroup/systemd/</filename>), or in tools such as - <citerefentry project='man-pages'><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry> - or - <citerefentry project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry> - (<command>ps xawf -eo pid,user,cgroup,args</command> is - particularly useful to list all processes and the systemd units - they belong to.).</para> + <para>Processes systemd spawns are placed in individual Linux control groups named after the unit which + they belong to in the private systemd hierarchy. (see <ulink + url="https://docs.kernel.org/admin-guide/cgroup-v2.html">Control Groups v2</ulink> 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 <filename>/sys/fs/cgroup/</filename>), or in tools such as <citerefentry + project='man-pages'><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry> or + <citerefentry + project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry> (<command>ps + xawf -eo pid,user,cgroup,args</command> is particularly useful to list all processes and the systemd + units they belong to.).</para> <para>systemd is compatible with the SysV init system to a large degree: SysV init scripts are supported and simply read as an @@ -911,41 +907,6 @@ </varlistentry> <varlistentry> - <term><varname>systemd.unified_cgroup_hierarchy</varname></term> - - <listitem><para>When specified without an argument or with a true argument, - enables the usage of - <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html">unified cgroup hierarchy</ulink> - (a.k.a. cgroups-v2). When specified with a false argument, fall back to - hybrid or full legacy cgroup hierarchy.</para> - - <para>If this option is not specified, the default behaviour is determined - during compilation (the <option>-Ddefault-hierarchy=</option> meson - option). If the kernel does not support unified cgroup hierarchy, the legacy - hierarchy will be used even if this option is specified.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>systemd.legacy_systemd_cgroup_controller</varname></term> - - <listitem><para>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 - <ulink url="https://docs.kernel.org/admin-guide/cgroup-v1/index.html">legacy - cgroup hierarchy</ulink>, 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.</para> - - <para>If this option is not specified, the default behaviour is determined - during compilation (the <option>-Ddefault-hierarchy=</option> meson - option). If the kernel does not support unified cgroup hierarchy, the legacy - hierarchy will be used even if this option is specified.</para> - </listitem> - </varlistentry> - - <varlistentry> <term><varname>systemd.set_credential=</varname></term> <listitem><para>Sets a system credential, which can then be propagated to system services using the @@ -1291,6 +1252,19 @@ </refsect1> <refsect1> + <title>History</title> + + <variablelist> + <varlistentry> + <term>systemd 252</term> + <listitem><para>Kernel command-line arguments <varname>systemd.unified_cgroup_hierarchy</varname> + and <varname>systemd.legacy_systemd_cgroup_controller</varname> were deprecated. Please switch to + the unified cgroup hierarchy.</para></listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> <title>See Also</title> <para> The <ulink url="https://systemd.io/">systemd Homepage</ulink>, diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 0a2d4d4035..6a7390a6f0 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -148,12 +148,36 @@ DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_ip_tos, ip_tos, int, -1, "Fai DEFINE_CONFIG_PARSE_PTR(config_parse_blockio_weight, cg_blkio_weight_parse, uint64_t, "Invalid block IO weight"); DEFINE_CONFIG_PARSE_PTR(config_parse_cg_weight, cg_weight_parse, uint64_t, "Invalid weight"); DEFINE_CONFIG_PARSE_PTR(config_parse_cg_cpu_weight, cg_cpu_weight_parse, uint64_t, "Invalid CPU weight"); -DEFINE_CONFIG_PARSE_PTR(config_parse_cpu_shares, cg_cpu_shares_parse, uint64_t, "Invalid CPU shares"); +static DEFINE_CONFIG_PARSE_PTR(config_parse_cpu_shares_internal, cg_cpu_shares_parse, uint64_t, "Invalid CPU shares"); DEFINE_CONFIG_PARSE_PTR(config_parse_exec_mount_flags, mount_propagation_flags_from_string, unsigned long, "Failed to parse mount flag"); DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_numa_policy, mpol, int, -1, "Invalid NUMA policy type"); DEFINE_CONFIG_PARSE_ENUM(config_parse_status_unit_format, status_unit_format, StatusUnitFormat, "Failed to parse status unit format"); DEFINE_CONFIG_PARSE_ENUM_FULL(config_parse_socket_timestamping, socket_timestamping_from_string_harder, SocketTimestamping, "Failed to parse timestamping precision"); +int config_parse_cpu_shares( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + assert(filename); + assert(lvalue); + assert(rvalue); + + + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Unit uses %s=; please use CPUWeight= instead. Support for %s= will be removed soon.", + lvalue, lvalue); + + return config_parse_cpu_shares_internal(unit, filename, line, section, section_line, lvalue, ltype, rvalue, data, userdata); +} + bool contains_instance_specifier_superset(const char *s) { const char *p, *q; bool percent = false; @@ -819,9 +843,9 @@ int config_parse_kill_mode( if (m == KILL_NONE) log_syntax(unit, LOG_WARNING, filename, line, 0, - "Unit configured to use KillMode=none. " + "Unit uses KillMode=none. " "This is unsafe, as it disables systemd's process lifecycle management for the service. " - "Please update your service to use a safer KillMode=, such as 'mixed' or 'control-group'. " + "Please update the service to use a safer KillMode=, such as 'mixed' or 'control-group'. " "Support for KillMode=none is deprecated and will eventually be removed."); *k = m; @@ -3914,9 +3938,11 @@ int config_parse_memory_limit( c->memory_max = bytes; else if (streq(lvalue, "MemorySwapMax")) c->memory_swap_max = bytes; - else if (streq(lvalue, "MemoryLimit")) + else if (streq(lvalue, "MemoryLimit")) { + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Unit uses MemoryLimit=; please use MemoryMax= instead. Support for MemoryLimit= will be removed soon."); c->memory_limit = bytes; - else + } else return -EINVAL; return 0; @@ -4442,6 +4468,10 @@ int config_parse_blockio_device_weight( assert(lvalue); assert(rvalue); + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Unit uses %s=; please use IO*= settings instead. Support for %s= will be removed soon.", + lvalue, lvalue); + if (isempty(rvalue)) { while (c->blockio_device_weights) cgroup_context_free_blockio_device_weight(c, c->blockio_device_weights); @@ -4517,6 +4547,10 @@ int config_parse_blockio_bandwidth( assert(lvalue); assert(rvalue); + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Unit uses %s=; please use IO*= settings instead. Support for %s= will be removed soon.", + lvalue, lvalue); + read = streq("BlockIOReadBandwidth", lvalue); if (isempty(rvalue)) { diff --git a/src/core/system.conf.in b/src/core/system.conf.in index 318c034826..a4e79d3033 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% |