Re: [PATCH xenomai-images 1/3] ci: use stress-ng to stress EVL tests

Tobias Schaffner <[email protected]> Wed, 15 Jul 2026 20:47:35 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
Hi Florian,

On 7/15/26 15:00, Florian Bezdeka wrote:
> On Wed, 2026-07-15 at 11:28 +0200, Tobias Schaffner wrote:
>> Use stress-ng to apply CPU, virtual memory, FPU register, and procfs load
>> during EVL tests, mimicking the stressors used in Xenomai 3.
>>
>> Signed-off-by: Tobias Schaffner <[email protected]>
>> ---
>>   ci/lib/gitlab-ci-base.yml | 2 ++
>>   ci/xenomai_4_evl.yml      | 2 +-
>>   ci/xenomai_4_next.yml     | 2 +-
>>   kas/opt/ci.yaml           | 1 +
>>   4 files changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/ci/lib/gitlab-ci-base.yml b/ci/lib/gitlab-ci-base.yml
>> index 0540628..a3359bb 100644
>> --- a/ci/lib/gitlab-ci-base.yml
>> +++ b/ci/lib/gitlab-ci-base.yml
>> @@ -25,6 +25,8 @@ variables:
>>     ADDITIONAL_TEST_TIMEOUT_MINUTES: 10
>>     TEST_MAXIMUM_LATENCY: 0
>>     TEST_COMMAND: "xeno-test -k -l 'dohell -m /tmp ${TEST_RUNTIME_SECONDS}' ${ADDITIONAL_XENO_TEST_ARGS}"
>> +  EVL_STRESS_COMMAND: stress-ng --cpu 1 --vm 1 --vm-bytes 64M --fp 1 --procfs 1
>> +  EVL_TEST_COMMAND: evl test --stress-cmd "${EVL_STRESS_COMMAND}" -k $(evl test -l | grep -Ev "${EVL_TESTS_SKIP_PATTERN}")
>>     SSTATE_LOCATION: "s3://xenomai-images-artifacts/sstate"
>>     SSTATE_MIRRORS: "file://.* ${SSTATE_LOCATION}/PATH;downloadfilename=PATH"
>>     SSTATE_MAX_AGE: 14d
>> diff --git a/ci/xenomai_4_evl.yml b/ci/xenomai_4_evl.yml
>> index 283a1fd..c6a92b8 100644
>> --- a/ci/xenomai_4_evl.yml
>> +++ b/ci/xenomai_4_evl.yml
>> @@ -29,4 +29,4 @@ variables:
>>     XENOMAI_VERSION: "4-next"
>>     BUILD_IDENTIFIER: "evl-${XENOMAI_VERSION}_kernel-${KERNEL_VERSION}"
>>     CACHE_KERNEL: evl
>> -  TEST_COMMAND: "evl test -k $(evl test -l | grep -Ev \"${EVL_TESTS_SKIP_PATTERN}\")"
>> +  TEST_COMMAND: "${EVL_TEST_COMMAND}"
>> diff --git a/ci/xenomai_4_next.yml b/ci/xenomai_4_next.yml
>> index 6ef4b6a..7ecfbb5 100644
>> --- a/ci/xenomai_4_next.yml
>> +++ b/ci/xenomai_4_next.yml
>> @@ -21,4 +21,4 @@ variables:
>>     KERNEL_VERSION_WITH_QEMU: "head"
>>     BUILD_IDENTIFIER: "evl-${XENOMAI_VERSION}_kernel-${KERNEL_VERSION}"
>>     CACHE_KERNEL: evl
>> -  TEST_COMMAND: "evl test -k $(evl test -l | grep -Ev \"${EVL_TESTS_SKIP_PATTERN}\")"
>> +  TEST_COMMAND: "${EVL_TEST_COMMAND}"
>> diff --git a/kas/opt/ci.yaml b/kas/opt/ci.yaml
>> index e1466a0..f9e4bb7 100644
>> --- a/kas/opt/ci.yaml
>> +++ b/kas/opt/ci.yaml
>> @@ -20,6 +20,7 @@ local_conf_header:
>>     xenomai-ci: |
>>       ROOTFS_POSTPROCESS_COMMAND:remove = "image_postprocess_sshd_key_regen"
>>       IMAGE_INSTALL += "customizations-ci"
>> +    IMAGE_PREINSTALL += "stress-ng"
> 
> Hm... As the CI configuration is now requesting stress-ng it seems right
> that it is pre-installed by the CI image.
> 
> OTOH I hate those loose dependencies. Maybe the (lib)evl test package
> should pull it in instead? So that the dependency is handled at package
> level. Someone else might like to install the test package and get all
> dependencies accordingly.
> 
> To solve that properly it might make sense to make stress-ng the default
> stressor. That would allow the packaging to properly depend on it,
> instead of only "suggest" stress-ng.

I see your point but the decision to not make it a dependency was
intended.

First stress-ng is a debugging and evaluation tool and we do not want to
have it installed in production most of the time.

Second there are indeed persons/projects that have specialized other
loads. OSADL for example is using unix-bench in its realtime farm.

But most important this is a huge dependency. The large number of
libs needed for all the implemented stressors adds up to a total of
~240MB. Imo that is to large for libevl which also targets embedded
systems.

Best,
Tobias

PS: Taking the chance to share that we now have two EVL boards in the
OSADL realtime farm. Running on my 7.0 version port that I had available
at the time but will get an update soon:

7.0.0 #1 SMP PREEMPT EVL Starfive/Visionfive 2
https://www.osadl.org/Long-term-latency-plot-of-system-in-rack.qa-3d-latencyplot-r9s8.0.html?shadow=0

7.0.0 #1 SMP PREEMPT EVL NN/Raspberry Pi 4 Model B
https://www.osadl.org/Long-term-latency-plot-of-system-in-rack.qa-3d-latencyplot-r9s8.0.html?shadow=1

> 
>>       IMAGE_INSTALL:remove = "sshd-regen-keys"
>>       IMAGE_INSTALL:remove = "expand-on-first-boot"
>>       IMAGE_FSTYPES = "${@ 'ext4.gz' if d.getVar('MACHINE', True).startswith('qemu') else 'tar.gz' }"
>> -- 
>> 2.43.0