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

Jan Kiszka <[email protected]> Thu, 16 Jul 2026 08:22:42 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
On 15.07.26 20:47, Tobias Schaffner wrote:
> 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.

There is xenomai-testsuite on xenomai 3, and we have libevl-test here.
Both need a hard dependency on a stress backend in order to run their
measurement-based tests. If any of them supports multiple options, then
you model that instead ("stress-ng | unix-bench", e.g.).

None of that would bloat libevl, xenomai-runtime or whatever you use for
production.

Jan

-- 
Siemens AG, Foundational Technologies
Linux Expert Center