| Latency Tests | |||
|---|---|---|---|
| <<< Previous | Chapter 4. Scenario Components | Next >>> | Blog |
The Linux kernel is the OS under investigation. The specific kernel being tested is provided as part of the test result information. As part of my investigation I had wanted to see the effects of Ingo Molnar's -rt patches on a kernel so I have tested both a vanilla kernel and the same kernel with Ingo's real-time extensions patched into them (indicated with a "rt" in the log and configuration file names).
These kernels offer up to 4 different preemption settings. The vanilla kernels provide only the first 3:
Table 4-1. Kernel Preemption Settings
| Preemption Setting | Best For | Abbreviation |
|---|---|---|
| No Forced Preemption | Server | k1 |
| Voluntary Kernel Preemption | Desktop | k2 |
| Preemptible Kernel | Low-Latency Desktop | k3 |
| Complete Preemption | Real-Time | k4 |
After a little bit of back-and-forth with Ingo Molnar he pointed out how to set the serial devices for low-latency as well as the use of chrt (as opposed to renice) which were incorporated into the tests. After also helping with the kernel modifications, Ingo provided some patches and advice which were used for these latency measurements.
Generate 8 bytes of UDP traffic 100 times/sec to the specified IP address.
Usage: udpblast.sh <server IP>
where: <server IP> is the IP address to address the packets to.
|
The udpblast program sends out a fixed packet of 8 bytes 100 times per second. The only thing that needs to be specified is the IP address at which to address these packets.
Devices on the same network might need to communicate with each other in order to ensure the data is being recorded correctly and/or for synchronization. This load simulates a lot of cross-communication traffic.
Usage: serialblast [options] <device>
where:
<device> Is the serial device file to open
options:
-h | --help This help text.
-p N | --pause N Pause for N microseconds (default 500000, 0.5sec).
-s S | --string S Use string S instead of default 100-character string.
|
The serialblast application sends a payload of data to the given serial port at a given interval. By default the payload size is 100 bytes and the interval is twice per second. The user can specify the payload to send with the -s option and the pause interval between blasts can be specified with the -p option (the pause value is in microseconds).
Serial communications is still a mainstay of embedded applications. This load simulates traffic occurring on serial ports which could be measurements, communication, or anything else.
Usage: latency-client <serial device> <number of drones>
where:
0 < drones < 1000
|
This application starts by creating as many drones as are requested. It then creates all the named FIFOs which these drones will use to communicate. This application reads a string from a serial device and passes it along to the first drone. The first drone then sends this strong on to the second drone, and on and on down the line. The last drone in the list will send this message back to this application which will write the string back into the serial device.
This component simulates the user-space applications that will work together to perform the application logic. These applications will communicate via FIFO IPC mechanisms and work together to support all the required functionality.
| <<< Previous | Home | Next >>> |
| Scenario Components | Up | Scenarios |