Benchmarking with xeno-test

xeno-test is simple script running a series of unit tests of Xenomai features, then the latency test under a user-specified load. The aim of this script is to allow Xenomai users to run reproducible latency measurements, under a load which would approximate the load of their system in production.

The dohell script is a companion of xeno-test, derived from snippets posted on the Linux Kernel Mailing List, which allows to generate a synthetic load (network load, disk I/O load, cpu load, and Linux syscalls coverage with LTP).

For network load, a server must be listening on another machine, for connections on a TCP port. The default port used for this is the “discard” port available in the inetd daemon.

The xeno-test command line used by the Xenomai developers to measure latency enables all the possible dohell sources of load:

xeno-test -l "dohell -s <serverip> -l <path/to/ltp> -m <mntpoint>" -g <filename>

On ARM machines running with with FCSE enabled in “guaranteed” mode, it does not make much sense to run the LTP testsuite, the limitation to 95 processes would cause several key tests to fail, so, we use dohell -b option to periodically spawn the hackbench test with 80 threads (to not exceed the 95 processes limit). The command-line becomes:

xeno-test -l "dohell -s <serverip> -b <path/to/hackbench> 7200" -g <filename>