This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
realtime:documentation:howto:howto_rt_tools_worstcaselatency [2017/02/08 14:23] anna-maria delete - move into an own namespace |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Worst Case Latency Test Scenarios ====== | ||
- | |||
- | 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 [[https://leemgs.fedorapeople.org/|Geunsik Lim]]. | ||
- | |||
- | ===== Requirements ===== | ||
- | |||
- | Following tools are being used by this test: | ||
- | * [[realtime:documentation:howto:howto_rt_tools_cyclictest|cyclictest]] | ||
- | * [[realtime:documentation:howto:howto_rt_tools_ltp|Linux Test Project]] | ||
- | * hackbench (part of the [[https://git.kernel.org/cgit/utils/rt-tests/rt-tests.git/|rt-tests]].) | ||
- | * other commands like taskset, chrt, ping, dd, tar and netperf which is usually available by default in most linux systems. | ||
- | |||
- | ===== Latency test scenarios ===== | ||
- | |||
- | This is Test scenario to measure a latency guarantee in the worstcase environments using simple script and commands. | ||
- | |||
- | ==== Latency test ==== | ||
- | |||
- | <code sh> | ||
- | # 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 | ||
- | </code> | ||
- | |||
- | ==== Stress Environments ==== | ||
- | <code sh> | ||
- | # 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 & | ||
- | </code> | ||
- | 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. | ||
- | |||
- | ===== Contacts ===== | ||
- | |||
- | Geunsik Lim, leemgs1@gmail.com | ||