diff --git a/README.md b/README.md index d591e4e..9e31679 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,24 @@ # rt-validation -Containers to validate real-time (PREEMPT_RT) support in TorizonCore \ No newline at end of file +Containers to validate real-time (PREEMPT_RT) support in TorizonCore + + +# Build containers (on target machine) + +For armhf: +``` +docker build -t torizon/rt-validation-stress stress-tests +docker build -t torizon/rt-validation-rt rt-tests +``` + +For arm64: +``` +docker build --build-arg IMAGE_ARCH=linux/arm64 -t torizon/rt-validation-stress stress-tests +docker build --build-arg IMAGE_ARCH=linux/arm64 -t torizon/rt-validation-rt rt-tests +``` + + +# Run the tests (on target machine) + +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 -it --privileged -v /dev:/dev -v /tmp:/tmp torizon/rt-validation-rt diff --git a/rt-tests/Dockerfile b/rt-tests/Dockerfile new file mode 100644 index 0000000..27dddd4 --- /dev/null +++ b/rt-tests/Dockerfile @@ -0,0 +1,10 @@ +ARG IMAGE_ARCH=linux/arm +# For IMX8 use IMAGE_ARCH=linux/arm64 +ARG IMAGE_TAG=1-buster +FROM --platform=$IMAGE_ARCH torizon/debian:$IMAGE_TAG + +RUN apt-get update \ + && apt-get install -y --no-install-recommends rt-tests \ + && rm -rf /var/lib/apt/lists/* + +CMD ["cyclictest","-S","-p99","-i1000","-m","-D20m", "-q", "|", "tee", "cyclictest.log"] diff --git a/stress-tests/Dockerfile b/stress-tests/Dockerfile new file mode 100644 index 0000000..8b6e034 --- /dev/null +++ b/stress-tests/Dockerfile @@ -0,0 +1,12 @@ +ARG IMAGE_ARCH=linux/arm +# For IMX8 use IMAGE_ARCH=linux/arm64 +ARG IMAGE_TAG=1-buster +FROM --platform=$IMAGE_ARCH torizon/debian:$IMAGE_TAG + +RUN apt-get update \ + && apt-get install -y --no-install-recommends iperf3 rt-tests \ + && rm -rf /var/lib/apt/lists/* + +COPY / / + +CMD ["/stress-tests.sh"] diff --git a/stress-tests/stress-tests.sh b/stress-tests/stress-tests.sh new file mode 100755 index 0000000..286669c --- /dev/null +++ b/stress-tests/stress-tests.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +# CPU load +while true; do hackbench >/dev/null 2>&1; done & + +# I/O load (eMMC read) +while true; do du /usr >/dev/null 2>&1; done & +while true; do find / -name a* >/dev/null 2>&1; done & + +# I/O load (USB read/write) +if mount | grep /mnt/pendrive >/dev/null; then + cd /mnt/pendrive + tar -cf file.tar -C /var/log --exclude=lost+found -p . + while true; do rm -rf output; mkdir -p output; tar xfv file.tar -C output/ >/dev/null 2>&1; done & +fi + +# RTC read/write +while true; do hwclock >/dev/null 2>&1; sleep 0.1; done & +while true; do hwclock -w >/dev/null 2>&1; sleep 0.1; done & + +# Network load +while true; do iperf3 -c bouygues.iperf.fr -P 10 >/dev/null 2>&1; done + +echo "RT stress tests started successfully!" + +# Dont exit +while true; do sleep 1; done