===== Cyclictest =====
The Cyclictest starts several tasks, which are called periodically.
The effective period duration is measured and the jitter is displayed.
* [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s[]=cyclictest | Cyclictest website]]
A presentation from the "Embedded Linux Conference 2013" offers a good introduction to the use of Cyclictest.
The presentation can be watched on [[https://www.youtube.com/watch?v=f_u4r6ehZKY | Youtube]].
The PPT slides can be downloaded {{:software:linux:realtime:benchmark:cyclictest_frank_rowand_ppt.pdf|here}}.
==== Installation ====
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
sudo apt-get install build-essential libnuma-dev
cd rt-tests
git checkout -b tmp tags/v1.0
make all
==== Cross compile ====
TODO
To install the Cyclictest on a MPC follow [[software:linux:realtime:benchmark:cyclictest_on_mpc|this]] guid.
==== Quickstart ====
sudo ./cyclictest -p 80 -t5
5 threads are created, which are called periodically.
After a few minutes, the maximum latency can be roughly estimated.
==== Extensive Measurement ====
In order to benchmark the realtime performance of a system well appropriately, a measurement duration of at least 24h under real or artificial load is recommended.
The frequency of different latencies can be counted and displayed in a histogram.
=== Start Benchmark ===
sudo ./cyclictest -Sp80 -l86400000 -i1000 -h1000 -q > histogramm.log
[{{ :software:linux:cyclictest:histograme05.jpg?400|Histogramm of a x86 system with RT Kernel. Measurement time = 1h}}]
| -Sp80 |S = alle cores; p = priority**-**80 (Realtime)|
| -l86400000 |86'400'000 cycles|
| -i1000 |1000us per cycle|
| -h1000 |Latencies up to 1000us will be stored for the histogram|
| -q |quiet|
^ Measurement time: |l86400000*i1000 = 86400e6us = 86400s = 24h|
All measurements longer than ''-h1000'' do not appear in the histogram. These measurements are counted and displayed at the end of the log file as //Histogram Overflows://. The Maximum Latency is displayed as //Max Latencies://.
To plot the histogram this Matlab script {{:software:linux:realtime:benchmark:plothistogram.rar|plotHistogramm.m}} can be used.
The homepage of [[https://www.osadl.org/Latency-plots.latency-plots.0.html|OSADL]] explains well how such a histogram can be interpreted.