<para>Turn on CPU usage accounting for this unit. Takes a
boolean argument. Note that turning on CPU accounting for
one unit might also implicitly turn it on for all units
- contained in the same slice and for all its parent slices and
- the units contained therein.</para>
+ contained in the same slice and for all its parent slices
+ and the units contained therein. The system default for this
+ setting maybe controlled with
+ <varname>DefaultCPUAccounting=</varname> in
+ <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
</listitem>
</varlistentry>
<term><varname>CPUShares=<replaceable>weight</replaceable></varname></term>
<listitem>
- <para>Assign the specified overall CPU time share weight to
- the processes executed. Takes an integer value. This
- controls the <literal>cpu.shares</literal> control group
- attribute, which defaults to 1024. For details about this
- control group attribute, see <ulink
+ <para>Assign the specified CPU time share weight to the
+ processes executed. Takes an integer value. This controls
+ the <literal>cpu.shares</literal> control group attribute,
+ which defaults to 1024. For details about this control group
+ attribute, see <ulink
+ url="https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt">sched-design-CFS.txt</ulink>
+ The available CPU time is split up among all units within a
+ slice relative to their CPU time share weight.</para>
+
+ <para>Implies <literal>CPUAccounting=true</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>CPUQuota=</varname></term>
+
+ <listitem>
+ <para>Assign the specified CPU time quota to the processes
+ executed. Takes a percentage value (suffixed with "%") or an
+ absolute time (suffixed by one of the common time units, us,
+ ms, s, ...). The percentage specifies how much CPU time the
+ unit shall get at maximum, relative to the total CPU time
+ available on one CPU. Use values > 100% for alloting CPU
+ time on more than one CPU. If an absolute time is specified
+ the processes of this unit will get this much absolute time
+ within each quota period, at maximum. This controls the
+ <literal>cpu.cfs_quota_us</literal> control group
+ attribute. For details about this control group attribute,
+ see <ulink
+ url="https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt">sched-design-CFS.txt</ulink>.</para>
+
+ <para>Example: <varname>CPUShares=20%</varname> ensures that
+ the executed processes will never get more than 20% CPU time
+ on one CPU.</para>
+
+ <para>Implies <literal>CPUAccounting=true</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>CPUQuotaPeriodSec=</varname></term>
+
+ <listitem>
+ <para>Specify the CPU quota period to use. Defaults to
+ 100ms. This controls the <literal>cpu.cfs_period_us</literal>
+ control group attribute. For details about this control
+ group attribute, see <ulink
url="https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt">sched-design-CFS.txt</ulink>.</para>
<para>Implies <literal>CPUAccounting=true</literal>.</para>
<para>Turn on process and kernel memory accounting for this
unit. Takes a boolean argument. Note that turning on memory
accounting for one unit might also implicitly turn it on for
- all units contained in the same slice and for all its parent
- slices and the units contained therein.</para>
+ all its parent slices. The system default for this setting
+ maybe controlled with
+ <varname>DefaultMemoryAccounting=</varname> in
+ <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
</listitem>
</varlistentry>
<para>Turn on Block IO accounting for this unit. Takes a
boolean argument. Note that turning on block IO accounting
for one unit might also implicitly turn it on for all units
- contained in the same slice and all for its parent slices and
- the units contained therein.</para>
+ contained in the same slice and all for its parent slices
+ and the units contained therein. The system default for this
+ setting maybe controlled with
+ <varname>DefaultBlockIOAccounting=</varname> in
+ <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
</listitem>
</varlistentry>
followed by a device group name, as listed in
<filename>/proc/devices</filename>. The latter is useful to
whitelist all current and future devices belonging to a
- specific device group at once. Examples:
- <filename>/dev/sda5</filename> is a path to a device node,
- referring to an ATA or SCSI block
+ specific device group at once. The device group is matched
+ according to file name globbing rules, you may hence use the
+ <literal>*</literal> and <literal>?</literal>
+ wildcards. Examples: <filename>/dev/sda5</filename> is a
+ path to a device node, referring to an ATA or SCSI block
device. <literal>char-pts</literal> and
<literal>char-alsa</literal> are specifiers for all pseudo
- TTYs and all ALSA sound devices, respectively.</para>
+ TTYs and all ALSA sound devices,
+ respectively. <literal>char-cpu/*</literal> is a specifier
+ matching all CPU related device groups.</para>
</listitem>
</varlistentry>