On 7/10/26 16:31, Gabriele Monaco wrote:
On Fri, 2026-07-10 at 01:08 +0800, Wen Yang wrote:
   load() { # returns true if there was a reaction
-       local lines_before num
+       local lines_before num load_pid ret
        num=$((($(nproc) + 1) / 2))
        lines_before=$(dmesg | wc -l)
-       stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q
-       dmesg | tail -n $((lines_before + 1)) | grep -q "rv: monitor wwnr
does not allow event"
+       stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q &
+       load_pid=$!
+       timeout 5 dmesg -w | tail -n +$((lines_before + 1)) | grep -m 1 -q
"rv: monitor wwnr does not allow event"


Minor nit: could we add a small delay (e.g., sleep 0.1) before dmesg?

I don't get what the benefit would be.

The intent of that line is to run a continuous dmesg (-w) for up to 5s (timeout)
but stopping if an occurrence is found (grep -m 1 would close the pipe).

Do you see a case in which this wouldn't happen?


You're right, the sleep is not needed. My concern was that a reaction
message generated in the brief window between starting stress-ng and the
dmesg pipeline being fully set up might be missed. But that can't
happen: dmesg -w always starts by flushing all currently buffered
messages before entering watch mode, so any reaction already in the ring
buffer will be included in its initial output. The  tail -n +N  offset
then correctly filters to only those messages beyond our pre-test
baseline.

Withdraw the nit. The Reviewed-by stands.

--
Best wishes,
Wen


Reviewed-by: Wen Yang <[email protected]>


Reply via email to