Update systemd-oomd defaults to friendlier values

- Remove swap policy. Default amount of swap (8GB?) is a lot lower than
  what we use internally with the swap policy. Which frequently leads to
  GNOME getting killed
  (e.g. https://bugzilla.redhat.com/show_bug.cgi?id=1941170, and other
  BZs not linked here). Internally we use 0.5x-1x size of physical memory
  for swap via swapfiles (this will be documented in systemd upstream).
  In simple cases of using more memory than is available (but without
  memory pressure), the Kernel OOM killer can handle killing the
  offending process.

- Expand the memory pressure policy to system.slice, user-.slice, and
  all user owned slices. Support for ManagedOOM*= on user services was
  added in https://github.com/systemd/systemd/pull/20690 which allows
  us to be more fine grained on the pressure monitoring at the user
  level. In addition to the system.slice and user-.slice PSI monitoring
  this should result in a better systemd-oomd experience for desktop
  systems.
This commit is contained in:
Anita Zhang 2022-08-23 11:59:16 -07:00 committed by zbyszek
parent aac22baa3b
commit 7665e1796f
3 changed files with 5 additions and 7 deletions

View File

@ -1,3 +1,3 @@
[Service] [Slice]
ManagedOOMMemoryPressure=kill ManagedOOMMemoryPressure=kill
ManagedOOMMemoryPressureLimit=50% ManagedOOMMemoryPressureLimit=50%

View File

@ -1,2 +0,0 @@
[Slice]
ManagedOOMSwap=kill

View File

@ -70,8 +70,7 @@ Source12: systemd-user
Source13: libsystemd-shared.abignore Source13: libsystemd-shared.abignore
Source14: 10-oomd-defaults.conf Source14: 10-oomd-defaults.conf
Source15: 10-oomd-root-slice-defaults.conf Source15: 10-oomd-per-slice-defaults.conf
Source16: 10-oomd-user-service-defaults.conf
Source21: macros.sysusers Source21: macros.sysusers
Source22: sysusers.attr Source22: sysusers.attr
@ -664,8 +663,9 @@ install -D -t %{buildroot}/usr/lib/systemd/ %{SOURCE3}
# systemd-oomd default configuration # systemd-oomd default configuration
install -Dm0644 -t %{buildroot}%{_prefix}/lib/systemd/oomd.conf.d/ %{SOURCE14} install -Dm0644 -t %{buildroot}%{_prefix}/lib/systemd/oomd.conf.d/ %{SOURCE14}
install -Dm0644 -t %{buildroot}%{system_unit_dir}/-.slice.d/ %{SOURCE15} install -Dm0644 -t %{buildroot}%{system_unit_dir}/user-.slice.d/ %{SOURCE15}
install -Dm0644 -t %{buildroot}%{system_unit_dir}/user@.service.d/ %{SOURCE16} install -Dm0644 -t %{buildroot}%{system_unit_dir}/system.slice.d/ %{SOURCE15}
install -Dm0644 -t %{buildroot}%{user_unit_dir}/slice.d/ %{SOURCE15}
sed -i 's|#!/usr/bin/env python3|#!%{__python3}|' %{buildroot}/usr/lib/systemd/tests/run-unit-tests.py sed -i 's|#!/usr/bin/env python3|#!%{__python3}|' %{buildroot}/usr/lib/systemd/tests/run-unit-tests.py