User Tools

Site Tools


realtime:documentation:howto:tools:worstcaselatency

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 Geunsik Lim.

Requirements

Following tools are being used by this test:

Latency test scenarios

This is Test scenario to measure a latency guarantee in the worstcase environments using simple script and commands.

Latency test

# 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

Stress Environments

Following are some simple scripts which can be used to generate loads on target system:

Note that these are reference commands and slight modifications to the commands might be required depending on the version of the command you are using. For example, busybox version of ping does not support the '-l' argument.

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

Following is another way to generate heavy CPU load.

#!/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. This command 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 ). Clone the repository using git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-stable

cd /opt
while true; do taskset -c 0 tar cvzf test1.tgz  ./linux-stable ; done  &
while true; do taskset -c 1 tar cvzf test2.tgz  ./linux-stable ; done  &
while true; do taskset -c 2 tar cvzf test3.tgz  ./linux-stable ; done  &
while true; do taskset -c 3 tar cvzf test4.tgz  ./linux-stable ; done  &

Generating I/O load using du

while true; do taskset -c 3 /bin/du / ; done  &

Generate network loads

# First start the server...
/usr/bin/netserver
# then start netperf to connect to the server
/usr/bin/netperf -H <IP_ADDR_OF_SERVER> -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/
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-stable
taskset -c 2 tar cvzf test5.tgz  /media/usb/linux-stable &

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

realtime/documentation/howto/tools/worstcaselatency.txt · Last modified: 2018/08/23 15:00 by ebugden