<?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="org.freedesktop.oom1" conditional='ENABLE_OOMD'
    xmlns:xi="http://www.w3.org/2001/XInclude">
  <refentryinfo>
    <title>org.freedesktop.oom1</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>org.freedesktop.oom1</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>org.freedesktop.oom1</refname>
    <refpurpose>The D-Bus interface of systemd-oomd</refpurpose>
  </refnamediv>

  <refsect1>
    <title>Introduction</title>

    <para>
    <citerefentry><refentrytitle>systemd-oomd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    is a system service which implements a userspace out-of-memory (OOM) killer. This page describes the
    D-Bus interface.</para>
  </refsect1>

  <refsect1>
    <title>The Manager Object</title>

    <para>The service exposes the following interfaces on the Manager object on the bus:</para>

    <programlisting executable="systemd-oomd" node="/org/freedesktop/oom1" interface="org.freedesktop.oom1.Manager">
node /org/freedesktop/oom1 {
  interface org.freedesktop.oom1.Manager {
    methods:
      DumpByFileDescriptor(out h fd);
    signals:
      Killed(s cgroup,
             s reason);
  };
  interface org.freedesktop.DBus.Peer { ... };
  interface org.freedesktop.DBus.Introspectable { ... };
  interface org.freedesktop.DBus.Properties { ... };
};
    </programlisting>

    <!--method DumpByFileDescriptor is not documented!-->

    <!--Autogenerated cross-references for systemd.directives, do not edit-->

    <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.oom1.Manager"/>

    <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.oom1.Manager"/>

    <variablelist class="dbus-method" generated="True" extra-ref="DumpByFileDescriptor()"/>

    <variablelist class="dbus-signal" generated="True" extra-ref="Killed"/>

    <!--End of Autogenerated section-->

    <refsect2>
      <title>Methods</title>

      <para><function>Killed</function> signal is sent when any cgroup is killed by oomd.</para>
      <para>Note that more reasons will be added in the future, and the table below will be expanded accordingly.</para>
      <table>
        <title>Killing reasons</title>
        <tgroup cols="2" align="left" colsep="1" rowsep="1">
        <colspec colname="reason"/>
        <colspec colname="description"/>
        <thead>
          <row>
            <entry>Reason</entry>
            <entry>Description</entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry>memory-used</entry>
            <entry>Application took too much memory and swap.</entry>
          </row>
          <row>
            <entry>memory-pressure</entry>
            <entry>Application took enough memory and swap to cause sufficient slowdown of other applications.</entry>
          </row>
        </tbody>
        </tgroup>
      </table>
    </refsect2>
  </refsect1>

  <xi:include href="org.freedesktop.locale1.xml" xpointer="versioning"/>
</refentry>
