This is an old revision of the document!
This section talks about different ways one can generate workloads to test worst case latency for a real-time system. These tests were originally designed by Geunsik Lim.
Following tools are being used by this test:
This is Test scenario to measure a latency guarantee in the worstcase environments using simple script and commands.
# This is task to keep Latency(Max limitation: 200uSec) at the worst case. # Written by GeunSik,Lim # If you need histogram information just, Please Use -h option. time cyclictest -t1 -p 99 -i 1000 -n -l 1000000000000 -d 86400 -m -a 1
# Now, Below test code is background stress for the worst case in RT system. time cyclictest -t50 -p 80 -i 10000 -n -l 100000000000 -d 86400 -a 3 taskset -c 2,3 ./stress.20080904.sh --------------------------- #!/bin/sh # Most hardcore test (Ingo Molnar - http://lkml.org/lkml/2005/6/22/347) # For Heavy CPU Ratio. while true; do /bin/dd if=/dev/zero of=bigfile bs=1024000 count=1024; done & while true; do /usr/bin/killall hackbench; sleep 5; done & while true; do /sbin/hackbench 20; done & # some source code(ltp-full-20090531) consists of sched_setschduler() with FIFO 99. cd ltp-full-20090531; while true; do ./runalltests.sh -x 40; done & ---------------------------- # For 100% Usage of CPU Load using ping # Should run as root to preload more than 3 packets. taskset -c 0 /bin/ping -l 100000 -q -s 10 -f localhost & taskset -c 1 /bin/ping -l 100000 -q -s 10 -f localhost & taskset -c 2 /bin/ping -l 100000 -q -s 10 -f localhost & taskset -c 3 /bin/ping -l 100000 -q -s 10 -f localhost & ---------------------------- # For 100% Usage of I/O Load using linux-2.6.30 tar source like tiobench s/w. # Don't forget disk total usage ratio (ex: df ). # git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6.30 cd /opt while true; do taskset -c 0 tar cvzf test1.tgz ./linux-2.6.30 ; done & while true; do taskset -c 1 tar cvzf test2.tgz ./linux-2.6.30 ; done & while true; do taskset -c 2 tar cvzf test3.tgz ./linux-2.6.30 ; done & while true; do taskset -c 3 tar cvzf test4.tgz ./linux-2.6.30 ; done & ---------------------------- # Estimate file space usage ( for I/O Load) while true; do taskset -c 3 /bin/du / ; done & ---------------------------- # Network Stress ( Network Performance & Stress ) /usr/bin/netserver /usr/bin/netperf -H 192.168.155.20 -t TCP_STREAM -A 16K,16K -l 3600 # Streamming Stress using firefox webbrowser. firefox http://www.intomail.net/stream.php ---------------------------- # USB Disk I/O Stress(External HDD's I/O ) cd /media/usb/ taskset -c 2 tar cvzf test5.tgz /media/usb/linux-2.6.30 &
A lot of these tests produce a lot of output. It can be redirected to /dev/null
so that it does not flood the terminal. This can especially be a problem when using a serial console.
Geunsik Lim, leemgs1@gmail.com