From: Wander Lairson Costa <wander@redhat.com>
To: Clark Williams <williams@redhat.com>,
John Kacur <jkacur@redhat.com>,
linux-rt-users@vger.kernel.org
Cc: Juri Lelli <juri.lelli@redhat.com>,
luffyluo@tencent.com, davidlt@rivosinc.com,
Wander Lairson Costa <wander@redhat.com>
Subject: [[PATCH stalld] 27/33] tests: Reduce starvation_gen durations
Date: Wed, 20 May 2026 11:00:54 -0300 [thread overview]
Message-ID: <20260520140104.112142-28-wander@redhat.com> (raw)
In-Reply-To: <20260520140104.112142-1-wander@redhat.com>
Reduce starvation_gen durations across eight functional test files to
eliminate unnecessary wait times. The generator runs for its full
duration regardless of whether test assertions have already completed,
meaning the previous literal values of 20 and 15 seconds wasted up to
10 seconds per test section. Across the full suite, this accumulated
into significant idle time.
With a typical threshold of 5 seconds, the generator only needs to run
long enough for detection plus a safety margin. Applying a formula of
threshold plus boost duration plus a 4-second margin yields an optimal
12 seconds for standard tests. For detection-only tests lacking a
boost, a 10-second duration provides ample margin.
Update seven instances of 20-second durations to 12 seconds and nine
instances of 15-second durations to 10 seconds, along with two
corresponding log messages. Values already optimized at 12 or 3
seconds, as well as variable-based durations computed directly from
thresholds, remain unchanged since they already scale proportionally.
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
---
tests/functional/test_boost_duration.sh | 4 ++--
tests/functional/test_boost_restoration.sh | 4 ++--
tests/functional/test_deadline_boosting.sh | 8 ++++----
tests/functional/test_fifo_boosting.sh | 4 ++--
tests/functional/test_fifo_priority_starvation.sh | 4 ++--
tests/functional/test_log_only.sh | 4 ++--
tests/functional/test_starvation_detection.sh | 2 +-
tests/functional/test_task_merging.sh | 6 +++---
8 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/tests/functional/test_boost_duration.sh b/tests/functional/test_boost_duration.sh
index 821dffe..d754977 100755
--- a/tests/functional/test_boost_duration.sh
+++ b/tests/functional/test_boost_duration.sh
@@ -92,8 +92,8 @@ log "Starting stalld with ${threshold}s threshold and ${duration}s boost duratio
start_stalld_with_log "${STALLD_LOG}" -f -v -c "${TEST_CPU}" -a ${STALLD_CPU} -t ${threshold} -d ${duration}
# Create starvation with a specific task we can track
-log "Creating starvation on CPU ${TEST_CPU} for 15s"
-start_starvation_gen -c "${TEST_CPU}" -p 80 -n 1 -d 15
+log "Creating starvation on CPU ${TEST_CPU} for 10s"
+start_starvation_gen -c "${TEST_CPU}" -p 80 -n 1 -d 10
# Wait for actual boosting
assert_boost_detected "${STALLD_LOG}" "Boost with ${duration}s boost duration"
diff --git a/tests/functional/test_boost_restoration.sh b/tests/functional/test_boost_restoration.sh
index 62c37b0..6a71644 100755
--- a/tests/functional/test_boost_restoration.sh
+++ b/tests/functional/test_boost_restoration.sh
@@ -33,7 +33,7 @@ start_stalld_with_log "${STALLD_LOG}" -f -v -t $threshold -c ${TEST_CPU} -a ${ST
# Create starvation (starvation_gen creates SCHED_FIFO blocker prio 80, blockee prio 1)
log "Creating starvation with SCHED_FIFO tasks (blocker prio 80, blockee prio 1)"
-start_starvation_gen -c ${TEST_CPU} -p 80 -b 1 -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 80 -b 1 -n 1 -d 12
# Find the starved task
tracked_pid=$(find_starved_child "${STARVE_PID}")
@@ -120,7 +120,7 @@ start_stalld_with_log "${STALLD_LOG}" -f -v -t $threshold -c ${TEST_CPU} -a ${ST
# Use -o flag to create SCHED_OTHER blockees
log "Creating SCHED_OTHER starvation (RT blocker prio 80, SCHED_OTHER blockee)"
-start_starvation_gen -c ${TEST_CPU} -p 80 -o -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 80 -o -n 1 -d 12
# Find the starved SCHED_OTHER task
tracked_pid=$(find_starved_child "${STARVE_PID}")
diff --git a/tests/functional/test_deadline_boosting.sh b/tests/functional/test_deadline_boosting.sh
index 094c146..305c641 100755
--- a/tests/functional/test_deadline_boosting.sh
+++ b/tests/functional/test_deadline_boosting.sh
@@ -64,7 +64,7 @@ start_stalld_with_log "${STALLD_LOG}" -f -v -g 1 -t $threshold -c ${TEST_CPU} -a
# Create starvation
log "Creating starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 15
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 10
# Try to find the boosted task PID before it gets boosted
tracked_pid=$(find_starved_child "${STARVE_PID}")
@@ -106,7 +106,7 @@ start_stalld_with_log "${STALLD_LOG}" -f -v -g 1 -t $threshold -c ${TEST_CPU} -a
# Create starvation
log "Creating starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 12
# Find a starved task before it gets boosted
tracked_pid=$(find_starved_child "${STARVE_PID}")
@@ -165,12 +165,12 @@ else
# Create starvation on CPU0
log "Creating starvation on CPU ${CPU0}"
- start_starvation_gen -c ${CPU0} -p 80 -n 1 -d 15
+ start_starvation_gen -c ${CPU0} -p 80 -n 1 -d 10
STARVE_PID0=${STARVE_PID}
# Create starvation on CPU1
log "Creating starvation on CPU ${CPU1}"
- start_starvation_gen -c ${CPU1} -p 80 -n 1 -d 15
+ start_starvation_gen -c ${CPU1} -p 80 -n 1 -d 10
STARVE_PID1=${STARVE_PID}
# Wait for boosting on both CPUs
diff --git a/tests/functional/test_fifo_boosting.sh b/tests/functional/test_fifo_boosting.sh
index cabc740..57c473d 100755
--- a/tests/functional/test_fifo_boosting.sh
+++ b/tests/functional/test_fifo_boosting.sh
@@ -50,7 +50,7 @@ rm -f "${STALLD_LOG}"
# Create starvation FIRST
log "Creating starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 15
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 10
tracked_pid=$(find_starved_child "${STARVE_PID}")
log "Starting stalld with -F flag (FIFO boosting)"
@@ -103,7 +103,7 @@ rm -f "${STALLD_LOG}"
# Create starvation FIRST
log "Creating starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 12
start_stalld_with_log "${STALLD_LOG}" -f -v -g 1 -N -F -A -t $threshold -c ${TEST_CPU} -a ${STALLD_CPU} \
-d ${boost_duration} -p ${boost_period} -r ${boost_runtime}
diff --git a/tests/functional/test_fifo_priority_starvation.sh b/tests/functional/test_fifo_priority_starvation.sh
index 072c951..66075d4 100755
--- a/tests/functional/test_fifo_priority_starvation.sh
+++ b/tests/functional/test_fifo_priority_starvation.sh
@@ -58,7 +58,7 @@ threshold=5
boost_duration=3
log "Creating FIFO-on-FIFO starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 10 -b 5 -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 10 -b 5 -n 1 -d 12
# Find the starved task (blockee) PID
blockee_pid=$(find_starved_child "${STARVE_PID}")
@@ -180,7 +180,7 @@ rm -f "${STALLD_LOG}"
threshold=5
log "Creating FIFO-on-FIFO starvation"
-start_starvation_gen -c ${TEST_CPU} -p 10 -b 5 -n 2 -d 20 -v
+start_starvation_gen -c ${TEST_CPU} -p 10 -b 5 -n 2 -d 12 -v
# Extract blocker and blockee PIDs from starvation_gen output
# The output shows "Blocker TID: <pid>" and "Blockee N TID: <pid>"
diff --git a/tests/functional/test_log_only.sh b/tests/functional/test_log_only.sh
index 824ef7a..b38db70 100755
--- a/tests/functional/test_log_only.sh
+++ b/tests/functional/test_log_only.sh
@@ -44,10 +44,10 @@ echo "Stalld will run on CPU ${STALLD_CPU}"
LOG_FILE="/tmp/stalld_test_log_only_$$.log"
CLEANUP_FILES+=("${LOG_FILE}")
-echo "Creating starvation on CPU ${TEST_CPU} (will run for 15 seconds)"
+echo "Creating starvation on CPU ${TEST_CPU} (will run for 10 seconds)"
# Start starvation generator BEFORE stalld to ensure CPU is busy from the start
-start_starvation_gen -c ${TEST_CPU} -p 10 -n 1 -d 15
+start_starvation_gen -c ${TEST_CPU} -p 10 -n 1 -d 10
STARVGEN_PID=${STARVE_PID}
# Start stalld in log-only mode with verbose output to capture logs
diff --git a/tests/functional/test_starvation_detection.sh b/tests/functional/test_starvation_detection.sh
index 9362899..33bbfed 100755
--- a/tests/functional/test_starvation_detection.sh
+++ b/tests/functional/test_starvation_detection.sh
@@ -52,7 +52,7 @@ threshold=5
# Create starvation
log "Creating starvation on CPU ${TEST_CPU}"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 15
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 10
log "Starting stalld with ${threshold}s threshold (log-only mode)"
start_stalld_with_log "${STALLD_LOG}" -f -v -N -l -t $threshold -c ${TEST_CPU} -a ${STALLD_CPU}
diff --git a/tests/functional/test_task_merging.sh b/tests/functional/test_task_merging.sh
index 5e03622..082f07d 100755
--- a/tests/functional/test_task_merging.sh
+++ b/tests/functional/test_task_merging.sh
@@ -101,7 +101,7 @@ start_stalld_with_log "${STALLD_LOG}" -f -v -g 1 -l -t $threshold -c ${TEST_CPU}
# Create starvation
log "Creating starvation"
-start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 20
+start_starvation_gen -c ${TEST_CPU} -p 80 -n 1 -d 12
# Wait for starvation detection
wait_for_starvation_detected "${STALLD_LOG}"
@@ -174,11 +174,11 @@ else
# Create starvation on both CPUs
log "Creating starvation on CPU ${CPU0}"
- start_starvation_gen -c ${CPU0} -p 80 -n 1 -d 15
+ start_starvation_gen -c ${CPU0} -p 80 -n 1 -d 10
STARVE_PID0=${STARVE_PID}
log "Creating starvation on CPU ${CPU1}"
- start_starvation_gen -c ${CPU1} -p 80 -n 1 -d 15
+ start_starvation_gen -c ${CPU1} -p 80 -n 1 -d 10
STARVE_PID1=${STARVE_PID}
# Wait for starvation detection on both CPUs
--
2.54.0
next prev parent reply other threads:[~2026-05-20 14:02 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 14:00 [[PATCH stalld] 00/33] Test suite hardening, correctness fixes, and BPF optimization Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 01/33] stalld: Reject --force_fifo in single-threaded mode Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 02/33] tests: Introduce test_section() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 03/33] tests: Introduce cleanup_scenario() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 04/33] tests: Introduce starvation and boost asserts Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 05/33] tests: Introduce find_starved_child() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 06/33] tests: Fix task exit timing in test_boost_restoration Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 07/33] tests: Consolidate and adopt init_functional_test() Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 08/33] tests: Introduce assert_stalld_rejects() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 09/33] tests: Fix boost verification in runtime and duration tests Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 10/33] tests: Fix subshell swallowing test results Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 11/33] tests: Fix repeated log match finding same line Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 12/33] chore: Remove legacy test infrastructure and stale docs Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 13/33] tests: Add assertions to SCHED_OTHER restoration test Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 14/33] tests: Fix CPU selection grep substring matches Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 15/33] tests: Add idle CPU skipping assertion Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 16/33] tests: Remove redundant pkill from cleanup Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 17/33] tests: Introduce and adopt assert_log_contains() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 18/33] tests: Remove weak, redundant, and assertion-free test blocks Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 19/33] tests: Introduce and adopt assert_success() helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 20/33] tests: Replace wait conditionals with asserts Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 21/33] tests: Remove if-wrappers around assert calls Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 22/33] tests: Abort immediately on test failure Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 23/33] tests: Remove dead code after making fail() fatal Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 24/33] tests: Introduce and adopt process helpers Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 25/33] tests: Extract wait_for_process_exit helper Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 26/33] tests: Reduce default wait timeouts Wander Lairson Costa
2026-05-20 14:00 ` Wander Lairson Costa [this message]
2026-05-20 14:00 ` [[PATCH stalld] 28/33] tests: Replace init sleeps in test_affinity Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 29/33] tests: Drop redundant sleeps in test_pidfile Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 30/33] tests: Remove redundant sleeps after start_stalld Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 31/33] tests: Reduce timing and replace sleeps with event waits Wander Lairson Costa
2026-05-20 14:00 ` [[PATCH stalld] 32/33] tests: Fix async-signal-unsafe handler Wander Lairson Costa
2026-05-20 14:01 ` [[PATCH stalld] 33/33] bpf: Replace linear task scan with hash map Wander Lairson Costa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260520140104.112142-28-wander@redhat.com \
--to=wander@redhat.com \
--cc=davidlt@rivosinc.com \
--cc=jkacur@redhat.com \
--cc=juri.lelli@redhat.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=luffyluo@tencent.com \
--cc=williams@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.