Chapter 1. Installing RHEL for Real Time
Many industries and organizations need extremely high performance computing and may require low and predictable latency, especially in the financial and telecommunications industries. Latency, or response time, is defined as the time between an event and system response and is generally measured in microseconds (μs).
For most applications running under a Linux environment, basic performance tuning can improve latency sufficiently. For those industries where latency not only needs to be low, but also accountable and predictable, Red Hat developed a 'drop-in' kernel replacement that provides this. RHEL for Real Time is distributed as part of RHEL 9 and provides seamless integration with RHEL 9. RHEL for Real Time offers clients the opportunity to measure, configure, and record latency times within their organization.
Before installing RHEL for Real Time, ensure that the base platform is properly tuned and the system BIOS parameters are adjusted. Failure to perform these tasks may prevent getting consistent performance from a RHEL Real Time deployment.
1.1. RHEL for Real Time for optimizing latency
RHEL for Real Time is designed to be used on well-tuned systems for applications with extremely high determinism requirements. Kernel system tuning offers the vast majority of the improvement in determinism.
For example, in many workloads, thorough system tuning improves consistency of results by around 90%. This is why, before using RHEL for Real Time, we recommend that customers first perform system tuning of standard RHEL to see if it meets their objectives.
System tuning is just as important when using the Real Time kernel as it is for the standard kernel. Installing the Real Time kernel on an untuned system running the standard kernel supplied as part of RHEL is not likely to result in any noticeable benefit. Tuning the standard kernel will yield 90% of the possible latency gains. The Real Time kernel provides the last 10% of latency reduction required by the most demanding workloads.
Before tuning Real Time kernel systems, ensure that the base platform is properly tuned and the system BIOS parameters are adjusted. Failure to perform these tasks may prevent getting consistent performance from a RHEL Real Time deployment.
The objective of the Real Time kernel consistent, low-latency determinism offering predictable response times. There is some additional kernel overhead associated with the real time kernel. This is due primarily to handling hardware interrupts in separately scheduled threads. The increased overhead in some workloads results in some degradation in overall throughput. The exact amount is very workload dependent, ranging from 0% to 30%.
For typical workloads with kernel latency requirements in the millisecond (ms) range, the standard RHEL kernel is sufficient. However,if your workload has stringent low-latency determinism requirements for core kernel features such as interrupt handling and process scheduling in the microsecond (μs) range, then the Real Time kernel is for you.
This graph compares a million samples of machines that use the RHEL and the RHEL for Real Time kernel, respectively.
- The blue points in this graph represent the system response time (in microseconds) of machines running a tuned RHEL kernel.
- The green points in the graph represent the system response time of machines running a tuned real-time kernel.
It is clear from this graph that the response time of the Real Time kernel is very consistent, in contrast to the standard kernel, which has greater variability.
Additional resources
1.2. Installing RHEL for Real Time using DNF
In addition to installing the real-time kernel with dnf
, an ISO image containing RHEL for Real Time is also available for download from the Download Red Hat Enterprise Linux portal. You can use this ISO image to obtain all the RPM packages included with RHEL for Real Time. However, because this is not a bootable ISO image, you cannot use it to create a bootable USB or CD medium.
Prerequisites
- The latest version of RHEL 9 is installed on an AMD64 or Intel64 system. The real-time kernel runs on AMD64 and Intel 64 (also known as x86_64) server platforms that are certified to run Red Hat Enterprise Linux.
- Your machine is registered and RHEL is attached to a RHEL for Real Time subscription.
Ensure that the base platform is properly tuned and the system BIOS parameters are adjusted.
WarningFailure to perform the prerequisite tasks before installing the real-time kernel might prevent a consistent performance from a RHEL for Real Time kernel deployment.
Procedure
Enable the RHEL for Real Time repository.
# subscription-manager repos --enable rhel-9-for-x86_64-rt-rpms
Install the RHEL for Real Time package group.
# dnf groupinstall RT
This group installs several packages:
-
kernel-rt
includes the RHEL for Real Time kernel package. -
kernel-rt-core
includes the core RHEL for Real Time kernel package. -
kernel-rt-devel
includes the RHEL for Real Time kernel development package. -
kernel-rt-modules
includes the RHEL for Real Time kernel modules package. -
kernel-rt-modules-extra
includes the RHEL for Real Time kernel extra modules package. -
realtime-setup
sets up the basic environment required by RHEL for Real Time. -
rteval
evaluates system suitability for RHEL for Real Time. -
rteval-loads
provides source code forrteval
loads. -
tuned-profiles-realtime
includes the additionalTuneD
profiles targeted to real-time.
-
Optional: Additionally, the
tuna
package contains a tool that helps tune the real-time kernel workload, greatly automating CPU isolation and thread affinity operations from the command line or the GUI. This package is available in the base RHEL 9 repository.# dnf install tuna
When the RHEL for Real Time kernel is installed, it is automatically set to be the default kernel and is used on the next boot. You can also configure other existing kernels variants, such as, kernel
, kernel-debug
, or kernel-rt-debug
as the default boot kernel. For more information, see Configuring kernel-rt as the default boot kernel.
Verification
Check the installation location and verify that the components have been installed successfully.
# rpm -ql realtime-setup /etc/security/limits.d/realtime.conf /etc/sysconfig/realtime-setup /etc/udev/rules.d/99-rhel-rt.rules /usr/bin/realtime-setup /usr/bin/rt-setup-kdump /usr/bin/slub_cpu_partial_off /usr/lib/.build-id /usr/lib/.build-id/a4 /usr/lib/.build-id/a4/da77908aa4c6f048939f3267f1c552c456d117 /usr/lib/systemd/system/rt-entsk.service /usr/lib/systemd/system/rt-setup.service /usr/sbin/kernel-is-rt /usr/sbin/rt-entsk
Additional resources
1.3. Available RPM packages in the RHEL for Real Time repository
The Red Hat Package Manager (RPM) for RHEL for Real Time repository includes the following packages:
-
kernel-rt
package, which is the RHEL for Real Time kernel package. - RHEL for Real Time kernel test packages, which contains test programs for the real-time kernel.
- RHEL for Real Time debugging packages, which are for debugging and code tracing.
RPM package name | Description | RT-specific | Required |
---|---|---|---|
| Low latency and preemption functionality | Yes | Yes |
RPM package name | Description | RT-specific | Required |
---|---|---|---|
| Headers and libraries for kernel development | Yes | No |
| RHEL for Real Time kernel with debugging functions compiled in (slow) | Yes | No |
| Headers and libraries for development on debug kernel | Yes | No |
| Utilities for measuring system latencies and for proving that priority-inheritance mutex functions properly | No | No |
The debugging packages are provided to use with the perf
, trace-cmd
, and crash
utilities for analyzing kernel crash dumps. The debugging packages include symbol tables and are quite large. For this reason, the debugging packages are separately delivered from the other RHEL for Real Time packages. You can download the debugging packages from RHEL for Real Time - Debug RPMs
repository.
RPM package name | Description | RT-specific | Required |
---|---|---|---|
|
Symbols for profiling and debugging use, such as | Yes | No |
| Symbols for profiling and tracing | Yes | No |
1.4. Post installation instructions
After you install the real-time kernel ensure that:
- To achieve optimal low-latency determinism, you perform RHEL for Real Time specific system tuning.
- You know about the module compatibility of the real-time kernel and the standard kernel.
-
To enable
kdump
, you must configure RHEL for Real Time to provide crash dump information by enablingkexec/kdump
. - Verify that the Real Time kernel is the default kernel.
Module compatibility of the real-time kernel and the standard kernel
The real-time kernel differs substantially from the standard Red Hat Enterprise Linux 9 kernel. As a consequence, third-party kernel modules are incompatible with RHEL for Real Time.
Kernel modules are inherently specific to the kernel they are built for. The real time kernel is substantially different from the standard kernel, and so are the modules. Therefore, you cannot take third-party modules from Red Hat Enterprise Linux 9 and use them as-is on the real-time kernel.
If you must use a third-party module, you must recompile it with the RHEL for Real Time header files, which are available in the RHEL for Real Time development and test packages.
The third-party drivers for the standard Red Hat Enterprise Linux 9 but do not currently have a custom build for RHEL for Real Time are:
- EMC Powerpath
- NVidia graphics
- Advanced storage adapter configuration utilities from Qlogic
The user space syscall
interface is compatible with RHEL for Real Time.
Additional resources