icon-cookie
The website uses cookies to optimize your user experience. Using this website grants us the permission to collect certain information essential to the provision of our services to you, but you may change the cookie settings within your browser any time you wish. Learn more
I agree
blank_error__heading
blank_error__body
Text direction?

Overview of oomd

Out of memory (OOM) killing has historically happened inside kernel space—if a system runs out of physical memory, the Linux kernel is forced to OOM-kill one or more processes. This is typically slow and painful because the kernel spends an unbounded amount of time swapping pages in and out and evicting the page cache. Furthermore, configuring policy is not very flexible while being somewhat complicated.

Introducing oomd

oomd solves these problems in userspace. oomd takes corrective action in userspace before an OOM occurs in kernel space. Corrective action is configured via a flexible plugin system, in which custom code can be written. By default, this involves killing offending processes. oomd enables an unparalleled level of flexibility where each workload can have custom protection rules. Furthermore, time spent churning pages in kernel space is minimized.

Getting started

See the following sections in the oomd README for instructions on getting started with and configuring oomd:

Case Study

See the Facebook case study for information on how oomd is creating significant memory utilization gains in production in Facebook's data centers.

Related tools

oomd works with several other Linux tools to provide advanced OOM-killing capabilities. Be sure to check out the following components for deeper insight and more info on how to get the most benefits from oomd:

  • PSI: oomd uses memory.pressure metrics that are part of the Pressure Stall Information (PSI) Linux kernel module to trigger specified actions.
  • cgroup2: oomd brings maximum memory utilization benefits to large data centers when used in conjunction with cgroup2, a kernel mechanism to group processes and allocate specified amounts of resources to each group. oomd can be configured to kill entire cgroups, rather than discrete processes.
Measure
Measure
Related Notes
Get a free MyMarkup account to save this article and view it later on any device.
Create account

End User License Agreement

Summary | 2 Annotations
killing offending processes
2020/08/26 17:49
each workload can have custom protection rules
2020/08/26 17:49