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:
parent
4c48f7d89c
commit
1ec8632cad
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user