SUSE Linux Enterprise Real Time is based on the latest real time Linux kernel, and includes the open source community's latest real time patch set—preempt RT—a set of patches that support preemption with adaptive locks, per device interrupt threads, and priority inheritance. It also includes support for CPU shielding, resource assignment, and high-resolution timers, as well as kernel drivers for the latest open source RDMA software stack available from the OpenFabrics Alliance, OpenFabrics Enterprise Distribution (OFED).
SUSE Linux Enterprise Real Time contains modifications that make previously uninterruptible sections of the general-purpose Linux operating system kernel interruptible, or pre-emptible. Latency is minimized, and response times are more predictable—where you can eliminate the likelihood of an uninterruptible operating system process interrupting your high priority process or prevent it from starting. One specific modification is the adaptive lock, which can be put to sleep, or suspended, and release resources that they are holding in order for higher priority processes to be executed. Adaptive locks reduce operating system context switching times, dramatically improving the performance of throughput sensitive workloads.
Thread run interrupts
Another specific modification that was made to make the Real Time's kernel more pre-emptible, are kernel run interrupt threads. Interrupts are processes that are either initiated by hardware (hard interrupt) or software (soft interrupt), that once initiated, cause the Linux kernel to switch from process mode into interrupt mode. Processes running in interrupt mode in a general-purpose operating system are not pre-emptible. With SUSE Linux Enterprise Real Time, these interrupts have been bounded or encapsulated by kernel threads, and these kernel threads, which are interruptible, in turn allow the hard and soft interrupts to be preempted by user defined higher priority processes.
Priority inheritance refers to the ability of a lower priority process to assume a higher priority, if there is a higher priority process that requires the lower priority process to finish before it can accomplish its task. With SUSE Linux Enterprise Real Time, kernel services invoked by a high priority process will not wait indefinitely while other kernel services invoked by a low priority process holding a required semaphore trudge along at that lower priority. The priority of the lower priority process will be increased, or will inherit that of the higher priority, until its semaphore is released. Also, Real Time offers an alternate glibc which extends priority inheritance to user space. Applications using this alternative glibc can request that priority inheritance be applied to their POSIX mutexes.
CPU shielding and assignment
With SUSE Linux Enterprise Real Time, users have full control over the assignment of processes and threads to CPUs. Processes with real time requirements can be assigned to run exclusively on dedicated CPUs or cores. CPUs executing real time tasks can be completely shielded from any other processes that have not been explicitly assigned to them, ensuring that resources are always available for high priority processes, and minimally affected by increased system loads, ensuring greater reliability and predictability.
High resolution timers
Low resolution (40 milliseconds) posix timer kernel services have been replaced by a new implementation with resolution of about 2 microseconds. The amount of time the system spends processing interrupts, system calls, kernel daemons, and user applications is now accounted for at nanosecond resolution.