From 698a28c6fcc4b33ff2878fa15d238c36e3e246cc Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org> Date: Thu, 20 May 2021 22:15:00 +0200 Subject: [PATCH] roles/common: Install generic OOM configuration - Allow killing of any cgroup if swap is about to run out. When swap is at least 90% full, oomd will kill a cgroup, tending to kill the cgroup with the highest swap usage. - Allow killing cgroups of logged in users under severe memory pressure. When a cgroup is stalled waiting for memory at least 60% of the time, for at least 30 seconds, oomd will attempt to kill it or one of its descendant cgroups. --- roles/common/files/oomd-override_-.slice.conf | 2 ++ .../common/files/oomd-override_user@.service.conf | 3 +++ roles/common/tasks/main.yml | 14 ++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 roles/common/files/oomd-override_-.slice.conf create mode 100644 roles/common/files/oomd-override_user@.service.conf diff --git a/roles/common/files/oomd-override_-.slice.conf b/roles/common/files/oomd-override_-.slice.conf new file mode 100644 index 000000000..49958e8e0 --- /dev/null +++ b/roles/common/files/oomd-override_-.slice.conf @@ -0,0 +1,2 @@ +[Slice] +ManagedOOMSwap=kill diff --git a/roles/common/files/oomd-override_user@.service.conf b/roles/common/files/oomd-override_user@.service.conf new file mode 100644 index 000000000..c66c40121 --- /dev/null +++ b/roles/common/files/oomd-override_user@.service.conf @@ -0,0 +1,3 @@ +[Service] +ManagedOOMMemoryPressure=kill +ManagedOOMMemoryPressureLimit=60% diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 3bd3ce2d6..9dc76ec71 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -103,6 +103,20 @@ command: systemd-tmpfiles --create when: zramtmpfiles.changed +- name: create drop-in directories for oomd + file: path=/etc/systemd/system/{{ item }}.d state=directory owner=root group=root mode=0755 + with_items: + - "-.slice" + - user@.service + +- name: install drop-in snippets for oomd + copy: src=oomd-override_{{ item }}.conf dest=/etc/systemd/system/{{ item }}.d/override.conf owner=root group=root mode=0644 + with_items: + - "-.slice" + - user@.service + notify: + - systemd daemon-reload + - name: start systemd-oomd service: name=systemd-oomd state=started enabled=yes -- GitLab