<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-cgtop"
    xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd-cgtop</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-cgtop</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-cgtop</refname>
    <refpurpose>Show top control groups by their resource usage</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>systemd-cgtop</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="opt">GROUP</arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>systemd-cgtop</command> shows the top control
    groups of the local Linux control group hierarchy, ordered by
    their CPU, memory, or disk I/O load. The display is refreshed in
    regular intervals (by default every 1s), similar in style to
    <citerefentry project='man-pages'><refentrytitle>top</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
    If a control group path is specified, shows only the services of
    the specified control group.</para>

    <para>If <command>systemd-cgtop</command> is not connected to a
    tty, no column headers are printed and the default is to only run
    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 with the appropriate controllers turned on:
    <literal>cpu</literal> controller for CPU usage, <literal>memory</literal> controller for memory usage,
    and <literal>io</literal> controller 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>

    <para>The CPU load value can be between 0 and 100 times the number of
    processors the system has. For example, if the system has 8 processors,
    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: 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>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <varlistentry>
        <term><option>-p</option></term>
        <term><option>--order=path</option></term>

        <listitem><para>Order by control group
        path name.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-t</option></term>
        <term><option>--order=tasks</option></term>

        <listitem><para>Order by number of tasks/processes in the control group.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-c</option></term>
        <term><option>--order=cpu</option></term>

        <listitem><para>Order by CPU load.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-m</option></term>
        <term><option>--order=memory</option></term>

        <listitem><para>Order by memory usage.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-i</option></term>
        <term><option>--order=io</option></term>

        <listitem><para>Order by disk I/O load.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-b</option></term>
        <term><option>--batch</option></term>

        <listitem><para>Run in "batch" mode: do not accept input and
        run until the iteration limit set with
        <option>--iterations=</option> is exhausted or until killed.
        This mode could be useful for sending output from
        <command>systemd-cgtop</command> to other programs or to a
        file.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-r</option></term>
        <term><option>--raw</option></term>

        <listitem><para>Format byte counts (as in memory usage and I/O metrics) and CPU time
        with raw numeric values rather than human-readable
        numbers.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--cpu=percentage</option></term>
        <term><option>--cpu=time</option></term>

        <listitem><para>Controls whether the CPU usage is shown as
        percentage or time. By default, the CPU usage is shown as
        percentage. This setting may also be toggled at runtime by
        pressing the <keycap>%</keycap> key.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-P</option></term>

        <listitem><para>Count only userspace processes instead of all
        tasks. By default, all tasks are counted: each kernel thread
        and each userspace thread individually. With this setting,
        kernel threads are excluded from the counting and each
        userspace process only counts as one, regardless how many
        threads it consists of. This setting may also be toggled at
        runtime by pressing the <keycap>P</keycap> key. This option
        may not be combined with
        <option>-k</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-k</option></term>

        <listitem><para>Count only userspace processes and kernel
        threads instead of all tasks. By default, all tasks are
        counted: each kernel thread and each userspace thread
        individually. With this setting, kernel threads are included in
        the counting and each userspace process only counts as on one,
        regardless how many threads it consists of. This setting may
        also be toggled at runtime by pressing the <keycap>k</keycap>
        key. This option may not be combined with
        <option>-P</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--recursive=</option></term>

        <listitem><para>Controls whether the number of processes shown
        for a control group shall include all processes that are
        contained in any of the child control groups as well. Takes a
        boolean argument, which defaults to <literal>yes</literal>. If
        enabled, the processes in child control groups are included, if
        disabled, only the processes in the control group itself are
        counted. This setting may also be toggled at runtime by
        pressing the <keycap>r</keycap> key. Note that this setting
        only applies to process counting, i.e. when the
        <option>-P</option> or <option>-k</option> options are
        used. It has not effect if all tasks are counted, in which
        case the counting is always recursive.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-n</option></term>
        <term><option>--iterations=</option></term>

        <listitem><para>Perform only this many iterations. A value of
        0 indicates that the program should run
        indefinitely.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-1</option></term>

        <listitem><para>A shortcut for <option>--iterations=1</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-d</option></term>
        <term><option>--delay=</option></term>

        <listitem><para>Specify refresh delay in seconds (or if one of
        <literal>ms</literal>, <literal>us</literal>,
        <literal>min</literal> is specified as unit in this time
        unit). This setting may also be increased and decreased at
        runtime by pressing the <keycap>+</keycap> and
        <keycap>-</keycap> keys.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--depth=</option></term>

        <listitem><para>Maximum control group tree traversal depth.
        Specifies how deep <command>systemd-cgtop</command> shall
        traverse the control group hierarchies. If 0 is specified,
        only the root group is monitored. For 1, only the first level
        of control groups is monitored, and so on. Defaults to
        3.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-M <replaceable>MACHINE</replaceable></option></term>
        <term><option>--machine=<replaceable>MACHINE</replaceable></option></term>

        <listitem><para>Limit control groups shown to the part
        corresponding to the container
        <replaceable>MACHINE</replaceable>.
        This option may not be used when a control group path is specified.</para></listitem>
      </varlistentry>

      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
    </variablelist>

  </refsect1>

  <refsect1>
    <title>Keys</title>

    <para><command>systemd-cgtop</command> is an interactive tool and
    may be controlled via user input using the following keys:</para>

    <variablelist>
      <varlistentry>
        <term><keycap>h</keycap></term>

        <listitem><para>Shows a short help text.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap function="space"/></term>

        <listitem><para>Immediately refresh output.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>q</keycap></term>

        <listitem><para>Terminate the program.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>p</keycap></term>
        <term><keycap>t</keycap></term>
        <term><keycap>c</keycap></term>
        <term><keycap>m</keycap></term>
        <term><keycap>i</keycap></term>

        <listitem><para>Sort the control groups by path, number of
        tasks, CPU load, memory usage, or I/O load, respectively.  This
        setting may also be controlled using the
        <option>--order=</option> command line
        switch.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>%</keycap></term>

        <listitem><para>Toggle between showing CPU time as time or
        percentage. This setting may also be controlled using the
        <option>--cpu=</option> command line switch.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>+</keycap></term>
        <term><keycap>-</keycap></term>

        <listitem><para>Increase or decrease refresh delay,
        respectively. This setting may also be controlled using the
        <option>--delay=</option> command line
        switch.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>P</keycap></term>

        <listitem><para>Toggle between counting all tasks, or only
        userspace processes. This setting may also be controlled using
        the <option>-P</option> command line switch (see
        above).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>k</keycap></term>

        <listitem><para>Toggle between counting all tasks, or only
        userspace processes and kernel threads. This setting may also
        be controlled using the <option>-k</option> command line
        switch (see above).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><keycap>r</keycap></term>

        <listitem><para>Toggle between recursively including or
        excluding processes in child control groups in control group
        process counts. This setting may also be controlled using the
        <option>--recursive=</option> command line switch. This key is
        not available if all tasks are counted, it is only available
        if processes are counted, as enabled with the
        <keycap>P</keycap> or <keycap>k</keycap>
        keys.</para></listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>Exit status</title>

    <para>On success, 0 is returned, a non-zero failure code
    otherwise.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>top</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
