Personal tools
The Open Lighting Project has moved!

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

OLA Thread Scheduling


Revision as of 19:24, 28 December 2014 by Nomis52 (talk | contribs)
Jump to: navigation, search

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.


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.


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 or dst host' -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: