* [libevl][PATCH 0/4] evl-test: align with xeno-test
@ 2024-06-13 13:45 Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 1/4] Copy dohell from Xenomai 3 Tobias Schaffner
` (3 more replies)
0 siblings, 4 replies; 31+ messages in thread
From: Tobias Schaffner @ 2024-06-13 13:45 UTC (permalink / raw)
To: xenomai; +Cc: jan.kiszka, rpm, Tobias Schaffner
Hi,
at the moment evl-test supports running the available unittests. This
series introduces load generation and latency measurement as present in
xeno-test. This will allow more standardized testing and a basic
comparison between Xenomai 3 and EVL.
To list the available tests --list must be used now, in favor of using
-l for the load command as in xeno-test.
Load generation with dohell and latency measurement was chosen as the
default when running evl test. The combination -u -l "" can be used to
run evl test with the old behaviour.
Rel: https://lore.kernel.org/xenomai/cf01659d-e800-4e97-8246-a4418cf6f4e0@siemens.com/
Tobias Schaffner (4):
Copy dohell from Xenomai 3
evl-test: Measure worst case latencies
evl-test: Start evl-test with load by default
evl-test: Add hectic for real-time stress
utils/dohell | 97 ++++++++++++++++++++++++++++++++++++
utils/evl-test | 124 ++++++++++++++++++++++++++++++++++------------
utils/meson.build | 1 +
3 files changed, 190 insertions(+), 32 deletions(-)
create mode 100755 utils/dohell
--
2.40.1
^ permalink raw reply [flat|nested] 31+ messages in thread
* [libevl][PATCH 1/4] Copy dohell from Xenomai 3
2024-06-13 13:45 [libevl][PATCH 0/4] evl-test: align with xeno-test Tobias Schaffner
@ 2024-06-13 13:45 ` Tobias Schaffner
2024-06-13 14:23 ` Philippe Gerum
2024-06-13 13:45 ` [libevl][PATCH 2/4] evl-test: Measure worst case latencies Tobias Schaffner
` (2 subsequent siblings)
3 siblings, 1 reply; 31+ messages in thread
From: Tobias Schaffner @ 2024-06-13 13:45 UTC (permalink / raw)
To: xenomai; +Cc: jan.kiszka, rpm, Tobias Schaffner
Dohell is used as the default load generator in Xenomai 3. Add it to
libevl to be able to stress the system while testing evl.
Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
---
utils/dohell | 97 +++++++++++++++++++++++++++++++++++++++++++++++
utils/meson.build | 1 +
2 files changed, 98 insertions(+)
create mode 100755 utils/dohell
diff --git a/utils/dohell b/utils/dohell
new file mode 100755
index 0000000..ea84d4c
--- /dev/null
+++ b/utils/dohell
@@ -0,0 +1,97 @@
+#! /bin/sh
+
+usage() {
+ cat <<EOF
+$0 [ -b path ] [ -s server ] [ -p port ] [ -m mntpoint ] [ -l path | seconds ]
+
+Generate load, using an assorted set of commands and optionnaly:
+- hackbench if the path to the hackbench binary is specified with -b;
+- nc to send TCP data to "server" port "port" if -s is specified (if -p
+is not specified, the port 9, aka discard is used);
+- dd to write data under "mntpoint" if -m is specified.
+
+during the runtime of the LTP test if the path to the LTP installation
+directory is specifed with -l or during "seconds" seconds.
+EOF
+}
+
+port=9
+while [ $# -gt 0 ]; do
+ case $1 in
+ -h|--help) usage
+ exit 0;;
+ -b) shift; hackbench="$1"; shift
+ ;;
+ -s) shift; server="$1"; shift
+ ;;
+ -p) shift; port="$1"; shift
+ ;;
+ -m) shift; mntpoint="$1"; shift
+ ;;
+ -l) shift; ltpdir="$1"; shift
+ ;;
+ -*) usage
+ exit 1;;
+ *) break;;
+ esac
+done
+
+if [ -z "$ltpdir" -a $# -ne 1 ]; then
+ usage
+ exit 1
+fi
+
+pids=""
+
+if [ -n "$server" ]; then
+ if type nc > /dev/null 2>&1; then
+ nc=nc
+ elif type netcat > /dev/null 2>&1; then
+ nc=netcat
+ else
+ echo netcat or nc not found
+ exit 1
+ fi
+
+ seq 1 399999 > /tmp/netcat.data
+ ( while :; do cat /tmp/netcat.data; sleep 15; done | $nc $server $port ) &
+ pids="$!"
+fi
+
+if [ -n "$mntpoint" ]; then
+ while :; do dd if=/dev/zero of=$mntpoint/bigfile bs=1024000 count=100; sync; done &
+ pids="$pids $!"
+fi
+
+if [ -n "$hackbench" ]; then
+ while :; do $hackbench 1; done &
+ pids="$pids $!"
+fi
+
+while :; do cat /proc/interrupts; done > /dev/null 2>&1 &
+pids="$pids $!"
+
+while :; do ps w; done > /dev/null 2>&1 &
+pids="$pids $!"
+
+dd if=/dev/zero of=/dev/null &
+pids="$pids $!"
+
+while :; do ls -lR / > /dev/null 2>&1; done &
+pids="$pids $!"
+
+test -e /proc/sys/kernel/hung_task_timeout_secs && \
+echo 0 > /proc/sys/kernel/hung_task_timeout_secs
+
+if [ -n "$ltpdir" ]; then
+ cd "$ltpdir" && ./runalltests.sh
+ cd "$ltpdir" && ./runalltests.sh
+else
+ sleep $1
+fi
+
+kill $pids > /dev/null 2>&1
+sleep 5
+killall -KILL cat $nc dd hackbench ls ps > /dev/null 2>&1
+killall -KILL `basename $0` sleep > /dev/null 2>&1
+
diff --git a/utils/meson.build b/utils/meson.build
index 59d818a..17d91cc 100644
--- a/utils/meson.build
+++ b/utils/meson.build
@@ -21,6 +21,7 @@ executable('evl-check',
)
helper_scripts = [
+ 'dohell',
'evl-gdb',
'evl-help',
'evl-start',
--
2.40.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [libevl][PATCH 2/4] evl-test: Measure worst case latencies
2024-06-13 13:45 [libevl][PATCH 0/4] evl-test: align with xeno-test Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 1/4] Copy dohell from Xenomai 3 Tobias Schaffner
@ 2024-06-13 13:45 ` Tobias Schaffner
2024-06-13 14:09 ` Philippe Gerum
2024-06-13 13:45 ` [libevl][PATCH 3/4] evl-test: Start evl-test with load by default Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress Tobias Schaffner
3 siblings, 1 reply; 31+ messages in thread
From: Tobias Schaffner @ 2024-06-13 13:45 UTC (permalink / raw)
To: xenomai; +Cc: jan.kiszka, rpm, Tobias Schaffner
Run latmus for 30 seconds after running the unittests to measure the
worst case latencies.
Allow to run with -u to solely run unittests.
Drop getopt to simplify argument parsing in the process.
Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
---
utils/evl-test | 55 ++++++++++++++++++++++++--------------------------
1 file changed, 26 insertions(+), 29 deletions(-)
diff --git a/utils/evl-test b/utils/evl-test
index bc7440f..5c1c3da 100644
--- a/utils/evl-test
+++ b/utils/evl-test
@@ -7,44 +7,37 @@ if test \! -d $EVL_TESTDIR; then
fi
usage() {
- echo >&2 "usage: $(basename $1) [-l][-L][-k][-h] [test-list]"
+ echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
}
-args=$(getopt -n $(basename $0) 'h@klL' "$@")
-if [ $? -ne 0 ]; then
- usage $0
- exit 1
-fi
-
-help=false
keep_going=false
do_list=false
full_path=false
+unittests_only=false
-set -- $args
-for opt
-do
-case "$opt" in
- -k) keep_going=true;
- shift;;
- -h) help=true;
- shift;;
- -l) do_list=true;
- shift;;
- -L) full_path=true;
- do_list=true;
- shift;;
- -@) echo "run the EVL tests"
- exit 0;;
- --) shift; break;;
+while :; do
+ case "$1" in
+ -k) keep_going=true
+ shift;;
+ -l) do_list=true
+ shift;;
+ -L) full_path=true
+ do_list=true
+ shift;;
+ -u) unittests_only=true
+ shift;;
+ -@) echo "run the EVL tests"
+ exit 0;;
+ --) shift
+ break;;
+ "") break;;
+ -h) usage $0
+ exit 0;;
+ *) usage $0
+ exit 1;;
esac
done
-if test x$help = xtrue; then
- usage $0
- exit 0
-fi
-
test_list=
for t in "$@"; do
test_list="$test_list $(eval echo $EVL_TESTDIR/$t)"
@@ -89,4 +82,8 @@ for t in $test_list; do
fi
done
+if test x$unittests_only = xfalse; then
+ latmus -T 30
+fi
+
exit 0
--
2.40.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 13:45 [libevl][PATCH 0/4] evl-test: align with xeno-test Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 1/4] Copy dohell from Xenomai 3 Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 2/4] evl-test: Measure worst case latencies Tobias Schaffner
@ 2024-06-13 13:45 ` Tobias Schaffner
2024-06-13 14:16 ` Philippe Gerum
2024-06-13 13:45 ` [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress Tobias Schaffner
3 siblings, 1 reply; 31+ messages in thread
From: Tobias Schaffner @ 2024-06-13 13:45 UTC (permalink / raw)
To: xenomai; +Cc: jan.kiszka, rpm, Tobias Schaffner
Stress evl with a load command while running the tests. The load command
may be set to an empty string to run tests without stressing the system.
To align with xeno-test the -l command line argument was used for the load
command. Listing of the unittests can now be done with --list and --List.
The load command is moved to its own process group to allow a clean
teardown of the load process with all its subprocesses.
Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
---
utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 61 insertions(+), 10 deletions(-)
diff --git a/utils/evl-test b/utils/evl-test
index 5c1c3da..fb85f69 100644
--- a/utils/evl-test
+++ b/utils/evl-test
@@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
exit 2
fi
-usage() {
- echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
-}
-
keep_going=false
do_list=false
full_path=false
unittests_only=false
+load_cmd="dohell 900"
+load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
+
+usage() {
+ cat >&2 <<EOF
+evl test -h
+
+This help text.
+
+evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
+
+Run a basic test/benchmark of evl on your platform, by first starting a
+few unit tests, then running the latency test under the load generated by
+"load-command".
+
+By default, the load command is "dohell 900", which will generate load during
+15 minutes. To generate a more realistic load see dohell help.
+
+This script accepts the -k option to tell the unit test loop to keep
+going upon a failing test. Otherwise evl test stops immediately.
+
+Use -u if you want to skip the latency test and only run the unittests.
+
+Use --list to output all the tests available. --List will print all the tests
+with their full path.
+
+Example:
+evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
+
+Will generate load including network load using the server at IP address
+192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
+installed under the /ltp directory, and use the latency test by measuring the
+timer irq latency.
+EOF
+}
+
+cleanup() {
+ err="$?"
+ if test -r "${load_cmd_pgid_file}"; then
+ kill -TERM "-$(cat ${load_cmd_pgid_file})"
+ rm ${load_cmd_pgid_file}
+ fi
+ if test ! -z "${rt_load_pid}"; then
+ kill -TERM "${rt_load_pid}"
+ fi
+ trap '' EXIT
+ exit "$err"
+}
while :; do
case "$1" in
+ -h) usage $0
+ exit 0;;
-k) keep_going=true
shift;;
- -l) do_list=true
+ -l) load_cmd="$2"
+ shift 2;;
+ -u) unittests_only=true
+ shift;;
+ --list) do_list=true
shift;;
- -L) full_path=true
+ --List) full_path=true
do_list=true
shift;;
- -u) unittests_only=true
- shift;;
-@) echo "run the EVL tests"
exit 0;;
--) shift
break;;
"") break;;
- -h) usage $0
- exit 0;;
*) usage $0
exit 1;;
esac
@@ -62,6 +108,11 @@ if test x$do_list = xtrue; then
exit 0
fi
+if test ! -z "${load_cmd}"; then
+ trap cleanup EXIT INT
+ setsid /bin/sh -c "${load_cmd} & echo \$\$ > ${load_cmd_pgid_file}"
+fi
+
for t in $test_list; do
test \! -x $t && echo "$(basename $t): no such test" && exit 2
# Swap stdout<->stderr for the test, capturing stderr into $log.
--
2.40.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress
2024-06-13 13:45 [libevl][PATCH 0/4] evl-test: align with xeno-test Tobias Schaffner
` (2 preceding siblings ...)
2024-06-13 13:45 ` [libevl][PATCH 3/4] evl-test: Start evl-test with load by default Tobias Schaffner
@ 2024-06-13 13:45 ` Tobias Schaffner
2024-06-13 14:26 ` Philippe Gerum
3 siblings, 1 reply; 31+ messages in thread
From: Tobias Schaffner @ 2024-06-13 13:45 UTC (permalink / raw)
To: xenomai; +Cc: jan.kiszka, rpm, Tobias Schaffner
The -r option allows to add realtime-stress by running hectic in the
background while running the tests.
Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
---
utils/evl-test | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/utils/evl-test b/utils/evl-test
index fb85f69..9a12d58 100644
--- a/utils/evl-test
+++ b/utils/evl-test
@@ -12,6 +12,7 @@ full_path=false
unittests_only=false
load_cmd="dohell 900"
load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
+rt_load_pid=""
usage() {
cat >&2 <<EOF
@@ -19,7 +20,7 @@ evl test -h
This help text.
-evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
+evl test [ -l "load command" ] [ -k ] [ -r ] [ -u ] [ --list ] [ --List ]
Run a basic test/benchmark of evl on your platform, by first starting a
few unit tests, then running the latency test under the load generated by
@@ -31,6 +32,10 @@ By default, the load command is "dohell 900", which will generate load during
This script accepts the -k option to tell the unit test loop to keep
going upon a failing test. Otherwise evl test stops immediately.
+If the script is passed the -r option, real-time stress is added to the test,
+with the help of the "hectic" test. But beware: the latency test figures are
+then no longer meaningful.
+
Use -u if you want to skip the latency test and only run the unittests.
Use --list to output all the tests available. --List will print all the tests
@@ -67,6 +72,8 @@ while :; do
shift;;
-l) load_cmd="$2"
shift 2;;
+ -r) rt_load=true;
+ shift;;
-u) unittests_only=true
shift;;
--list) do_list=true
@@ -113,6 +120,11 @@ if test ! -z "${load_cmd}"; then
setsid /bin/sh -c "${load_cmd} & echo \$\$ > ${load_cmd_pgid_file}"
fi
+if test x$rt_load = xtrue; then
+ hectic > /dev/null 2>&1 &
+ rt_load_pid="$!"
+fi
+
for t in $test_list; do
test \! -x $t && echo "$(basename $t): no such test" && exit 2
# Swap stdout<->stderr for the test, capturing stderr into $log.
--
2.40.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 2/4] evl-test: Measure worst case latencies
2024-06-13 13:45 ` [libevl][PATCH 2/4] evl-test: Measure worst case latencies Tobias Schaffner
@ 2024-06-13 14:09 ` Philippe Gerum
0 siblings, 0 replies; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 14:09 UTC (permalink / raw)
To: Tobias Schaffner; +Cc: xenomai, jan.kiszka
Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> Run latmus for 30 seconds after running the unittests to measure the
> worst case latencies.
>
> Allow to run with -u to solely run unittests.
>
> Drop getopt to simplify argument parsing in the process.
Reading the code, I'm not sure this simplifies anything. What is the
actual upside of dropping getopt?
>
> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
> ---
> utils/evl-test | 55 ++++++++++++++++++++++++--------------------------
> 1 file changed, 26 insertions(+), 29 deletions(-)
>
> diff --git a/utils/evl-test b/utils/evl-test
> index bc7440f..5c1c3da 100644
> --- a/utils/evl-test
> +++ b/utils/evl-test
> @@ -7,44 +7,37 @@ if test \! -d $EVL_TESTDIR; then
> fi
>
> usage() {
> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h] [test-list]"
> + echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
> }
>
> -args=$(getopt -n $(basename $0) 'h@klL' "$@")
> -if [ $? -ne 0 ]; then
> - usage $0
> - exit 1
> -fi
> -
> -help=false
> keep_going=false
> do_list=false
> full_path=false
> +unittests_only=false
Unit testing should be on by default, with a full-mode switch including
latmus, because this is the original way for running unattended
tests. Since latmus won't trigger any error on unacceptable latency,
there is no upside to have it on unless we really want to attend the
test, looking at its output.
>
> -set -- $args
> -for opt
> -do
> -case "$opt" in
> - -k) keep_going=true;
> - shift;;
> - -h) help=true;
> - shift;;
> - -l) do_list=true;
> - shift;;
> - -L) full_path=true;
> - do_list=true;
> - shift;;
> - -@) echo "run the EVL tests"
> - exit 0;;
> - --) shift; break;;
> +while :; do
> + case "$1" in
> + -k) keep_going=true
> + shift;;
> + -l) do_list=true
> + shift;;
> + -L) full_path=true
> + do_list=true
> + shift;;
> + -u) unittests_only=true
> + shift;;
> + -@) echo "run the EVL tests"
> + exit 0;;
> + --) shift
> + break;;
> + "") break;;
> + -h) usage $0
> + exit 0;;
> + *) usage $0
> + exit 1;;
> esac
> done
>
> -if test x$help = xtrue; then
> - usage $0
> - exit 0
> -fi
> -
> test_list=
> for t in "$@"; do
> test_list="$test_list $(eval echo $EVL_TESTDIR/$t)"
> @@ -89,4 +82,8 @@ for t in $test_list; do
> fi
> done
>
> +if test x$unittests_only = xfalse; then
> + latmus -T 30
> +fi
> +
> exit 0
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 13:45 ` [libevl][PATCH 3/4] evl-test: Start evl-test with load by default Tobias Schaffner
@ 2024-06-13 14:16 ` Philippe Gerum
2024-06-13 15:30 ` Jan Kiszka
2024-06-13 17:27 ` Philippe Gerum
0 siblings, 2 replies; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 14:16 UTC (permalink / raw)
To: Tobias Schaffner; +Cc: xenomai, jan.kiszka
Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> Stress evl with a load command while running the tests. The load command
> may be set to an empty string to run tests without stressing the system.
>
> To align with xeno-test the -l command line argument was used for the load
> command. Listing of the unittests can now be done with --list and --List.
>
Nak. Compat with xeno-test is definitely not a requirement if this means
breaking the existing evl command line usage. Besides, --List looks
strange as an option. Let's pick a different option for the load command
instead.
> The load command is moved to its own process group to allow a clean
> teardown of the load process with all its subprocesses.
>
> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
> ---
> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
> 1 file changed, 61 insertions(+), 10 deletions(-)
>
> diff --git a/utils/evl-test b/utils/evl-test
> index 5c1c3da..fb85f69 100644
> --- a/utils/evl-test
> +++ b/utils/evl-test
> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
> exit 2
> fi
>
> -usage() {
> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
> -}
> -
> keep_going=false
> do_list=false
> full_path=false
> unittests_only=false
> +load_cmd="dohell 900"
> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
> +
> +usage() {
> + cat >&2 <<EOF
> +evl test -h
> +
> +This help text.
> +
> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
> +
> +Run a basic test/benchmark of evl on your platform, by first starting a
> +few unit tests, then running the latency test under the load generated by
> +"load-command".
> +
> +By default, the load command is "dohell 900", which will generate load during
> +15 minutes. To generate a more realistic load see dohell help.
> +
> +This script accepts the -k option to tell the unit test loop to keep
> +going upon a failing test. Otherwise evl test stops immediately.
> +
To be fixed wrt the comment on the previous patch.
> +Use -u if you want to skip the latency test and only run the unittests.
> +
> +Use --list to output all the tests available. --List will print all the tests
> +with their full path.
> +
> +Example:
> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
> +
> +Will generate load including network load using the server at IP address
> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
> +installed under the /ltp directory, and use the latency test by measuring the
> +timer irq latency.
We should use stress-ng or something alike, instead of the obsolete
dohell script.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 1/4] Copy dohell from Xenomai 3
2024-06-13 13:45 ` [libevl][PATCH 1/4] Copy dohell from Xenomai 3 Tobias Schaffner
@ 2024-06-13 14:23 ` Philippe Gerum
2024-06-13 15:32 ` Jan Kiszka
0 siblings, 1 reply; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 14:23 UTC (permalink / raw)
To: Tobias Schaffner; +Cc: xenomai, jan.kiszka
Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> Dohell is used as the default load generator in Xenomai 3. Add it to
> libevl to be able to stress the system while testing evl.
>
dohell is obsolete. Let's move to stress-ng or something alike for x4.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress
2024-06-13 13:45 ` [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress Tobias Schaffner
@ 2024-06-13 14:26 ` Philippe Gerum
0 siblings, 0 replies; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 14:26 UTC (permalink / raw)
To: Tobias Schaffner; +Cc: xenomai, jan.kiszka
Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> The -r option allows to add realtime-stress by running hectic in the
> background while running the tests.
>
> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
> ---
> utils/evl-test | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/utils/evl-test b/utils/evl-test
> index fb85f69..9a12d58 100644
> --- a/utils/evl-test
> +++ b/utils/evl-test
> @@ -12,6 +12,7 @@ full_path=false
> unittests_only=false
> load_cmd="dohell 900"
> load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
> +rt_load_pid=""
>
> usage() {
> cat >&2 <<EOF
> @@ -19,7 +20,7 @@ evl test -h
>
> This help text.
>
> -evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
> +evl test [ -l "load command" ] [ -k ] [ -r ] [ -u ] [ --list ] [ --List ]
>
> Run a basic test/benchmark of evl on your platform, by first starting a
> few unit tests, then running the latency test under the load generated by
> @@ -31,6 +32,10 @@ By default, the load command is "dohell 900", which will generate load during
> This script accepts the -k option to tell the unit test loop to keep
> going upon a failing test. Otherwise evl test stops immediately.
>
> +If the script is passed the -r option, real-time stress is added to the test,
> +with the help of the "hectic" test. But beware: the latency test figures are
> +then no longer meaningful.
> +
> Use -u if you want to skip the latency test and only run the unittests.
>
> Use --list to output all the tests available. --List will print all the tests
> @@ -67,6 +72,8 @@ while :; do
> shift;;
> -l) load_cmd="$2"
> shift 2;;
> + -r) rt_load=true;
> + shift;;
> -u) unittests_only=true
> shift;;
> --list) do_list=true
> @@ -113,6 +120,11 @@ if test ! -z "${load_cmd}"; then
> setsid /bin/sh -c "${load_cmd} & echo \$\$ > ${load_cmd_pgid_file}"
> fi
>
> +if test x$rt_load = xtrue; then
> + hectic > /dev/null 2>&1 &
hectic -s 200 is even more stressful.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 14:16 ` Philippe Gerum
@ 2024-06-13 15:30 ` Jan Kiszka
2024-06-13 16:09 ` Philippe Gerum
2024-11-01 17:00 ` Jorge Ramirez-Ortiz, Gmail
2024-06-13 17:27 ` Philippe Gerum
1 sibling, 2 replies; 31+ messages in thread
From: Jan Kiszka @ 2024-06-13 15:30 UTC (permalink / raw)
To: Philippe Gerum, Tobias Schaffner; +Cc: xenomai
On 13.06.24 16:16, Philippe Gerum wrote:
>
> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>
>> Stress evl with a load command while running the tests. The load command
>> may be set to an empty string to run tests without stressing the system.
>>
>> To align with xeno-test the -l command line argument was used for the load
>> command. Listing of the unittests can now be done with --list and --List.
>>
>
> Nak. Compat with xeno-test is definitely not a requirement if this means
> breaking the existing evl command line usage. Besides, --List looks
> strange as an option. Let's pick a different option for the load command
> instead.
>
>> The load command is moved to its own process group to allow a clean
>> teardown of the load process with all its subprocesses.
>>
>> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
>> ---
>> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
>> 1 file changed, 61 insertions(+), 10 deletions(-)
>>
>> diff --git a/utils/evl-test b/utils/evl-test
>> index 5c1c3da..fb85f69 100644
>> --- a/utils/evl-test
>> +++ b/utils/evl-test
>> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
>> exit 2
>> fi
>>
>> -usage() {
>> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
>> -}
>> -
>> keep_going=false
>> do_list=false
>> full_path=false
>> unittests_only=false
>> +load_cmd="dohell 900"
>> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
>> +
>> +usage() {
>> + cat >&2 <<EOF
>> +evl test -h
>> +
>> +This help text.
>> +
>> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
>> +
>> +Run a basic test/benchmark of evl on your platform, by first starting a
>> +few unit tests, then running the latency test under the load generated by
>> +"load-command".
>> +
>> +By default, the load command is "dohell 900", which will generate load during
>> +15 minutes. To generate a more realistic load see dohell help.
>> +
>> +This script accepts the -k option to tell the unit test loop to keep
>> +going upon a failing test. Otherwise evl test stops immediately.
>> +
>
> To be fixed wrt the comment on the previous patch.
>
>> +Use -u if you want to skip the latency test and only run the unittests.
>> +
>> +Use --list to output all the tests available. --List will print all the tests
>> +with their full path.
>> +
>> +Example:
>> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
>> +
>> +Will generate load including network load using the server at IP address
>> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
>> +installed under the /ltp directory, and use the latency test by measuring the
>> +timer irq latency.
>
> We should use stress-ng or something alike, instead of the obsolete
> dohell script.
Fact is that dohell does better than stress-ng, at least in the configs
of the latter that I've seen before.
Jan
--
Siemens AG, Technology
Linux Expert Center
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 1/4] Copy dohell from Xenomai 3
2024-06-13 14:23 ` Philippe Gerum
@ 2024-06-13 15:32 ` Jan Kiszka
2024-06-13 15:55 ` Philippe Gerum
0 siblings, 1 reply; 31+ messages in thread
From: Jan Kiszka @ 2024-06-13 15:32 UTC (permalink / raw)
To: Philippe Gerum, Tobias Schaffner; +Cc: xenomai
On 13.06.24 16:23, Philippe Gerum wrote:
>
> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>
>> Dohell is used as the default load generator in Xenomai 3. Add it to
>> libevl to be able to stress the system while testing evl.
>>
>
> dohell is obsolete. Let's move to stress-ng or something alike for x4.
>
See my comment on patch 3: If you can name a configuration of stress-ng
that stresses a co-kernel more than what dohell does, we can take it.
Otherwise, I would strongly recommend to not do less hell over here.
Jan
--
Siemens AG, Technology
Linux Expert Center
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 1/4] Copy dohell from Xenomai 3
2024-06-13 15:32 ` Jan Kiszka
@ 2024-06-13 15:55 ` Philippe Gerum
2025-09-02 9:51 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 1 reply; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 15:55 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Tobias Schaffner, xenomai
Jan Kiszka <jan.kiszka@siemens.com> writes:
> On 13.06.24 16:23, Philippe Gerum wrote:
>>
>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>
>>> Dohell is used as the default load generator in Xenomai 3. Add it to
>>> libevl to be able to stress the system while testing evl.
>>>
>>
>> dohell is obsolete. Let's move to stress-ng or something alike for x4.
>>
>
> See my comment on patch 3: If you can name a configuration of stress-ng
> that stresses a co-kernel more than what dohell does, we can take it.
> Otherwise, I would strongly recommend to not do less hell over here.
>
The most important stress dohell applies is basically hackbench and a dd
loop trashing the D-cache. The latter can be obtained with a combo of
VM+I/O tests from stress-ng. So basically, the whole issue boils down to
having hackbench on board, provided we cannot generate the same load
profile with stress-ng with a CPU bound stressor. Besides, I never saw
any added value in running ltp tests compared to a combo of stress-ng
stressors when it comes to latency testing.
We obviously don't want to throw less hell, but throwing more obsolete
stuff is not an option either. So that's a NAK for v4 ATM, I'll gather
more information about how we could leverage stress-ng in order to
compare to dohell. This is worth a shot.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 15:30 ` Jan Kiszka
@ 2024-06-13 16:09 ` Philippe Gerum
2024-11-01 17:00 ` Jorge Ramirez-Ortiz, Gmail
1 sibling, 0 replies; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 16:09 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Tobias Schaffner, xenomai
Jan Kiszka <jan.kiszka@siemens.com> writes:
> On 13.06.24 16:16, Philippe Gerum wrote:
>>
>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>
>>> Stress evl with a load command while running the tests. The load command
>>> may be set to an empty string to run tests without stressing the system.
>>>
>>> To align with xeno-test the -l command line argument was used for the load
>>> command. Listing of the unittests can now be done with --list and --List.
>>>
>>
>> Nak. Compat with xeno-test is definitely not a requirement if this means
>> breaking the existing evl command line usage. Besides, --List looks
>> strange as an option. Let's pick a different option for the load command
>> instead.
>>
>>> The load command is moved to its own process group to allow a clean
>>> teardown of the load process with all its subprocesses.
>>>
>>> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
>>> ---
>>> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
>>> 1 file changed, 61 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/utils/evl-test b/utils/evl-test
>>> index 5c1c3da..fb85f69 100644
>>> --- a/utils/evl-test
>>> +++ b/utils/evl-test
>>> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
>>> exit 2
>>> fi
>>>
>>> -usage() {
>>> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
>>> -}
>>> -
>>> keep_going=false
>>> do_list=false
>>> full_path=false
>>> unittests_only=false
>>> +load_cmd="dohell 900"
>>> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
>>> +
>>> +usage() {
>>> + cat >&2 <<EOF
>>> +evl test -h
>>> +
>>> +This help text.
>>> +
>>> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
>>> +
>>> +Run a basic test/benchmark of evl on your platform, by first starting a
>>> +few unit tests, then running the latency test under the load generated by
>>> +"load-command".
>>> +
>>> +By default, the load command is "dohell 900", which will generate load during
>>> +15 minutes. To generate a more realistic load see dohell help.
>>> +
>>> +This script accepts the -k option to tell the unit test loop to keep
>>> +going upon a failing test. Otherwise evl test stops immediately.
>>> +
>>
>> To be fixed wrt the comment on the previous patch.
>>
>>> +Use -u if you want to skip the latency test and only run the unittests.
>>> +
>>> +Use --list to output all the tests available. --List will print all the tests
>>> +with their full path.
>>> +
>>> +Example:
>>> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
>>> +
>>> +Will generate load including network load using the server at IP address
>>> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
>>> +installed under the /ltp directory, and use the latency test by measuring the
>>> +timer irq latency.
>>
>> We should use stress-ng or something alike, instead of the obsolete
>> dohell script.
>
> Fact is that dohell does better than stress-ng, at least in the configs
> of the latter that I've seen before.
>
See my comment on the dohell patch.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 14:16 ` Philippe Gerum
2024-06-13 15:30 ` Jan Kiszka
@ 2024-06-13 17:27 ` Philippe Gerum
2024-06-14 7:29 ` Jorge Ramirez-Ortiz, Gmail
1 sibling, 1 reply; 31+ messages in thread
From: Philippe Gerum @ 2024-06-13 17:27 UTC (permalink / raw)
To: Philippe Gerum; +Cc: Tobias Schaffner, xenomai, jan.kiszka, jorge.ramirez.ortiz
Philippe Gerum <rpm@xenomai.org> writes:
> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>
>> Stress evl with a load command while running the tests. The load command
>> may be set to an empty string to run tests without stressing the system.
>>
>> To align with xeno-test the -l command line argument was used for the load
>> command. Listing of the unittests can now be done with --list and --List.
>>
>
> Nak. Compat with xeno-test is definitely not a requirement if this means
> breaking the existing evl command line usage. Besides, --List looks
> strange as an option. Let's pick a different option for the load command
> instead.
>
We may want to implement the stress utility as a separate evl-stress
command, keeping evl-test for unit testing which has a different
purpose. evl-stress as a script could generate the load (dohell) and
possibly check the latency figures reported by latmus (using the -K and
-A switches to detect weird behavior).
PS: Jorge is going to look into leveraging stress-ng for load
generation.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 17:27 ` Philippe Gerum
@ 2024-06-14 7:29 ` Jorge Ramirez-Ortiz, Gmail
2024-07-10 7:18 ` Tobias Schaffner
0 siblings, 1 reply; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2024-06-14 7:29 UTC (permalink / raw)
To: Philippe Gerum; +Cc: Tobias Schaffner, xenomai, jan.kiszka, jorge.ramirez.ortiz
On 13/06/24 19:27:10, Philippe Gerum wrote:
>
> Philippe Gerum <rpm@xenomai.org> writes:
>
> > Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> >
> >> Stress evl with a load command while running the tests. The load command
> >> may be set to an empty string to run tests without stressing the system.
> >>
> >> To align with xeno-test the -l command line argument was used for the load
> >> command. Listing of the unittests can now be done with --list and --List.
> >>
> >
> > Nak. Compat with xeno-test is definitely not a requirement if this means
> > breaking the existing evl command line usage. Besides, --List looks
> > strange as an option. Let's pick a different option for the load command
> > instead.
> >
>
> We may want to implement the stress utility as a separate evl-stress
> command, keeping evl-test for unit testing which has a different
> purpose. evl-stress as a script could generate the load (dohell) and
> possibly check the latency figures reported by latmus (using the -K and
> -A switches to detect weird behavior).
>
> PS: Jorge is going to look into leveraging stress-ng for load
> generation.
yes I am going to start looking into it. I think that maintaining Linux
stressors should not be Xenomai's business. If we can't replicate the
load with todays stress-ng perhaps we could just usptream what is
needed (stress-ng is well maintained)
>
> --
> Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-14 7:29 ` Jorge Ramirez-Ortiz, Gmail
@ 2024-07-10 7:18 ` Tobias Schaffner
2024-10-24 20:00 ` Schaffner, Tobias
0 siblings, 1 reply; 31+ messages in thread
From: Tobias Schaffner @ 2024-07-10 7:18 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail, Philippe Gerum; +Cc: xenomai, jan.kiszka
Hey Jorge,
On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
> On 13/06/24 19:27:10, Philippe Gerum wrote:
>>
>> Philippe Gerum <rpm@xenomai.org> writes:
>>
>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>>
>>>> Stress evl with a load command while running the tests. The load command
>>>> may be set to an empty string to run tests without stressing the system.
>>>>
>>>> To align with xeno-test the -l command line argument was used for the load
>>>> command. Listing of the unittests can now be done with --list and --List.
>>>>
>>>
>>> Nak. Compat with xeno-test is definitely not a requirement if this means
>>> breaking the existing evl command line usage. Besides, --List looks
>>> strange as an option. Let's pick a different option for the load command
>>> instead.
>>>
>>
>> We may want to implement the stress utility as a separate evl-stress
>> command, keeping evl-test for unit testing which has a different
>> purpose. evl-stress as a script could generate the load (dohell) and
>> possibly check the latency figures reported by latmus (using the -K and
>> -A switches to detect weird behavior).
>>
>> PS: Jorge is going to look into leveraging stress-ng for load
>> generation.
>
> yes I am going to start looking into it. I think that maintaining Linux
> stressors should not be Xenomai's business. If we can't replicate the
> load with todays stress-ng perhaps we could just usptream what is
> needed (stress-ng is well maintained)
Do you already have an update on this? I would like to resolve this
story to be able to integrate standardized long term tests for EVL into
the CI.
>>
>> --
>> Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-07-10 7:18 ` Tobias Schaffner
@ 2024-10-24 20:00 ` Schaffner, Tobias
2024-10-27 19:13 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 1 reply; 31+ messages in thread
From: Schaffner, Tobias @ 2024-10-24 20:00 UTC (permalink / raw)
To: rpm@xenomai.org, jorge.ramirez.ortiz@gmail.com
Cc: Kiszka, Jan, xenomai@lists.linux.dev
Hi Philippe, hi Jorge,
On Wed, 2024-07-10 at 09:18 +0200, Tobias Schaffner wrote:
> Hey Jorge,
>
> On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
> > On 13/06/24 19:27:10, Philippe Gerum wrote:
> > >
> > > Philippe Gerum <rpm@xenomai.org> writes:
> > >
> > > > Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> > > >
> > > > > Stress evl with a load command while running the tests. The
> > > > > load command
> > > > > may be set to an empty string to run tests without stressing
> > > > > the system.
> > > > >
> > > > > To align with xeno-test the -l command line argument was used
> > > > > for the load
> > > > > command. Listing of the unittests can now be done with --list
> > > > > and --List.
> > > > >
> > > >
> > > > Nak. Compat with xeno-test is definitely not a requirement if
> > > > this means
> > > > breaking the existing evl command line usage. Besides, --List
> > > > looks
> > > > strange as an option. Let's pick a different option for the
> > > > load command
> > > > instead.
> > > >
> > >
> > > We may want to implement the stress utility as a separate evl-
> > > stress
> > > command, keeping evl-test for unit testing which has a different
> > > purpose. evl-stress as a script could generate the load (dohell)
> > > and
> > > possibly check the latency figures reported by latmus (using the
> > > -K and
> > > -A switches to detect weird behavior).
> > >
> > > PS: Jorge is going to look into leveraging stress-ng for load
> > > generation.
> >
> > yes I am going to start looking into it. I think that maintaining
> > Linux
> > stressors should not be Xenomai's business. If we can't replicate
> > the
> > load with todays stress-ng perhaps we could just usptream what is
> > needed (stress-ng is well maintained)
>
may I bring this up again? Any new developments or opinions on this?
I would like to see a solution that allows to compare xenomai 3 and
EVL. Reliable numbers are necessary to make an informed decision if EVL
is on par or even better than xenomai 3. Imo we are comparing apples
and oranges as long as we are not using the same tooling on both
platforms.
Best,
Tobias
> Do you already have an update on this? I would like to resolve this
> story to be able to integrate standardized long term tests for EVL
> into
> the CI.
>
> > >
> > > --
> > > Philippe.
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-10-24 20:00 ` Schaffner, Tobias
@ 2024-10-27 19:13 ` Jorge Ramirez-Ortiz, Gmail
2024-11-01 16:55 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 1 reply; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2024-10-27 19:13 UTC (permalink / raw)
To: Schaffner, Tobias
Cc: rpm@xenomai.org, jorge.ramirez.ortiz@gmail.com, Kiszka, Jan,
xenomai@lists.linux.dev
On 24/10/24 20:00:12, Schaffner, Tobias wrote:
> Hi Philippe, hi Jorge,
>
> On Wed, 2024-07-10 at 09:18 +0200, Tobias Schaffner wrote:
> > Hey Jorge,
> >
> > On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
> > > On 13/06/24 19:27:10, Philippe Gerum wrote:
> > > >
> > > > Philippe Gerum <rpm@xenomai.org> writes:
> > > >
> > > > > Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> > > > >
> > > > > > Stress evl with a load command while running the tests. The
> > > > > > load command
> > > > > > may be set to an empty string to run tests without stressing
> > > > > > the system.
> > > > > >
> > > > > > To align with xeno-test the -l command line argument was used
> > > > > > for the load
> > > > > > command. Listing of the unittests can now be done with --list
> > > > > > and --List.
> > > > > >
> > > > >
> > > > > Nak. Compat with xeno-test is definitely not a requirement if
> > > > > this means
> > > > > breaking the existing evl command line usage. Besides, --List
> > > > > looks
> > > > > strange as an option. Let's pick a different option for the
> > > > > load command
> > > > > instead.
> > > > >
> > > >
> > > > We may want to implement the stress utility as a separate evl-
> > > > stress
> > > > command, keeping evl-test for unit testing which has a different
> > > > purpose. evl-stress as a script could generate the load (dohell)
> > > > and
> > > > possibly check the latency figures reported by latmus (using the
> > > > -K and
> > > > -A switches to detect weird behavior).
> > > >
> > > > PS: Jorge is going to look into leveraging stress-ng for load
> > > > generation.
> > >
> > > yes I am going to start looking into it. I think that maintaining
> > > Linux
> > > stressors should not be Xenomai's business. If we can't replicate
> > > the
> > > load with todays stress-ng perhaps we could just usptream what is
> > > needed (stress-ng is well maintained)
> >
>
> may I bring this up again? Any new developments or opinions on this?
> I would like to see a solution that allows to compare xenomai 3 and
> EVL. Reliable numbers are necessary to make an informed decision if EVL
> is on par or even better than xenomai 3. Imo we are comparing apples
> and oranges as long as we are not using the same tooling on both
> platforms.
Sorry about this, it is being a bit of a crazy year for me at a personal
levely. I am start on it this week.
My setup uses some Zephyr code executing on frdmk64 I wrote years ago to
benchmark evl
https://github.com/ldts/libevl/commit/905d1946ca117e3889c53d1150a1334cc91033a8
I will load my evl system using stress-ng and measure latency figures
and then replicate with dohell loading tools. I should have something to
share by next friday.
feel free to ping me anytime. In IRC you can find me in LiberaChat
#u-boot (nick ldts) and since recently in OFTC #edk2
>
> Best,
> Tobias
>
> > Do you already have an update on this? I would like to resolve this
> > story to be able to integrate standardized long term tests for EVL
> > into
> > the CI.
> >
> > > >
> > > > --
> > > > Philippe.
> >
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-10-27 19:13 ` Jorge Ramirez-Ortiz, Gmail
@ 2024-11-01 16:55 ` Jorge Ramirez-Ortiz, Gmail
2024-11-01 17:15 ` Philippe Gerum
2025-09-03 5:29 ` Jan Kiszka
0 siblings, 2 replies; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2024-11-01 16:55 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail
Cc: Schaffner, Tobias, rpm@xenomai.org, Kiszka, Jan,
xenomai@lists.linux.dev
On 27/10/24 20:13:08, Jorge Ramirez-Ortiz, Gmail wrote:
> On 24/10/24 20:00:12, Schaffner, Tobias wrote:
> > Hi Philippe, hi Jorge,
> >
> > On Wed, 2024-07-10 at 09:18 +0200, Tobias Schaffner wrote:
> > > Hey Jorge,
> > >
> > > On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
> > > > On 13/06/24 19:27:10, Philippe Gerum wrote:
> > > > >
> > > > > Philippe Gerum <rpm@xenomai.org> writes:
> > > > >
> > > > > > Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> > > > > >
> > > > > > > Stress evl with a load command while running the tests. The
> > > > > > > load command
> > > > > > > may be set to an empty string to run tests without stressing
> > > > > > > the system.
> > > > > > >
> > > > > > > To align with xeno-test the -l command line argument was used
> > > > > > > for the load
> > > > > > > command. Listing of the unittests can now be done with --list
> > > > > > > and --List.
> > > > > > >
> > > > > >
> > > > > > Nak. Compat with xeno-test is definitely not a requirement if
> > > > > > this means
> > > > > > breaking the existing evl command line usage. Besides, --List
> > > > > > looks
> > > > > > strange as an option. Let's pick a different option for the
> > > > > > load command
> > > > > > instead.
> > > > > >
> > > > >
> > > > > We may want to implement the stress utility as a separate evl-
> > > > > stress
> > > > > command, keeping evl-test for unit testing which has a different
> > > > > purpose. evl-stress as a script could generate the load (dohell)
> > > > > and
> > > > > possibly check the latency figures reported by latmus (using the
> > > > > -K and
> > > > > -A switches to detect weird behavior).
> > > > >
> > > > > PS: Jorge is going to look into leveraging stress-ng for load
> > > > > generation.
> > > >
> > > > yes I am going to start looking into it. I think that maintaining
> > > > Linux
> > > > stressors should not be Xenomai's business. If we can't replicate
> > > > the
> > > > load with todays stress-ng perhaps we could just usptream what is
> > > > needed (stress-ng is well maintained)
> > >
> >
> > may I bring this up again? Any new developments or opinions on this?
> > I would like to see a solution that allows to compare xenomai 3 and
> > EVL. Reliable numbers are necessary to make an informed decision if EVL
> > is on par or even better than xenomai 3. Imo we are comparing apples
> > and oranges as long as we are not using the same tooling on both
> > platforms.
>
> Sorry about this, it is being a bit of a crazy year for me at a personal
> levely. I am start on it this week.
>
> My setup uses some Zephyr code executing on frdmk64 I wrote years ago to
> benchmark evl
>
> https://github.com/ldts/libevl/commit/905d1946ca117e3889c53d1150a1334cc91033a8
>
> I will load my evl system using stress-ng and measure latency figures
> and then replicate with dohell loading tools. I should have something to
> share by next friday.
>
> feel free to ping me anytime. In IRC you can find me in LiberaChat
> #u-boot (nick ldts) and since recently in OFTC #edk2
I was finally able to get some numbers on imx8mm (an Arduino Pro with
the Portenta breakout board recently contributed to my lab by Wim
Taymans for audio testing of the Xenomai4 Pipewire-plugin[0] for
realtime audio)
I am using dohell/rt-tools/ltp and stress-ng on EVL - havent tested
Xenomai3.
My test bench runs with the help of an external FRDMK64F running Zephyr
very similar to what is described in the latmus/latmon combo
documentation [1]. Given how cheap this board is perhaps it should be
more widely used (?).
[RFC]
I would like to update latmon[2] to the tip of Zephyr - it has fallen
behind - I'd like then to propose it upstream (if accepted I would like
to propose that it is removed from EVL). Anyone disagrees?
IMO We should also take latmus to its own separate tree dedicated to RT
benchmarking and extend it to support scheduling latency metrics based
on GPIO data.
[\]
So:
* stress-ng --vm 2 --vm-bytes 1G --mmap 2 --mmap-bytes 1G --page-in \
--matrix 0 --matrix-size 64 --tz -t 60
This simple command (VM and cpu load for a 2GB DDR system) hits the
system very quick and my externally measured GPIO IRQ latency peaks
within seconds.
stress-ng has FPU, VM, CPU all sort of stressors but I didnt need to go
into those just yet.
I found some info that RH [3] is providing interesting - still the
stress-ng code is simple enough to work with if needed (really good
encapsulation and code base)
* dohell -l /opt/ltp -b /bin/hackbench -m /home/root
After five minutes of run the latency is still contained (far from
peaking, 50% below the peak) but I assume this is because LTP takes a
while to run all tests. Without going into more details, this difference
in the invested time seems enough for me to switch to stress-ng.
Jorge
[0] https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/ffaa365beff0e7f1d1f395800c14b1be26d8d007
[1] https://evlproject.org/core/benchmarks/#latmus-gpio-response-time
[2] https://source.denx.de/Xenomai/xenomai4/libevl/-/tree/master/benchmarks/zephyr/latmon/
[3] https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_for_real_time/9/html/optimizing_rhel_9_for_real_time_for_low_latency_operation/assembly_stress-testing-real-time-systems-with-stress-ng_optimizing-rhel9-for-real-time-for-low-latency-operation#proc_testing-cpu-with-multiple-stress-mechanisms_assembly_stress-testing-real-time-systems-with-stress-ng
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-06-13 15:30 ` Jan Kiszka
2024-06-13 16:09 ` Philippe Gerum
@ 2024-11-01 17:00 ` Jorge Ramirez-Ortiz, Gmail
2024-11-18 7:48 ` Jan Kiszka
1 sibling, 1 reply; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2024-11-01 17:00 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Philippe Gerum, Tobias Schaffner, xenomai
On 13/06/24 17:30:51, Jan Kiszka wrote:
> On 13.06.24 16:16, Philippe Gerum wrote:
> >
> > Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> >
> >> Stress evl with a load command while running the tests. The load command
> >> may be set to an empty string to run tests without stressing the system.
> >>
> >> To align with xeno-test the -l command line argument was used for the load
> >> command. Listing of the unittests can now be done with --list and --List.
> >>
> >
> > Nak. Compat with xeno-test is definitely not a requirement if this means
> > breaking the existing evl command line usage. Besides, --List looks
> > strange as an option. Let's pick a different option for the load command
> > instead.
> >
> >> The load command is moved to its own process group to allow a clean
> >> teardown of the load process with all its subprocesses.
> >>
> >> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
> >> ---
> >> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
> >> 1 file changed, 61 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/utils/evl-test b/utils/evl-test
> >> index 5c1c3da..fb85f69 100644
> >> --- a/utils/evl-test
> >> +++ b/utils/evl-test
> >> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
> >> exit 2
> >> fi
> >>
> >> -usage() {
> >> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
> >> -}
> >> -
> >> keep_going=false
> >> do_list=false
> >> full_path=false
> >> unittests_only=false
> >> +load_cmd="dohell 900"
> >> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
> >> +
> >> +usage() {
> >> + cat >&2 <<EOF
> >> +evl test -h
> >> +
> >> +This help text.
> >> +
> >> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
> >> +
> >> +Run a basic test/benchmark of evl on your platform, by first starting a
> >> +few unit tests, then running the latency test under the load generated by
> >> +"load-command".
> >> +
> >> +By default, the load command is "dohell 900", which will generate load during
> >> +15 minutes. To generate a more realistic load see dohell help.
> >> +
> >> +This script accepts the -k option to tell the unit test loop to keep
> >> +going upon a failing test. Otherwise evl test stops immediately.
> >> +
> >
> > To be fixed wrt the comment on the previous patch.
> >
> >> +Use -u if you want to skip the latency test and only run the unittests.
> >> +
> >> +Use --list to output all the tests available. --List will print all the tests
> >> +with their full path.
> >> +
> >> +Example:
> >> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
> >> +
> >> +Will generate load including network load using the server at IP address
> >> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
> >> +installed under the /ltp directory, and use the latency test by measuring the
> >> +timer irq latency.
> >
> > We should use stress-ng or something alike, instead of the obsolete
> > dohell script.
>
> Fact is that dohell does better than stress-ng, at least in the configs
> of the latter that I've seen before.
just "dohell -s 192.168.0.5 -m /mnt -l /ltp" ? do you know after how
long (ie, did it take a few hours or just minutes?)
>
> Jan
>
> --
> Siemens AG, Technology
> Linux Expert Center
>
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-01 16:55 ` Jorge Ramirez-Ortiz, Gmail
@ 2024-11-01 17:15 ` Philippe Gerum
2024-11-01 18:13 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 5:29 ` Jan Kiszka
1 sibling, 1 reply; 31+ messages in thread
From: Philippe Gerum @ 2024-11-01 17:15 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail
Cc: Schaffner, Tobias, Kiszka, Jan, xenomai@lists.linux.dev
"Jorge Ramirez-Ortiz, Gmail" <jorge.ramirez.ortiz@gmail.com> writes:
>
> [RFC]
> I would like to update latmon[2] to the tip of Zephyr - it has fallen
> behind - I'd like then to propose it upstream (if accepted I would like
> to propose that it is removed from EVL). Anyone disagrees?
>
Fine by me.
> IMO We should also take latmus to its own separate tree dedicated to RT
> benchmarking and extend it to support scheduling latency metrics based
> on GPIO data.
> [\]
>
We would need to make it evl-agnostic then, assuming you want the latmus
<-> latmon (Zephyr) combo to be broadly available off-the-shelf to
others.
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-01 17:15 ` Philippe Gerum
@ 2024-11-01 18:13 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 0 replies; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2024-11-01 18:13 UTC (permalink / raw)
To: Philippe Gerum
Cc: Jorge Ramirez-Ortiz, Gmail, Schaffner, Tobias, Kiszka, Jan,
xenomai@lists.linux.dev
On 01/11/24 18:15:25, Philippe Gerum wrote:
> "Jorge Ramirez-Ortiz, Gmail" <jorge.ramirez.ortiz@gmail.com> writes:
>
> >
> > [RFC]
> > I would like to update latmon[2] to the tip of Zephyr - it has fallen
> > behind - I'd like then to propose it upstream (if accepted I would like
> > to propose that it is removed from EVL). Anyone disagrees?
> >
>
> Fine by me.
>
> > IMO We should also take latmus to its own separate tree dedicated to RT
> > benchmarking and extend it to support scheduling latency metrics based
> > on GPIO data.
> > [\]
> >
>
> We would need to make it evl-agnostic then, assuming you want the latmus
> <-> latmon (Zephyr) combo to be broadly available off-the-shelf to
> others.
yes I think that would make sense. Xenomai3/EVL/PREEMPT_RT or any other linux-rt
could be easily compared with an off the shelf el-cheapo benchmarking tool.
>
> --
> Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-01 17:00 ` Jorge Ramirez-Ortiz, Gmail
@ 2024-11-18 7:48 ` Jan Kiszka
2024-11-18 8:26 ` Philippe Gerum
0 siblings, 1 reply; 31+ messages in thread
From: Jan Kiszka @ 2024-11-18 7:48 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail; +Cc: Philippe Gerum, Tobias Schaffner, xenomai
[sorry, missed your reply]
On 01.11.24 18:00, Jorge Ramirez-Ortiz, Gmail wrote:
> On 13/06/24 17:30:51, Jan Kiszka wrote:
>> On 13.06.24 16:16, Philippe Gerum wrote:
>>>
>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>>
>>>> Stress evl with a load command while running the tests. The load command
>>>> may be set to an empty string to run tests without stressing the system.
>>>>
>>>> To align with xeno-test the -l command line argument was used for the load
>>>> command. Listing of the unittests can now be done with --list and --List.
>>>>
>>>
>>> Nak. Compat with xeno-test is definitely not a requirement if this means
>>> breaking the existing evl command line usage. Besides, --List looks
>>> strange as an option. Let's pick a different option for the load command
>>> instead.
>>>
>>>> The load command is moved to its own process group to allow a clean
>>>> teardown of the load process with all its subprocesses.
>>>>
>>>> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
>>>> ---
>>>> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
>>>> 1 file changed, 61 insertions(+), 10 deletions(-)
>>>>
>>>> diff --git a/utils/evl-test b/utils/evl-test
>>>> index 5c1c3da..fb85f69 100644
>>>> --- a/utils/evl-test
>>>> +++ b/utils/evl-test
>>>> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
>>>> exit 2
>>>> fi
>>>>
>>>> -usage() {
>>>> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
>>>> -}
>>>> -
>>>> keep_going=false
>>>> do_list=false
>>>> full_path=false
>>>> unittests_only=false
>>>> +load_cmd="dohell 900"
>>>> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
>>>> +
>>>> +usage() {
>>>> + cat >&2 <<EOF
>>>> +evl test -h
>>>> +
>>>> +This help text.
>>>> +
>>>> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
>>>> +
>>>> +Run a basic test/benchmark of evl on your platform, by first starting a
>>>> +few unit tests, then running the latency test under the load generated by
>>>> +"load-command".
>>>> +
>>>> +By default, the load command is "dohell 900", which will generate load during
>>>> +15 minutes. To generate a more realistic load see dohell help.
>>>> +
>>>> +This script accepts the -k option to tell the unit test loop to keep
>>>> +going upon a failing test. Otherwise evl test stops immediately.
>>>> +
>>>
>>> To be fixed wrt the comment on the previous patch.
>>>
>>>> +Use -u if you want to skip the latency test and only run the unittests.
>>>> +
>>>> +Use --list to output all the tests available. --List will print all the tests
>>>> +with their full path.
>>>> +
>>>> +Example:
>>>> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
>>>> +
>>>> +Will generate load including network load using the server at IP address
>>>> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
>>>> +installed under the /ltp directory, and use the latency test by measuring the
>>>> +timer irq latency.
>>>
>>> We should use stress-ng or something alike, instead of the obsolete
>>> dohell script.
>>
>> Fact is that dohell does better than stress-ng, at least in the configs
>> of the latter that I've seen before.
>
> just "dohell -s 192.168.0.5 -m /mnt -l /ltp" ? do you know after how
> long (ie, did it take a few hours or just minutes?)
>
Yes, I ran what Xenomai 3 also runs, for better comparison. That was for
some hours (don't recall exactly anymore). Not just 10 min but also not
for a day or longer.
My theory on this: With RT Preempt, it's more effective to stress the
common code (and locking) paths like stress-ng is triggering. For the
more decoupled co-kernel architecture with way less common locking, and
that rather short and not nested, cache load is more effective.
Jan
--
Siemens AG, Technology
Linux Expert Center
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-18 7:48 ` Jan Kiszka
@ 2024-11-18 8:26 ` Philippe Gerum
2025-09-01 18:46 ` Tobias Schaffner
0 siblings, 1 reply; 31+ messages in thread
From: Philippe Gerum @ 2024-11-18 8:26 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Jorge Ramirez-Ortiz, Gmail, Tobias Schaffner, xenomai
Jan Kiszka <jan.kiszka@siemens.com> writes:
> [sorry, missed your reply]
>
> On 01.11.24 18:00, Jorge Ramirez-Ortiz, Gmail wrote:
>> On 13/06/24 17:30:51, Jan Kiszka wrote:
>>> On 13.06.24 16:16, Philippe Gerum wrote:
>>>>
>>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>>>
>>>>> Stress evl with a load command while running the tests. The load command
>>>>> may be set to an empty string to run tests without stressing the system.
>>>>>
>>>>> To align with xeno-test the -l command line argument was used for the load
>>>>> command. Listing of the unittests can now be done with --list and --List.
>>>>>
>>>>
>>>> Nak. Compat with xeno-test is definitely not a requirement if this means
>>>> breaking the existing evl command line usage. Besides, --List looks
>>>> strange as an option. Let's pick a different option for the load command
>>>> instead.
>>>>
>>>>> The load command is moved to its own process group to allow a clean
>>>>> teardown of the load process with all its subprocesses.
>>>>>
>>>>> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
>>>>> ---
>>>>> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
>>>>> 1 file changed, 61 insertions(+), 10 deletions(-)
>>>>>
>>>>> diff --git a/utils/evl-test b/utils/evl-test
>>>>> index 5c1c3da..fb85f69 100644
>>>>> --- a/utils/evl-test
>>>>> +++ b/utils/evl-test
>>>>> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
>>>>> exit 2
>>>>> fi
>>>>>
>>>>> -usage() {
>>>>> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
>>>>> -}
>>>>> -
>>>>> keep_going=false
>>>>> do_list=false
>>>>> full_path=false
>>>>> unittests_only=false
>>>>> +load_cmd="dohell 900"
>>>>> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
>>>>> +
>>>>> +usage() {
>>>>> + cat >&2 <<EOF
>>>>> +evl test -h
>>>>> +
>>>>> +This help text.
>>>>> +
>>>>> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
>>>>> +
>>>>> +Run a basic test/benchmark of evl on your platform, by first starting a
>>>>> +few unit tests, then running the latency test under the load generated by
>>>>> +"load-command".
>>>>> +
>>>>> +By default, the load command is "dohell 900", which will generate load during
>>>>> +15 minutes. To generate a more realistic load see dohell help.
>>>>> +
>>>>> +This script accepts the -k option to tell the unit test loop to keep
>>>>> +going upon a failing test. Otherwise evl test stops immediately.
>>>>> +
>>>>
>>>> To be fixed wrt the comment on the previous patch.
>>>>
>>>>> +Use -u if you want to skip the latency test and only run the unittests.
>>>>> +
>>>>> +Use --list to output all the tests available. --List will print all the tests
>>>>> +with their full path.
>>>>> +
>>>>> +Example:
>>>>> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
>>>>> +
>>>>> +Will generate load including network load using the server at IP address
>>>>> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
>>>>> +installed under the /ltp directory, and use the latency test by measuring the
>>>>> +timer irq latency.
>>>>
>>>> We should use stress-ng or something alike, instead of the obsolete
>>>> dohell script.
>>>
>>> Fact is that dohell does better than stress-ng, at least in the configs
>>> of the latter that I've seen before.
>>
>> just "dohell -s 192.168.0.5 -m /mnt -l /ltp" ? do you know after how
>> long (ie, did it take a few hours or just minutes?)
>>
>
> Yes, I ran what Xenomai 3 also runs, for better comparison. That was for
> some hours (don't recall exactly anymore). Not just 10 min but also not
> for a day or longer.
>
> My theory on this: With RT Preempt, it's more effective to stress the
> common code (and locking) paths like stress-ng is triggering. For the
> more decoupled co-kernel architecture with way less common locking, and
> that rather short and not nested, cache load is more effective.
>
Same conclusion here, this is where the vm stressors may come into
play. They tend to pound the hardware pretty aggressively, in addition
with stressors causing a high rate of context switches (L1 flush +
mandatory hard irqs off section on mmswitch). If we could generate such
load by using the proper stress-ng stressors, we would only depend on a
broadly available tool suite which implements state-of-the-art testing
techniques (Gilles wrote xeno-test 14y ago based on my testing habits
since 2006 or so, which clearly does not qualify anymore).
--
Philippe.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-18 8:26 ` Philippe Gerum
@ 2025-09-01 18:46 ` Tobias Schaffner
0 siblings, 0 replies; 31+ messages in thread
From: Tobias Schaffner @ 2025-09-01 18:46 UTC (permalink / raw)
To: Philippe Gerum, Jan Kiszka, Jorge Ramirez-Ortiz, Gmail; +Cc: xenomai
Hi Jorge, hi Philippe,
On 18.11.24 09:26, Philippe Gerum wrote:
> Jan Kiszka <jan.kiszka@siemens.com> writes:
>
>> [sorry, missed your reply]
>>
>> On 01.11.24 18:00, Jorge Ramirez-Ortiz, Gmail wrote:
>>> On 13/06/24 17:30:51, Jan Kiszka wrote:
>>>> On 13.06.24 16:16, Philippe Gerum wrote:
>>>>>
>>>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>>>>
>>>>>> Stress evl with a load command while running the tests. The load command
>>>>>> may be set to an empty string to run tests without stressing the system.
>>>>>>
>>>>>> To align with xeno-test the -l command line argument was used for the load
>>>>>> command. Listing of the unittests can now be done with --list and --List.
>>>>>>
>>>>>
>>>>> Nak. Compat with xeno-test is definitely not a requirement if this means
>>>>> breaking the existing evl command line usage. Besides, --List looks
>>>>> strange as an option. Let's pick a different option for the load command
>>>>> instead.
>>>>>
>>>>>> The load command is moved to its own process group to allow a clean
>>>>>> teardown of the load process with all its subprocesses.
>>>>>>
>>>>>> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
>>>>>> ---
>>>>>> utils/evl-test | 71 +++++++++++++++++++++++++++++++++++++++++++-------
>>>>>> 1 file changed, 61 insertions(+), 10 deletions(-)
>>>>>>
>>>>>> diff --git a/utils/evl-test b/utils/evl-test
>>>>>> index 5c1c3da..fb85f69 100644
>>>>>> --- a/utils/evl-test
>>>>>> +++ b/utils/evl-test
>>>>>> @@ -6,33 +6,79 @@ if test \! -d $EVL_TESTDIR; then
>>>>>> exit 2
>>>>>> fi
>>>>>>
>>>>>> -usage() {
>>>>>> - echo >&2 "usage: $(basename $1) [-l][-L][-k][-h][-u] [test-list]"
>>>>>> -}
>>>>>> -
>>>>>> keep_going=false
>>>>>> do_list=false
>>>>>> full_path=false
>>>>>> unittests_only=false
>>>>>> +load_cmd="dohell 900"
>>>>>> +load_cmd_pgid_file="/tmp/evl_test_load_cmd_$$"
>>>>>> +
>>>>>> +usage() {
>>>>>> + cat >&2 <<EOF
>>>>>> +evl test -h
>>>>>> +
>>>>>> +This help text.
>>>>>> +
>>>>>> +evl test [ -l "load command" ] [ -k ] [ -u ] [ --list ] [ --List ]
>>>>>> +
>>>>>> +Run a basic test/benchmark of evl on your platform, by first starting a
>>>>>> +few unit tests, then running the latency test under the load generated by
>>>>>> +"load-command".
>>>>>> +
>>>>>> +By default, the load command is "dohell 900", which will generate load during
>>>>>> +15 minutes. To generate a more realistic load see dohell help.
>>>>>> +
>>>>>> +This script accepts the -k option to tell the unit test loop to keep
>>>>>> +going upon a failing test. Otherwise evl test stops immediately.
>>>>>> +
>>>>>
>>>>> To be fixed wrt the comment on the previous patch.
>>>>>
>>>>>> +Use -u if you want to skip the latency test and only run the unittests.
>>>>>> +
>>>>>> +Use --list to output all the tests available. --List will print all the tests
>>>>>> +with their full path.
>>>>>> +
>>>>>> +Example:
>>>>>> +evl test -l "dohell -s 192.168.0.5 -m /mnt -l /ltp"
>>>>>> +
>>>>>> +Will generate load including network load using the server at IP address
>>>>>> +192.168.0.5, some I/O under the moint point /mnt, and the LTP testsuite
>>>>>> +installed under the /ltp directory, and use the latency test by measuring the
>>>>>> +timer irq latency.
>>>>>
>>>>> We should use stress-ng or something alike, instead of the obsolete
>>>>> dohell script.
>>>>
>>>> Fact is that dohell does better than stress-ng, at least in the configs
>>>> of the latter that I've seen before.
>>>
>>> just "dohell -s 192.168.0.5 -m /mnt -l /ltp" ? do you know after how
>>> long (ie, did it take a few hours or just minutes?)
>>>
>>
>> Yes, I ran what Xenomai 3 also runs, for better comparison. That was for
>> some hours (don't recall exactly anymore). Not just 10 min but also not
>> for a day or longer.
>>
>> My theory on this: With RT Preempt, it's more effective to stress the
>> common code (and locking) paths like stress-ng is triggering. For the
>> more decoupled co-kernel architecture with way less common locking, and
>> that rather short and not nested, cache load is more effective.
>>
>
> Same conclusion here, this is where the vm stressors may come into
> play. They tend to pound the hardware pretty aggressively, in addition
> with stressors causing a high rate of context switches (L1 flush +
> mandatory hard irqs off section on mmswitch). If we could generate such
> load by using the proper stress-ng stressors, we would only depend on a
> broadly available tool suite which implements state-of-the-art testing
> techniques (Gilles wrote xeno-test 14y ago based on my testing habits
> since 2006 or so, which clearly does not qualify anymore).
I’d like to bring this up again.
Thanks, Jorge, for sharing your first results in the other subthread.
From my understanding, it’s still unclear whether the stress-ng vm
stressors load the system as heavily as dohell does. Have you been able
to confirm this in the meantime? Do you plan to continue this work, or
are you expecting someone else to pick it up?
Best,
Tobias
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 1/4] Copy dohell from Xenomai 3
2024-06-13 15:55 ` Philippe Gerum
@ 2025-09-02 9:51 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 0 replies; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2025-09-02 9:51 UTC (permalink / raw)
To: Philippe Gerum; +Cc: Jan Kiszka, Tobias Schaffner, xenomai
On 13/06/24 17:55:02, Philippe Gerum wrote:
>
> Jan Kiszka <jan.kiszka@siemens.com> writes:
>
> > On 13.06.24 16:23, Philippe Gerum wrote:
> >>
> >> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> >>
> >>> Dohell is used as the default load generator in Xenomai 3. Add it to
> >>> libevl to be able to stress the system while testing evl.
> >>>
> >>
> >> dohell is obsolete. Let's move to stress-ng or something alike for x4.
> >>
> >
> > See my comment on patch 3: If you can name a configuration of stress-ng
> > that stresses a co-kernel more than what dohell does, we can take it.
> > Otherwise, I would strongly recommend to not do less hell over here.
> >
>
> The most important stress dohell applies is basically hackbench and a dd
> loop trashing the D-cache. The latter can be obtained with a combo of
> VM+I/O tests from stress-ng. So basically, the whole issue boils down to
> having hackbench on board, provided we cannot generate the same load
> profile with stress-ng with a CPU bound stressor. Besides, I never saw
> any added value in running ltp tests compared to a combo of stress-ng
> stressors when it comes to latency testing.
>
> We obviously don't want to throw less hell, but throwing more obsolete
> stuff is not an option either. So that's a NAK for v4 ATM, I'll gather
> more information about how we could leverage stress-ng in order to
> compare to dohell. This is worth a shot.
I should start by apologizing for not having delivered a proper,
stress-ng case study yet. In my defense (if that counts), I got
sidetracked by day-to-day work and the long process of getting latmon gpio
support merged into Zephyr[1] — which ended up taking > six months of
back-and-forth.
BTW If you have access to one of these devices [2] (they’re inexpensive),
plus a couple of GPIOs on your Xenomai-enabled board and a network
interface, they make it quite practical to collect long-term traces in
an automated way.
So comming back to the discussion, I still believe that the better path
is to validate and if necessary extend stress-ng. Just as monitoring
tools like latmon dont belong in the Xenomai repository (the Zephyr work
above mentioned is a step on that direction), I think stress tools
should be kept out as well.
IMO this separation of concerns will also help those trying to decide
between PREEMPT_RT and Xenomai for their use cases.
[1] https://docs.zephyrproject.org/latest/samples/net/latmon/README.html
[2] https://docs.zephyrproject.org/latest/boards/nxp/frdm_k64f/doc/index.html
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2024-11-01 16:55 ` Jorge Ramirez-Ortiz, Gmail
2024-11-01 17:15 ` Philippe Gerum
@ 2025-09-03 5:29 ` Jan Kiszka
2025-09-03 8:12 ` Jorge Ramirez-Ortiz, Gmail
1 sibling, 1 reply; 31+ messages in thread
From: Jan Kiszka @ 2025-09-03 5:29 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail
Cc: Schaffner, Tobias, rpm@xenomai.org, xenomai@lists.linux.dev
On 01.11.24 17:55, Jorge Ramirez-Ortiz, Gmail wrote:
> On 27/10/24 20:13:08, Jorge Ramirez-Ortiz, Gmail wrote:
>> On 24/10/24 20:00:12, Schaffner, Tobias wrote:
>>> Hi Philippe, hi Jorge,
>>>
>>> On Wed, 2024-07-10 at 09:18 +0200, Tobias Schaffner wrote:
>>>> Hey Jorge,
>>>>
>>>> On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
>>>>> On 13/06/24 19:27:10, Philippe Gerum wrote:
>>>>>>
>>>>>> Philippe Gerum <rpm@xenomai.org> writes:
>>>>>>
>>>>>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
>>>>>>>
>>>>>>>> Stress evl with a load command while running the tests. The
>>>>>>>> load command
>>>>>>>> may be set to an empty string to run tests without stressing
>>>>>>>> the system.
>>>>>>>>
>>>>>>>> To align with xeno-test the -l command line argument was used
>>>>>>>> for the load
>>>>>>>> command. Listing of the unittests can now be done with --list
>>>>>>>> and --List.
>>>>>>>>
>>>>>>>
>>>>>>> Nak. Compat with xeno-test is definitely not a requirement if
>>>>>>> this means
>>>>>>> breaking the existing evl command line usage. Besides, --List
>>>>>>> looks
>>>>>>> strange as an option. Let's pick a different option for the
>>>>>>> load command
>>>>>>> instead.
>>>>>>>
>>>>>>
>>>>>> We may want to implement the stress utility as a separate evl-
>>>>>> stress
>>>>>> command, keeping evl-test for unit testing which has a different
>>>>>> purpose. evl-stress as a script could generate the load (dohell)
>>>>>> and
>>>>>> possibly check the latency figures reported by latmus (using the
>>>>>> -K and
>>>>>> -A switches to detect weird behavior).
>>>>>>
>>>>>> PS: Jorge is going to look into leveraging stress-ng for load
>>>>>> generation.
>>>>>
>>>>> yes I am going to start looking into it. I think that maintaining
>>>>> Linux
>>>>> stressors should not be Xenomai's business. If we can't replicate
>>>>> the
>>>>> load with todays stress-ng perhaps we could just usptream what is
>>>>> needed (stress-ng is well maintained)
>>>>
>>>
>>> may I bring this up again? Any new developments or opinions on this?
>>> I would like to see a solution that allows to compare xenomai 3 and
>>> EVL. Reliable numbers are necessary to make an informed decision if EVL
>>> is on par or even better than xenomai 3. Imo we are comparing apples
>>> and oranges as long as we are not using the same tooling on both
>>> platforms.
>>
>> Sorry about this, it is being a bit of a crazy year for me at a personal
>> levely. I am start on it this week.
>>
>> My setup uses some Zephyr code executing on frdmk64 I wrote years ago to
>> benchmark evl
>>
>> https://github.com/ldts/libevl/commit/905d1946ca117e3889c53d1150a1334cc91033a8
>>
>> I will load my evl system using stress-ng and measure latency figures
>> and then replicate with dohell loading tools. I should have something to
>> share by next friday.
>>
>> feel free to ping me anytime. In IRC you can find me in LiberaChat
>> #u-boot (nick ldts) and since recently in OFTC #edk2
>
> I was finally able to get some numbers on imx8mm (an Arduino Pro with
> the Portenta breakout board recently contributed to my lab by Wim
> Taymans for audio testing of the Xenomai4 Pipewire-plugin[0] for
> realtime audio)
>
> I am using dohell/rt-tools/ltp and stress-ng on EVL - havent tested
> Xenomai3.
>
> My test bench runs with the help of an external FRDMK64F running Zephyr
> very similar to what is described in the latmus/latmon combo
> documentation [1]. Given how cheap this board is perhaps it should be
> more widely used (?).
>
> [RFC]
> I would like to update latmon[2] to the tip of Zephyr - it has fallen
> behind - I'd like then to propose it upstream (if accepted I would like
> to propose that it is removed from EVL). Anyone disagrees?
>
> IMO We should also take latmus to its own separate tree dedicated to RT
> benchmarking and extend it to support scheduling latency metrics based
> on GPIO data.
> [\]
>
> So:
>
> * stress-ng --vm 2 --vm-bytes 1G --mmap 2 --mmap-bytes 1G --page-in \
> --matrix 0 --matrix-size 64 --tz -t 60
>
> This simple command (VM and cpu load for a 2GB DDR system) hits the
> system very quick and my externally measured GPIO IRQ latency peaks
> within seconds.
>
> stress-ng has FPU, VM, CPU all sort of stressors but I didnt need to go
> into those just yet.
>
> I found some info that RH [3] is providing interesting - still the
> stress-ng code is simple enough to work with if needed (really good
> encapsulation and code base)
>
> * dohell -l /opt/ltp -b /bin/hackbench -m /home/root
>
> After five minutes of run the latency is still contained (far from
> peaking, 50% below the peak) but I assume this is because LTP takes a
> while to run all tests. Without going into more details, this difference
> in the invested time seems enough for me to switch to stress-ng.
>
I think we should split these activities into two streams:
- short-term: setup of a well-defined but not necessarily 100%
finalized test environment for EVL so that we can run that
automatically in CI
- long-term: evaluation of background load profiles and tests to
trigger maximal latencies, with EVL, Xenomai 3 and may even
PREEMPT_RT
With the first item solved, the second could even be automated and may
not need some poor intern to press buttons and record numbers on a piece
of paper ;).
Jan
--
Siemens AG, Foundational Technologies
Linux Expert Center
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2025-09-03 5:29 ` Jan Kiszka
@ 2025-09-03 8:12 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 8:20 ` Florian Bezdeka
0 siblings, 1 reply; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2025-09-03 8:12 UTC (permalink / raw)
To: Jan Kiszka
Cc: Jorge Ramirez-Ortiz, Gmail, Schaffner, Tobias, rpm@xenomai.org,
xenomai@lists.linux.dev
On 03/09/25 07:29:07, Jan Kiszka wrote:
> On 01.11.24 17:55, Jorge Ramirez-Ortiz, Gmail wrote:
> > On 27/10/24 20:13:08, Jorge Ramirez-Ortiz, Gmail wrote:
> >> On 24/10/24 20:00:12, Schaffner, Tobias wrote:
> >>> Hi Philippe, hi Jorge,
> >>>
> >>> On Wed, 2024-07-10 at 09:18 +0200, Tobias Schaffner wrote:
> >>>> Hey Jorge,
> >>>>
> >>>> On 14.06.24 09:29, Jorge Ramirez-Ortiz, Gmail wrote:
> >>>>> On 13/06/24 19:27:10, Philippe Gerum wrote:
> >>>>>>
> >>>>>> Philippe Gerum <rpm@xenomai.org> writes:
> >>>>>>
> >>>>>>> Tobias Schaffner <tobias.schaffner@siemens.com> writes:
> >>>>>>>
> >>>>>>>> Stress evl with a load command while running the tests. The
> >>>>>>>> load command
> >>>>>>>> may be set to an empty string to run tests without stressing
> >>>>>>>> the system.
> >>>>>>>>
> >>>>>>>> To align with xeno-test the -l command line argument was used
> >>>>>>>> for the load
> >>>>>>>> command. Listing of the unittests can now be done with --list
> >>>>>>>> and --List.
> >>>>>>>>
> >>>>>>>
> >>>>>>> Nak. Compat with xeno-test is definitely not a requirement if
> >>>>>>> this means
> >>>>>>> breaking the existing evl command line usage. Besides, --List
> >>>>>>> looks
> >>>>>>> strange as an option. Let's pick a different option for the
> >>>>>>> load command
> >>>>>>> instead.
> >>>>>>>
> >>>>>>
> >>>>>> We may want to implement the stress utility as a separate evl-
> >>>>>> stress
> >>>>>> command, keeping evl-test for unit testing which has a different
> >>>>>> purpose. evl-stress as a script could generate the load (dohell)
> >>>>>> and
> >>>>>> possibly check the latency figures reported by latmus (using the
> >>>>>> -K and
> >>>>>> -A switches to detect weird behavior).
> >>>>>>
> >>>>>> PS: Jorge is going to look into leveraging stress-ng for load
> >>>>>> generation.
> >>>>>
> >>>>> yes I am going to start looking into it. I think that maintaining
> >>>>> Linux
> >>>>> stressors should not be Xenomai's business. If we can't replicate
> >>>>> the
> >>>>> load with todays stress-ng perhaps we could just usptream what is
> >>>>> needed (stress-ng is well maintained)
> >>>>
> >>>
> >>> may I bring this up again? Any new developments or opinions on this?
> >>> I would like to see a solution that allows to compare xenomai 3 and
> >>> EVL. Reliable numbers are necessary to make an informed decision if EVL
> >>> is on par or even better than xenomai 3. Imo we are comparing apples
> >>> and oranges as long as we are not using the same tooling on both
> >>> platforms.
> >>
> >> Sorry about this, it is being a bit of a crazy year for me at a personal
> >> levely. I am start on it this week.
> >>
> >> My setup uses some Zephyr code executing on frdmk64 I wrote years ago to
> >> benchmark evl
> >>
> >> https://github.com/ldts/libevl/commit/905d1946ca117e3889c53d1150a1334cc91033a8
> >>
> >> I will load my evl system using stress-ng and measure latency figures
> >> and then replicate with dohell loading tools. I should have something to
> >> share by next friday.
> >>
> >> feel free to ping me anytime. In IRC you can find me in LiberaChat
> >> #u-boot (nick ldts) and since recently in OFTC #edk2
> >
> > I was finally able to get some numbers on imx8mm (an Arduino Pro with
> > the Portenta breakout board recently contributed to my lab by Wim
> > Taymans for audio testing of the Xenomai4 Pipewire-plugin[0] for
> > realtime audio)
> >
> > I am using dohell/rt-tools/ltp and stress-ng on EVL - havent tested
> > Xenomai3.
> >
> > My test bench runs with the help of an external FRDMK64F running Zephyr
> > very similar to what is described in the latmus/latmon combo
> > documentation [1]. Given how cheap this board is perhaps it should be
> > more widely used (?).
> >
> > [RFC]
> > I would like to update latmon[2] to the tip of Zephyr - it has fallen
> > behind - I'd like then to propose it upstream (if accepted I would like
> > to propose that it is removed from EVL). Anyone disagrees?
> >
> > IMO We should also take latmus to its own separate tree dedicated to RT
> > benchmarking and extend it to support scheduling latency metrics based
> > on GPIO data.
> > [\]
> >
> > So:
> >
> > * stress-ng --vm 2 --vm-bytes 1G --mmap 2 --mmap-bytes 1G --page-in \
> > --matrix 0 --matrix-size 64 --tz -t 60
> >
> > This simple command (VM and cpu load for a 2GB DDR system) hits the
> > system very quick and my externally measured GPIO IRQ latency peaks
> > within seconds.
> >
> > stress-ng has FPU, VM, CPU all sort of stressors but I didnt need to go
> > into those just yet.
> >
> > I found some info that RH [3] is providing interesting - still the
> > stress-ng code is simple enough to work with if needed (really good
> > encapsulation and code base)
> >
> > * dohell -l /opt/ltp -b /bin/hackbench -m /home/root
> >
> > After five minutes of run the latency is still contained (far from
> > peaking, 50% below the peak) but I assume this is because LTP takes a
> > while to run all tests. Without going into more details, this difference
> > in the invested time seems enough for me to switch to stress-ng.
> >
>
> I think we should split these activities into two streams:
> - short-term: setup of a well-defined but not necessarily 100%
> finalized test environment for EVL so that we can run that
> automatically in CI
100%. Do you think it would be at all possible to setup a simple LAVA
lab with some reference hardware - unless Xenomai has one already?
I am not sure how it would be funded - do you know ? - but it could then
also be connected to KernelCI so that Xenomai enabled systems avoid
regressions.
https://docs.kernelci.org/intro/platform-testing/
Is this something at all possible you think?
> - long-term: evaluation of background load profiles and tests to
> trigger maximal latencies, with EVL, Xenomai 3 and may even
> PREEMPT_RT
>
> With the first item solved, the second could even be automated and may
> not need some poor intern to press buttons and record numbers on a piece
> of paper ;).
>
> Jan
>
> --
> Siemens AG, Foundational Technologies
> Linux Expert Center
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2025-09-03 8:12 ` Jorge Ramirez-Ortiz, Gmail
@ 2025-09-03 8:20 ` Florian Bezdeka
2025-09-03 8:45 ` Jorge Ramirez-Ortiz, Gmail
0 siblings, 1 reply; 31+ messages in thread
From: Florian Bezdeka @ 2025-09-03 8:20 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail, Jan Kiszka
Cc: Schaffner, Tobias, rpm@xenomai.org, xenomai@lists.linux.dev
[snip]
On Wed, 2025-09-03 at 10:12 +0200, Jorge Ramirez-Ortiz, Gmail wrote:
> >
> > I think we should split these activities into two streams:
> > - short-term: setup of a well-defined but not necessarily 100%
> > finalized test environment for EVL so that we can run that
> > automatically in CI
>
> 100%. Do you think it would be at all possible to setup a simple LAVA
> lab with some reference hardware - unless Xenomai has one already?
>
> I am not sure how it would be funded - do you know ? - but it could then
> also be connected to KernelCI so that Xenomai enabled systems avoid
> regressions.
>
> https://docs.kernelci.org/intro/platform-testing/
>
> Is this something at all possible you think?
See lava.xenomai.org.
We had two labs in the past, one operated by Siemens, the other WAS
operated by Intel but has been decommissioned recently. (Hardware)
Contributions / further labs highly appreciated.
Revisiting the kernelci topic is on my TODO list for dovetail
maintenance reasons. No timeline yet and unclear how/if we would
integrate that.
>
>
> > - long-term: evaluation of background load profiles and tests to
> > trigger maximal latencies, with EVL, Xenomai 3 and may even
> > PREEMPT_RT
> >
> > With the first item solved, the second could even be automated and may
> > not need some poor intern to press buttons and record numbers on a piece
> > of paper ;).
> >
> > Jan
> >
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2025-09-03 8:20 ` Florian Bezdeka
@ 2025-09-03 8:45 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 9:12 ` Florian Bezdeka
0 siblings, 1 reply; 31+ messages in thread
From: Jorge Ramirez-Ortiz, Gmail @ 2025-09-03 8:45 UTC (permalink / raw)
To: Florian Bezdeka
Cc: Jorge Ramirez-Ortiz, Gmail, Jan Kiszka, Schaffner, Tobias,
rpm@xenomai.org, xenomai@lists.linux.dev
On 03/09/25 10:20:01, Florian Bezdeka wrote:
> [snip]
>
> On Wed, 2025-09-03 at 10:12 +0200, Jorge Ramirez-Ortiz, Gmail wrote:
> > >
> > > I think we should split these activities into two streams:
> > > - short-term: setup of a well-defined but not necessarily 100%
> > > finalized test environment for EVL so that we can run that
> > > automatically in CI
> >
> > 100%. Do you think it would be at all possible to setup a simple LAVA
> > lab with some reference hardware - unless Xenomai has one already?
> >
> > I am not sure how it would be funded - do you know ? - but it could then
> > also be connected to KernelCI so that Xenomai enabled systems avoid
> > regressions.
> >
> > https://docs.kernelci.org/intro/platform-testing/
> >
> > Is this something at all possible you think?
>
> See lava.xenomai.org.
nice, is there some document that I can read about this lava instance?
boards, tests and so on.
since it is maintained by Siemens, who can get an account and access to
the test definitions?
>
> We had two labs in the past, one operated by Siemens, the other WAS
> operated by Intel but has been decommissioned recently. (Hardware)
> Contributions / further labs highly appreciated.
ouch, ok. Does Xenomai get any funding ? maybe we could setup something
with Liberapay to get donations for a company independent LAVA lab.
sorry for all the questions, just trying to understand where the project
is since I think there could be value in having an open lab - or maybe it
is in the works already?
>
> Revisiting the kernelci topic is on my TODO list for dovetail
> maintenance reasons. No timeline yet and unclear how/if we would
> integrate that.
ok.
>
> >
> >
> > > - long-term: evaluation of background load profiles and tests to
> > > trigger maximal latencies, with EVL, Xenomai 3 and may even
> > > PREEMPT_RT
> > >
> > > With the first item solved, the second could even be automated and may
> > > not need some poor intern to press buttons and record numbers on a piece
> > > of paper ;).
> > >
> > > Jan
> > >
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [libevl][PATCH 3/4] evl-test: Start evl-test with load by default
2025-09-03 8:45 ` Jorge Ramirez-Ortiz, Gmail
@ 2025-09-03 9:12 ` Florian Bezdeka
0 siblings, 0 replies; 31+ messages in thread
From: Florian Bezdeka @ 2025-09-03 9:12 UTC (permalink / raw)
To: Jorge Ramirez-Ortiz, Gmail
Cc: Jan Kiszka, Schaffner, Tobias, rpm@xenomai.org,
xenomai@lists.linux.dev
On Wed, 2025-09-03 at 10:45 +0200, Jorge Ramirez-Ortiz, Gmail wrote:
> On 03/09/25 10:20:01, Florian Bezdeka wrote:
> > [snip]
> >
> > On Wed, 2025-09-03 at 10:12 +0200, Jorge Ramirez-Ortiz, Gmail wrote:
> > > >
> > > > I think we should split these activities into two streams:
> > > > - short-term: setup of a well-defined but not necessarily 100%
> > > > finalized test environment for EVL so that we can run that
> > > > automatically in CI
> > >
> > > 100%. Do you think it would be at all possible to setup a simple LAVA
> > > lab with some reference hardware - unless Xenomai has one already?
> > >
> > > I am not sure how it would be funded - do you know ? - but it could then
> > > also be connected to KernelCI so that Xenomai enabled systems avoid
> > > regressions.
> > >
> > > https://docs.kernelci.org/intro/platform-testing/
> > >
> > > Is this something at all possible you think?
> >
> > See lava.xenomai.org.
>
> nice, is there some document that I can read about this lava instance?
> boards, tests and so on.
>
> since it is maintained by Siemens, who can get an account and access to
> the test definitions?
The complete setup is a bit different for this project, so that
accounts to the LAVA instance itself should not be necessary.
We test through the public available xenomai-images [1] project, so
generating images and deploy them to the boards. The xenomai [2]
project is linked to the CI pipelines in xenomai-images, so that
updates to the xenomai repository trigger CI runs of xenomai-images.
The list of boards (real and virtual ones) can be found in [1]. The
test definitions reside inside the tests/jobs directory.
To use this infrastructure you must be allowed to push something to the
affected repositories. Main reason is that we have to care about the
build resources / costs. There is no process defined yet how to get
those permissions. Good community reputation / regular contributions
might be a good starting point.
>
> >
> > We had two labs in the past, one operated by Siemens, the other WAS
> > operated by Intel but has been decommissioned recently. (Hardware)
> > Contributions / further labs highly appreciated.
>
> ouch, ok. Does Xenomai get any funding ? maybe we could setup something
> with Liberapay to get donations for a company independent LAVA lab.
Well, at the end it needs someone to be responsible for the lab and
regularly care about issues like board hangs / network issues / secure
token exchange ...
It's not just the funding. We would need some kind of "stable
agreement" to operate the lab. Even if funding might get stuck at some
point.
>
> sorry for all the questions, just trying to understand where the project
> is since I think there could be value in having an open lab - or maybe it
> is in the works already?
Well the lab is somehow "half-open". It just needs
- the patches you want to test => paste them to the mailing list
- someone triggering a CI run
If you're not allowed to do so, just ask someone with the necessary
permissions to do so.
This is the normal workflow anyways. After patch review your patches
will land in the xenomai [2] next branch, where CI runs will be
triggered automatically by Jan.
>
> >
> > Revisiting the kernelci topic is on my TODO list for dovetail
> > maintenance reasons. No timeline yet and unclear how/if we would
> > integrate that.
>
> ok.
>
> >
> > >
> > >
> > > > - long-term: evaluation of background load profiles and tests to
> > > > trigger maximal latencies, with EVL, Xenomai 3 and may even
> > > > PREEMPT_RT
> > > >
> > > > With the first item solved, the second could even be automated and may
> > > > not need some poor intern to press buttons and record numbers on a piece
> > > > of paper ;).
> > > >
[1] https://gitlab.com/Xenomai/xenomai-images
[2] https://gitlab.com/Xenomai/xenomai3/xenomai
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2025-09-03 9:13 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-13 13:45 [libevl][PATCH 0/4] evl-test: align with xeno-test Tobias Schaffner
2024-06-13 13:45 ` [libevl][PATCH 1/4] Copy dohell from Xenomai 3 Tobias Schaffner
2024-06-13 14:23 ` Philippe Gerum
2024-06-13 15:32 ` Jan Kiszka
2024-06-13 15:55 ` Philippe Gerum
2025-09-02 9:51 ` Jorge Ramirez-Ortiz, Gmail
2024-06-13 13:45 ` [libevl][PATCH 2/4] evl-test: Measure worst case latencies Tobias Schaffner
2024-06-13 14:09 ` Philippe Gerum
2024-06-13 13:45 ` [libevl][PATCH 3/4] evl-test: Start evl-test with load by default Tobias Schaffner
2024-06-13 14:16 ` Philippe Gerum
2024-06-13 15:30 ` Jan Kiszka
2024-06-13 16:09 ` Philippe Gerum
2024-11-01 17:00 ` Jorge Ramirez-Ortiz, Gmail
2024-11-18 7:48 ` Jan Kiszka
2024-11-18 8:26 ` Philippe Gerum
2025-09-01 18:46 ` Tobias Schaffner
2024-06-13 17:27 ` Philippe Gerum
2024-06-14 7:29 ` Jorge Ramirez-Ortiz, Gmail
2024-07-10 7:18 ` Tobias Schaffner
2024-10-24 20:00 ` Schaffner, Tobias
2024-10-27 19:13 ` Jorge Ramirez-Ortiz, Gmail
2024-11-01 16:55 ` Jorge Ramirez-Ortiz, Gmail
2024-11-01 17:15 ` Philippe Gerum
2024-11-01 18:13 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 5:29 ` Jan Kiszka
2025-09-03 8:12 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 8:20 ` Florian Bezdeka
2025-09-03 8:45 ` Jorge Ramirez-Ortiz, Gmail
2025-09-03 9:12 ` Florian Bezdeka
2024-06-13 13:45 ` [libevl][PATCH 4/4] evl-test: Add hectic for real-time stress Tobias Schaffner
2024-06-13 14:26 ` Philippe Gerum
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.