mirror of
https://github.com/systemd/systemd.git
synced 2024-10-29 21:55:36 +03:00
14d044da23
Fixes #17533
The memory pressure values of the units in TEST-56-OOMD seemed to be a
lot lower after updating to linux 5.9. This is likely due to a fix from
e22c6ed90a
.
To account for this, I lowered memory.high on testbloat.service to
throttle it even more. This was enough to generate the 50%+ value to trigger
oomd for the test, but as an extra precaution I also lowered the oomd
threshold to 1% so it's certain to try and kill testbloat.service.
43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -ex
|
|
set -o pipefail
|
|
|
|
systemd-analyze log-level debug
|
|
systemd-analyze log-target console
|
|
|
|
# Loose checks to ensure the environment has the necessary features for systemd-oomd
|
|
[[ "$( awk '/SwapTotal/ { print $2 }' /proc/meminfo )" != "0" ]] || echo "no swap" >> /skipped
|
|
[[ -e /proc/pressure ]] || echo "no PSI" >> /skipped
|
|
cgroup_type=$(stat -fc %T /sys/fs/cgroup/)
|
|
if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]; then
|
|
echo "no cgroup2" >> /skipped
|
|
fi
|
|
[[ -e /skipped ]] && exit 0 || true
|
|
|
|
systemctl start testsuite-56-testbloat.service
|
|
systemctl start testsuite-56-testchill.service
|
|
|
|
# Verify systemd-oomd is monitoring the expected units
|
|
oomctl | grep "/testsuite-56-workload.slice"
|
|
oomctl | grep "1%"
|
|
|
|
# systemd-oomd watches for elevated pressure for 30 seconds before acting.
|
|
# It can take time to build up pressure so either wait 5 minutes or for the service to fail.
|
|
timeout=$(date -ud "5 minutes" +%s)
|
|
while [[ $(date -u +%s) -le $timeout ]]; do
|
|
if ! systemctl status testsuite-56-testbloat.service; then
|
|
break
|
|
fi
|
|
sleep 15
|
|
done
|
|
|
|
# testbloat should be killed and testchill should be fine
|
|
if systemctl status testsuite-56-testbloat.service; then exit 42; fi
|
|
if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
|
|
|
|
systemd-analyze log-level info
|
|
|
|
echo OK > /testok
|
|
|
|
exit 0
|