====== RT-Tests ======
rt-tests is a [[realtime:documentation:howto:tools:start|test suite]], that contains programs to test various real time Linux features. It is maintained by Clark Williams and John Kacur.
For communication, the [[realtime:communication:mailinglists|rt-users mailing list]] is used.
===== Programs =====
The following programs are part of the rt-tests:
* [[realtime:documentation:howto:tools:cyclictest:start|cyclictest]] – [[https://man7.org/linux/man-pages/man2/clock_nanosleep.2.html|clock_nanosleep]] latency detection
* [[https://man.archlinux.org/man/cyclicdeadline.8.en|cyclicdeadline]] – test the deadline scheduler (SCHED_DEADLINE) using a cyclictest style program
* [[https://man.archlinux.org/man/deadline_test.8.en|deadline_test]] – test the deadline scheduler
* [[realtime:documentation:howto:tools:hackbench|hackbench]] – scheduler benchmark/stress test
* [[https://man.archlinux.org/man/hwlatdetect.8.en|hwlatdetect]] – CLI for [[https://docs.kernel.org/trace/hwlat_detector.html|/sys/kernel/tracing/hwlat_detector]]
* [[https://man.archlinux.org/man/oslat.8.en|oslat]] – measures delay with [[https://en.wikipedia.org/wiki/Time_Stamp_Counter|RDTSC]]
* [[https://man.archlinux.org/man/pip_stress.8.en|pip_stress]] – priority Inheritance with processes
* [[https://man.archlinux.org/man/pi_stress.8.en|pi_stress]] – a stress test for POSIX Priority Inheritance mutexes
* [[https://man.archlinux.org/man/pmqtest.8.en|pmqtest]] – start pairs of threads and measure the latency of interprocess communication with POSIX messages queues
* [[https://man.archlinux.org/man/ptsematest.8.en|ptsematest]] – start two threads and measure the latency of interprocess communication with POSIX mutex.
* [[https://man.archlinux.org/man/determine_maximum_mpps.8.en|determine_maximum_mpps]] – determine the maximum mpps the machine can handle
* [[https://man.archlinux.org/man/queuelat.8.en|queuelat]] – queue latency test program
* [[https://man.archlinux.org/man/rt-migrate-test.8.en|rt-migrate-test]] – real-time task migration program
* [[https://man.archlinux.org/man/signaltest.8.en|signaltest]] – signal roundtrip test software
* [[https://man.archlinux.org/man/sigwaittest.8.en|sigwaittest]] – start two threads or fork two processes and measure the latency between sending and receiving a signal
* [[https://man.archlinux.org/man/ssdd.8.en|ssdd]] – have a tracer do a bunch of PTRACE_SINGLESTEPs
* [[https://man.archlinux.org/man/svsematest.8.en|svsematest]] – start two threads or fork two processes and measure the latency of SYSV semaphores
===== Compile and install =====
rt-tests suite can be installed from source: [[https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/tree/src|rt-tests/src]],
the releases are available [[https://www.kernel.org/pub/linux/utils/rt-tests|here]].
The [[https://man7.org/linux/man-pages/man3/numa.3.html|libnuma]] and build-essentials are required.
On Debian install **libnuma-dev**, on Fedora install **numactl-devel**, on openSUSE install **libnuma-devel**.
libnuma-dev is required for build. Usually, it's safe to have libnuma-dev installed also in non-NUMA systems, but if you don't want to install the NUMA libs (e.g. in embedded environment) then compile with make NUMA=0.
Clone source code (check out the latest stable branch, because the master branch is not used for stable release any more), compile it and install it to the local filesystem
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
cd rt-tests
git checkout stable/v1.0
make all
make install
The last step is optional. All compiled programs can be executed
from the build directory directly. If only a single program should
be compiled only the single make target for the specific program
could be executed (example for cyclictest):
make cyclictest