fix: disable systemd-oomd memory pressure kill for runner users
The default systemd user service configuration (10-oomd-user-service-defaults.conf) sets ManagedOOMMemoryPressure=kill with ManagedOOMMemoryPressureLimit=50%. Under parallel DinD load (6 molecule tests), memory pressure exceeds 50% for 30 seconds, causing systemd-oomd to SIGKILL molecule containers (rc=137). This was the root cause of recurring "container is not running" and "Failed to create temporary directory" errors in CI. Fix: Create a per-user systemd override that sets: - ManagedOOMMemoryPressure=auto (don't kill on pressure) - ManagedOOMMemoryPressureLimit=100% (never trigger) - OOMScoreAdjust=-500 (very unlikely to be OOM-killed) The runner users run Docker-in-Docker workloads that legitimately use large amounts of memory. systemd-oomd's aggressive memory pressure killing is inappropriate for CI runner workloads. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
645d87a3cf
commit
cea84b1d89
@@ -10,3 +10,7 @@
|
|||||||
- ansible_facts is defined
|
- ansible_facts is defined
|
||||||
- ansible_facts['service_mgr'] | default('') == 'systemd'
|
- ansible_facts['service_mgr'] | default('') == 'systemd'
|
||||||
- gitea_runner_docker_rootless_setup
|
- gitea_runner_docker_rootless_setup
|
||||||
|
|
||||||
|
- name: Reload systemd user daemon
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
daemon_reload: true
|
||||||
|
|||||||
@@ -69,3 +69,31 @@
|
|||||||
owner: "{{ gitea_runner_service_user }}"
|
owner: "{{ gitea_runner_service_user }}"
|
||||||
group: "{{ gitea_runner_service_user }}"
|
group: "{{ gitea_runner_service_user }}"
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Disable systemd-oomd memory pressure kill for runner user
|
||||||
|
when: gitea_runner_systemd_available.stat.exists
|
||||||
|
block:
|
||||||
|
- name: Ensure user service override directory exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/etc/systemd/system/user@{{ gitea_runner_uid }}.service.d"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Disable ManagedOOMMemoryPressure for runner user
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: |
|
||||||
|
[Service]
|
||||||
|
ManagedOOMMemoryPressure=auto
|
||||||
|
ManagedOOMMemoryPressureLimit=100%
|
||||||
|
OOMScoreAdjust=-500
|
||||||
|
dest: "/etc/systemd/system/user@{{ gitea_runner_uid }}.service.d/oomd-override.conf"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify: Reload systemd user daemon
|
||||||
|
|
||||||
|
- name: Reload systemd daemon for oomd override
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
daemon_reload: true
|
||||||
|
|||||||
Reference in New Issue
Block a user