1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-20 14:03:39 +03:00

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.

(cherry picked from commit 937e82cb7d82dbdbd287d82f4708f15d6032eb9f)
(cherry picked from commit 9654140f342df74b8572da1fa4d5969f3d9b4617)
(cherry picked from commit cad0dba2f824ebc26eb44f674955e3cfe9ef2e35)
This commit is contained in:
Luca Boccassi 2023-06-17 00:07:32 +01:00 committed by Luca Boccassi
parent 4c48f7d89c
commit 1ec8632cad
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

@ -90,6 +90,7 @@ while [[ $(date -u +%s) -le $timeout ]]; do
if ! systemctl status testsuite-55-testbloat.service; then
break
fi
oomctl
sleep 2
done
@ -127,6 +128,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
@ -154,6 +156,7 @@ EOF
if ! systemctl status testsuite-55-testmunch.service; then
break
fi
oomctl
sleep 2
done