Personal tools
The Open Lighting Project has moved!

We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.

OLA Thread Scheduling: Difference between revisions

From wiki.openlighting.org

Jump to: navigation, search
No edit summary
 
Line 51: Line 51:
From the tcpdump, we can find the time between sending the ArtNet packet and receiving the E1.31 packet, and then plot these on a histogram:
From the tcpdump, we can find the time between sending the ArtNet packet and receiving the E1.31 packet, and then plot these on a histogram:


{|
{| class="wikitable"
! Scenario
! Scheduler
! Mean
! Mean (ms)
! Standard Deviation
! Standard Deviation
! 90%
! 90 percentile (ms)
! 99%
! 99 percentile (ms)
! 99.9 %
! 99.9 percentile (ms)
! Max
! Max (ms)
|-
|-
| Control
| Control
| 0.0008808826
| 0.880 ms
| 5.64791e-05
| 5.64791e-02
| 0.000920000
| 0.920 ms
| 0.001018000
| 1.018 ms
| 0.001842056
| 1.842 ms
| 0.002252
| 2.252 ms
|-
|-
| Fifo
| Fifo
| 0.0008681658
| 0.868 ms
| 2.819106e-05
| 2.819106e-02
| 0.000909000
| 0.909 ms
| 0.000958020
| 0.958 ms
| 0.001010026
| 1.010 ms
| 0.001132
| 1.132 ms
|}
|}



Latest revision as of 04:43, 29 December 2014

Since 0.9.4, OLA provides options to control the thread scheduling algorithms, when supported by the host kernel.

Besides the default scheduling policy (SCHED_OTHER), OLA supports SCHED_RR and SCHED_FIFO. You can read about the differences on The Linux Journal.

Configuration

If you're on Linux you need to edit /etc/security/limits.conf and add:

<username>            hard    rtprio   99
<username>            soft    rtprio   50

Replace <username> with the user you run olad as.

Running OLA

Start olad with --scheduler-policy and --scheduler-priority. You must provide both flags.

$ olad --scheduler-policy fifo --scheduler-priority 10

The --scheduler-priority flag must be a value less than or equal to the soft rtprio limit set in /etc/security/limits.conf.

Results

The test setup was as follows:

  • Intel i5-3450, running Debian Wheezy, set to send ArtNet traffic on universe 1
  • Raspberry Pi, configured to receive ArtNet traffic and convert to sACN traffic on universe 1.
  • Both hosts connect to a netgear 5 port switch. The Pi was connected at 100Mbps, the Debian host at 1Gbps.

On the Debian host, the traffic was generated with:

$  i=0; while :; do echo "$i"; i=$((i+1)); if [ $i == 256 ] ; then i=0; fi ; sleep 0.025; done | ola_streaming_client  -u 1

And the packets captured with:

tcpdump  -n '(port 5568 or port 6454)  and (dst host 239.255.0.1 or dst host 192.168.3.115)' -c 10000 -s0 -w /tmp/savefile-fifo

On the Pi, the control was with no scheduling options. Then the fifo scheduler was enabled with

$ olad  --scheduler-policy fifo --scheduler-priority 10

From the tcpdump, we can find the time between sending the ArtNet packet and receiving the E1.31 packet, and then plot these on a histogram:

Scheduler Mean (ms) Standard Deviation 90 percentile (ms) 99 percentile (ms) 99.9 percentile (ms) Max (ms)
Control 0.880 ms 5.64791e-02 0.920 ms 1.018 ms 1.842 ms 2.252 ms
Fifo 0.868 ms 2.819106e-02 0.909 ms 0.958 ms 1.010 ms 1.132 ms