mirror of
https://github.com/toradex/rt-validation.git
synced 2025-05-03 13:37:03 +00:00
README.md: add complete instructions to run the tests
This commit is contained in:
parent
c451ec2665
commit
f056a06048
90
README.md
90
README.md
@ -1,25 +1,93 @@
|
|||||||
# rt-validation
|
# rt-validation
|
||||||
|
|
||||||
Containers to validate real-time (PREEMPT_RT) support in TorizonCore
|
Containers to validate real-time (`PREEMPT_RT`) support in TorizonCore.
|
||||||
|
|
||||||
|
The `stress-tests` container will run stress tests (CPU, memory, I/O) in the device.
|
||||||
|
|
||||||
|
The `rt-tests` container will run `cyclictest` and generate a report of the measured latency.
|
||||||
|
|
||||||
|
|
||||||
# Build containers (on target machine)
|
# Prepare the device for the tests
|
||||||
|
|
||||||
For armhf:
|
Make sure you are running a `PREEMPT_RT` version of TorizonCore:
|
||||||
```
|
```
|
||||||
docker build -t torizon/rt-validation-stress stress-tests
|
$ cat /etc/os-release | grep PREEMPT_RT
|
||||||
docker build -t torizon/rt-validation-rt rt-tests
|
NAME="Torizoncore Upstream with PREEMPT_RT"
|
||||||
|
PRETTY_NAME="Torizoncore Upstream with PREEMPT_RT 5.1.0-devel-20201216+build.152 (dunfell)"
|
||||||
```
|
```
|
||||||
|
|
||||||
For arm64:
|
Make sure the device is connected to the internet (needed to generate network load):
|
||||||
|
|
||||||
```
|
```
|
||||||
docker build --build-arg IMAGE_ARCH=linux/arm64 -t torizon/rt-validation-stress stress-tests
|
$ ping -c 3 8.8.8.8
|
||||||
docker build --build-arg IMAGE_ARCH=linux/arm64 -t torizon/rt-validation-rt rt-tests
|
PING 8.8.8.8 (8.8.8.8): 56 data bytes
|
||||||
|
64 bytes from 8.8.8.8: seq=0 ttl=118 time=12.344 ms
|
||||||
|
64 bytes from 8.8.8.8: seq=1 ttl=118 time=10.730 ms
|
||||||
|
64 bytes from 8.8.8.8: seq=2 ttl=118 time=12.080 ms
|
||||||
|
```
|
||||||
|
|
||||||
|
Mount a pendrive in `/mnt/pendrive` and make sure it has an archive file called `file.tar` (needed to generate USB read/write):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo mkdir -p /mnt/pendrive
|
||||||
|
$ sudo mount /dev/sda1 /mnt/pendrive
|
||||||
|
$ ls /mnt/pendrive/file.tar
|
||||||
|
-rw-rw-r-- 1 torizon torizon 1011353600 Dec 8 19:30 /mnt/pendrive/file.tar
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
# Run the tests (on target machine)
|
# Run the stress-tests container
|
||||||
|
|
||||||
|
Run the following command to execute the `stress-tests` container:
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run --rm -it --privileged -v /dev:/dev -v /tmp:/tmp -v /media/$USER/YOUR-USB-DISK-MOUNTPOINT:/mnt/pendrive torizon/rt-validation-stress
|
$ docker run --rm -d --name stress-tests --privileged -v /dev:/dev -v /tmp:/tmp -v /mnt/pendrive/:/mnt/pendrive torizon/stress-tests:$CT_TAG_STRESS_TESTS
|
||||||
docker run --rm -it --privileged -v /dev:/dev -v /tmp:/tmp torizon/rt-validation-rt
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Check if the stress tests started successfully:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker logs stress-tests
|
||||||
|
Setting up stress tests...
|
||||||
|
RT stress tests started successfully!
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Run the rt-tests container
|
||||||
|
|
||||||
|
Run the following command to execute the `rt-tests` container and start measuring the latency:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker run --rm -it --name rt-tests --cap-add=sys_nice --cap-add=ipc_lock --cap-add=sys_rawio --ulimit rtprio=99 --device-cgroup-rule='c 10:62 rmw' -v /dev:/dev -v /tmp:/tmp torizon/rt-tests:$CT_TAG_RT_TESTS
|
||||||
|
```
|
||||||
|
|
||||||
|
The tests will run for at most 12 hours, but can be interrupted at any time by pressing CTRL-C.
|
||||||
|
|
||||||
|
After the tests are finished, stop the `stress-tests` container:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker stop stress-tests
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Analysing the results
|
||||||
|
|
||||||
|
A summary of latency measurements will be available in `/tmp/latency-summary.log`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cat /tmp/latency-summary.log
|
||||||
|
# /dev/cpu_dma_latency set to 0us
|
||||||
|
# Histogram
|
||||||
|
# Total: 000297214 000297199 000297189 000297179
|
||||||
|
# Min Latencies: 00005 00005 00005 00005
|
||||||
|
# Avg Latencies: 00023 00026 00023 00021
|
||||||
|
# Max Latencies: 00081 00085 00077 00076
|
||||||
|
# Histogram Overflows: 00000 00000 00000 00000
|
||||||
|
# Histogram Overflow at cycle number:
|
||||||
|
# Thread 0:
|
||||||
|
# Thread 1:
|
||||||
|
# Thread 2:
|
||||||
|
# Thread 3:
|
||||||
|
```
|
||||||
|
|
||||||
|
A latency plot from cyclictest histogram data will be available in `/tmp/latency-plot.png`.
|
||||||
|
Loading…
Reference in New Issue
Block a user