From Fedora Project Wiki
Description
This test case tests that systemd-oomd will kill a cgroup with the most pgscans when memory pressure on user@$UID.service exceeds 10% (or whatever was defined in systemd-oomd-defaults).
Setup
- This test case should be performed on either bare-metal or virtual machines.
- Check that you are running systemd 248~rc1 or higher with
systemctl --version
. - Ensure the systemd-oomd-defaults package is installed (included with Fedora 34).
- Boot the system and log in as a regular user.
- So as not to trigger the swap policy for systemd-oomd, create an override with the following commands (remove this file and
systemctl daemon-reload
to restore the settings):
sudo printf "[Slice]/nManagedOOMSwap=auto" > /etc/systemd/system/-.slice.d/99-test.conf sudo systemctl daemon-reload
How to test
- Check that systemd-oomd is running:
systemctl status systemd-oomd
- Check that the systemd-oomd-defaults policy was applied by running
oomctl
and verifying that "/" is listed as a path under "Swap Monitored CGroups" along with the current swap usage. - Now run the test:
systemd-run --user tail /dev/zero
Expected Results
- systemd-oomd will have killed the unit started above. You can verify by checking for log lines that say something about "swap used <...> is more than 90%" and "systemd-oomd killed <...> process(es)" with
journalctl
. - Swap used should be below 90% (use
free -h
)