====== RTEval ====== Rteval is a python program written to evaluate the performance of a realtime Linux kernel on a particular hardware platform. The program unpacks source code for two loads: [[realtime:documentation:howto:tools:hackbench|hackbench]] and a Linux kernel compile, then loops running hackbench and a parallel build of the Linux kernel. While the loads are running, the cyclictest program is run to measure realtime performance under load. When the specified run duration is met, the loads are stopped and cyclictest outputs measured timer latency values in histogram format, which is analyzed by rteval. Rteval then writes an XML file to disk with information about the system (gotten through DMI tables), the raw histogram data collected during the run and the statistical analysis of the run. (Reference: [[https://git.kernel.org/pub/scm/utils/rteval/rteval.git/tree/README]]) More information about rteval: [[https://git.kernel.org/pub/scm/utils/rteval/rteval.git/tree/doc/rteval.txt]] ====== Installation ====== rteval requires Python3 with the following dependencies: * python3-distutils * python3-dmidecode * python3-lxml * python3-ethtool * python3-requests * gcc 5.1 or higher, flex, bison, tar, xz (for kcompile load) Most of the above Python3 dependencies should be available in package management systems for most operating systems. The user must manually [[https://git.kernel.org/cgit/utils/rt-tests/rt-tests.git/|download]] and compile rt-tests. Compiling rt-tests additionally requires glibc and libnuma headers. Following are quick instructions to install and run once all the dependencies have been installed: $> git clone https://git.kernel.org/pub/scm/utils/rteval/rteval.git $> cd rteval # The following kernel will be used by the kcompile workload. A different kernel version can also # used here. But, corresponding changes will have to be made in KLOAD in Makefile and kernel_prefix # in ./rteval/kcompile.py before installation. $> wget -P loadsource https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.6.1.tar.xz $> sudo make install $> sudo make runit More information at: [[https://git.kernel.org/pub/scm/utils/rteval/rteval.git/tree/README]] ====== Results ====== Following is a sample result for the command: Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance as measured by those tests. Any difference in system hardware or software design or configuration may affect actual performance. =================================================================== [86/1801] rteval (v1.38) report ------------------------------------------------------------------- Test run: 2017-02-13 12:49:21 Run time: 0 days 0h 0m 11s Tested node: vpatel-dev2 Model: - BIOS version: (ver: , rev :, release date: ) CPU cores: 8 (online: 8) NUMA Nodes: 1 Memory: 31.292 GB Kernel: 4.4.2 Base OS: unknown Architecture: x86_64 Clocksource: tsc Available: tsc hpet acpi_pm Load commands: Load average: 4.07 Commands: - kcompile: make -C /home/vpatel/anon_repos/rteval/run/rteval-build/linux-2.6.39 -j16 - hackbench: hackbench -P -g 16.0 -l 100 -s 100 Latency test Command:cyclictest -qm -i 100 -d 0 -h 2000 -p 95 --smp System: (8 cores) Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz Statistics: Samples: 869190 Mean: 2.12836433921us Median: 2us Mode: 2us Range: 731us Min: 0us Max: 731us Mean Absolute Dev: 0.937310248954us Variance: 35.8090162273us Std.dev: 5.98406352133us CPU core 0 Priority: 95 Statistics: Samples: 109626 Mean: 2.61308448726us Median: 2us Mode: 2us Range: 645us Min: 0us Max: 645us Mean Absolute Dev: 1.67699461734us Variance: 90.2609495244us Std.dev: 9.50057627328us CPU core 1 Priority: 95 Statistics: Samples: 109870 Mean: 1.86766178211us Median: 1us Mode: 1us Range: 710us Min: 1us Max: 711us Mean Absolute Dev: 0.921409903422us Variance: 34.2588155195us Std.dev: 5.85310306756us CPU core 2 Priority: 95 Statistics: Samples: 109463 Mean: 2.37517700045us Median: 2us Mode: 2us Range: 621us Min: 0us Max: 621us Mean Absolute Dev: 0.944711592396us Variance: 31.7869418697us Std.dev: 5.63799094268us CPU core 3 Priority: 95 Statistics: Samples: 107860 Mean: 2.1190246616us Median: 2us Mode: 2us Range: 652us Min: 0us Max: 652us Mean Absolute Dev: 0.876297487018us Variance: 27.0425459294us Std.dev: 5.20024479514us CPU core 4 Priority: 95 Statistics: Samples: 108567 Mean: 2.1447309035us Median: 2us Mode: 2us Range: 684us Min: 0us Max: 684us Mean Absolute Dev: 0.879960259054us Variance: 29.0171586253us Std.dev: 5.38675770991us CPU core 5 Priority: 95 Statistics: Samples: 108366 Mean: 1.66483029733us Median: 1us Mode: 1us Range: 571us Min: 0us Max: 571us Mean Absolute Dev: 0.755909668094us Variance: 6.99546256844us Std.dev: 2.6448936781us CPU core 6 Priority: 95 Statistics: Samples: 107590 Mean: 2.14418626266us Median: 2us Mode: 2us Range: 731us Min: 0us Max: 731us Mean Absolute Dev: 0.797404828348us Variance: 37.2396828533us Std.dev: 6.10243253575us CPU core 7 Priority: 95 Statistics: Samples: 107848 Mean: 2.0935761442us Median: 2us Mode: 2us Range: 693us Min: 0us Max: 693us Mean Absolute Dev: 0.844485575396us Variance: 28.6649385662us Std.dev: 5.35396475205us =================================================================== rteval: exiting with exit code: 0 Most of the information is self explanatory. The statistics printed in the above example is just the output from [[realtime:documentation:howto:tools:cyclictest:start|cyclictest]].