LinuxCNC: Which kernel, which package?

It's getting complicated to decide how to install LinuxCNC! With the upcoming 2.8 release, you will have your choice of support for three realtime kernels (and generic/vanilla kernels for simulator mode):

  1. RTAI
  2. PREEMPT-RT
  3. Xenomai

Like LinuxCNC 2.7, there are two package flavors:

  1. linuxcnc (kernel-module-based)
  2. linuxcnc-uspace (userspace-based)

And here's a matrix of kernel support vs package flavor that we hope to have in 2.8:

Kernel flavor
LinuxCNC PackageRTAIPREEMPT-RTXenomaiGeneric
linuxcncYES¹NoNoNo
linuxcnc-uspaceYES²YESYESYES

.. there are two main caveats to that list:

  1. Running kernel version must exactly match what LinuxCNC was compiled for (one of the biggest hassles with RTAI using the kernel module model)
  2. linuxcnc-uspace Packages from buildbot don't actually have RTAI support now, but self-built packages will, as long as the package with lxrt development files is installed (rtai-modules-*)

As you can see, linuxcnc-uspace is better (at least on paper) than the old rtai-kernel-based approach, it's more versatile in terms of RTOS support, and it's never tied to a specific kernel version.

One thing we don't know yet is: how much additional latency or jitter is introduced by using LXRT ABI instead of kernel module ABI? I hope it's little enough that we can consider dropping the kernel module realtime model altogether for LinuxCNC 2.9 or so.

So I propose the following steps for deciding which flavor of LinuxCNC to use, if you're building our master branch:

  1. Choose linuxcnc-uspace with the realtime kernel of your choice
but if you experience that linuxcnc-uspace + RTAI gives substantially worse performance than linuxcnc kernel-mode + RTAI, please drop us a note about it before we go dropping that functionality.

Entry first conceived on 9 August 2016, 1:54 UTC, last modified on 9 August 2016, 2:14 UTC
Website Copyright © 2004-2017 Jeff Epler