TEST-55-OOMD: use 'stress' to create high pressure

The test fails on my machine, running Debian stable, because
testsuite-55-testbloat.service just swaps and never goes over the
limit, so it's not killed. Use 'stress' instead which seems to be
able to overwhelm the swap too.
This commit is contained in:
Luca Boccassi 2023-06-17 00:07:32 +01:00
parent d39cdbb3bf
commit 937e82cb7d
5 changed files with 10 additions and 45 deletions

View file

@ -14,6 +14,8 @@ test_append_files() {
mkswap "${LOOPDEV:?}p2"
image_install swapon swapoff
inst_binary stress
cat >>"${initdir:?}/etc/fstab" <<EOF
UUID=$(blkid -o value -s UUID "${LOOPDEV}p2") none swap defaults 0 0
EOF

View file

@ -1,40 +0,0 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# Don't use set -x here, since it generates a lot of output and slows
# the script down, causing unexpected test fails.
set -eu
set -o pipefail
PAGE_SIZE=$(getconf PAGE_SIZE)
BLOAT_ITERATION_TARGET=$((100 << 20)) # 100 MB
BLOAT_HOLDER=()
PID="$$"
function bloat {
local set_size mem_usage target_mem_size
set_size=$(cut -d " " -f2 "/proc/$PID/statm")
mem_usage=$((set_size * PAGE_SIZE))
target_mem_size=$((mem_usage + $1))
BLOAT_HOLDER=()
while [[ "$mem_usage" -lt "$target_mem_size" ]]; do
echo "target $target_mem_size"
echo "mem usage $mem_usage"
BLOAT_HOLDER+=("$(printf "=%0.s" {1..1000000})")
set_size=$(cut -d " " -f2 "/proc/$PID/statm")
mem_usage=$((set_size * PAGE_SIZE))
done
}
function run {
local arr=()
while :; do
bloat "$BLOAT_ITERATION_TARGET"
arr+=("${BLOAT_HOLDER[@]}")
sleep 1
done
}
run

View file

@ -3,8 +3,8 @@
Description=Create a lot of memory pressure
[Service]
# A VERY small memory.high will cause the script (trying to use a lot of memory)
# A VERY small memory.high will cause the 'stress' (trying to use a lot of memory)
# to throttle and be put under heavy pressure.
MemoryHigh=5M
MemoryHigh=3M
Slice=testsuite-55-workload.slice
ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh
ExecStart=stress --timeout 3m --vm 10 --vm-bytes 200M --vm-keep --vm-stride 1

View file

@ -3,6 +3,6 @@
Description=Create some memory pressure
[Service]
MemoryHigh=6M
MemoryHigh=12M
Slice=testsuite-55-workload.slice
ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh
ExecStart=stress --timeout 3m --vm 10 --vm-bytes 200M --vm-keep --vm-stride 1

View file

@ -89,6 +89,7 @@ while [[ $(date -u +%s) -le $timeout ]]; do
if ! systemctl status testsuite-55-testbloat.service; then
break
fi
oomctl
sleep 2
done
@ -126,6 +127,7 @@ while [[ $(date -u +%s) -le $timeout ]]; do
if ! systemctl --machine "testuser@.host" --user status testsuite-55-testbloat.service; then
break
fi
oomctl
sleep 2
done
@ -153,6 +155,7 @@ EOF
if ! systemctl status testsuite-55-testmunch.service; then
break
fi
oomctl
sleep 2
done