rttest
Instrumentation library for real-time performance testing
README
rttest
rttest is a minimal tool for instrumenting and running tests for synchronous real-time systems. It provides utilities for measuring and plotting jitter, latency, and missed deadlines. It also provides a library with macros for instrumenting code. It is designed with real-time Linux-based systems in mind, such as Preempt RT kernel.
Build instructions
Build from source:
mkdir build
cd build
cmake ..
sudo make install
Alternatively for a local install:
cmake .. -DCMAKE_INSTALL_PREFIX=<build folder>
make install
Build and run the example:
cd examples
mkdir build
cd build
cmake .. (-DCMAKE_INSTALL_PREFIX=<build folder>)
make
./example_loop
Note that if this is run in a Docker container, the IPC_LOCK
capability must be added to the container capabilities.
This can be managed via the --cap-add
flag:
docker run --cap-add IPC_LOCK
Command line arguments
Passing argc
and argv
of an instrumented main function to rttest_read_args
will enable command line arguments for the instrumented function.
-u Specify the update period. Default units are microseconds. Use the suffix “s” for seconds, “ms” for milliseconds, “us” for microseconds, and “ns” for nanoseconds. Default update period is 1ms.
-m Set maximum stack prefault size for static stack prefaulting. “b” for bytes, “kb” for kilobytes, “mb” for megabytes, “gb” for gigabytes (use with caution). Default stack size is 1MB.
-d Set maximum heap prefault size for dynamic memory prefaulting. “b” for bytes, “kb” for kilobytes, “mb” for megabytes, “gb” for gigabytes (use with caution). Default heap size is 8192MB.
-i Specify how many iterations to run the real-time loop. Specifying an iteration value less than or equal to 0 will cause rttest to run forever or until interrupted with Ctrl-C. If running forever, rttest will not save a data buffer and writing results to a file will not work. Default value is 1000.
-tp Set the thread priority of all threads launched by the test program.
Individual thread priority can be set using the rttest_set_sched_priority
command.
-f Specify the name of the file for writing the collected data. Plot this data file using the rttest_plot
script provided in scripts
.