Complete and Verify Deployment

Verify Real-time Linux Kernel

logo_debian logo_ubuntu

The section is applicable to:

../_images/target_generic9.png

Do the following to complete and verify ECI deployment:

  1. Reboot the target system, if not already done. When the system boots to the GRUB menu, there should be a menu entry for ECI at the top of the GRUB menu list. Select this menu entry, or wait five seconds for this menu entry to automatically boot.

    ../_images/102.png
  2. Let the system boot normally.

    Note: If the system does not boot, then secure boot may be enabled in the BIOS. You may either disable secure boot in the BIOS, or sign the Linux kernel by completing section UEFI Secure Boot.

  3. Login to the system and verify that the ECI Linux* Intel LTS PREEMPT_RT kernel is active by running the command uname -a. The output of this command should contain the following based on which kernel was installed:

    • Linux Intel LTS PREEMPT_RT kernel: ...-intel-ese-standard-lts-rt+ #1 SMP PREEMPT_RT ...

    • Linux Intel LTS Xenomai Dovetail kernel: ...-intel-ese-standard-lts-dovetail+ #1 SMP PREEMPT ...

    ../_images/112.png

Verify Benchmark Performance

After installing and verifying the real-time Linux kernel, it’s a good idea to benchmark the system to establish confidence that the system is properly configured. This section will guide you through some basic benchmarks you can use to evaluate your system.

Verify: Cyclictest Workload

Benchmark

Units

Version

Source

Cyclictest

microseconds

2.4 Debian 12 (Bookworm) / 2.5 Canonical® Ubuntu® 24.04 (Noble Numbat)

https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/snapshot/rt-tests-1.5.tar.gz

Cyclictest is most commonly used for benchmarking real-time (RT) systems. It is one of the most frequently used tools for evaluating the relative performance of an RT. Cyclictest accurately and repeatedly measures the difference between a thread’s intended wake-up time and the time at which it actually wakes up to provide statistics about the system’s latency. It can measure latency in real-time systems caused by the hardware, the firmware, and the operating system.

Verify: Install Cyclictest Workload

You can install this component from the ECI repository. Setup the ECI repository, then perform either of the following commands to install this component:

logo_debian logo_ubuntu

Install from meta-package
$ sudo apt install eci-realtime-benchmarking
Install from individual Deb package
$ sudo apt install rt-tests-scripts

Verify: Execute Cyclictest Workload

An example script that runs the cyclictest benchmark and the README is available at /opt/benchmarking/rt-tests. The script performs the following runtime optimizations before executing the benchmark:

  • Assigns benchmark thread affinity to last isolated core (typically core 3)

  • Assigns non-benchmark thread affinity to core 0

  • Changes the priority of benchmark thread to 95 (using: chrt -f 95)

  • Disables kernel machine check interrupt

  • Increases thread runtime utilization to infinity

To start the benchmark, run the following command:

$ sudo /opt/benchmarking/rt-tests/start-cyclic.py

Default parameters are used unless otherwise specified. Run the script with --help to list the modifiable arguments.

See also

Sanity Check 0 - Cyclictest Workload provides an example on how to run this benchmark and display the results.

Verify: Interpret Cyclictest Results

Short

Explanation

T

Thread: Thread index and thread ID

P

Priority: RT thread priority

I

Interval: Intended wake up period for the latency measuring threads

C

Count: Number of times the latency was measured that is, iteration count

Min

Minimum: Minimum latency that was measured

Act

Actual: Latency measured during the latest completed iteration

Avg

Average: Average latency that was measured

Max

Maximum: Maximum latency that was measured

On a non-realtime system, the result might be similar to the following:

T: 0 ( 3431) P:99 I:1000 C: 100000 Min:      5 Act:   10 Avg:   14 Max:   39242
T: 1 ( 3432) P:98 I:1500 C:  66934 Min:      4 Act:   10 Avg:   17 Max:   39661

The right-most column contains the most important result, that is, the worst-case latency of 39.242 ms / 39242 us (Max value).

On a realtime-enabled system, the result might be similar to the following:

T: 0 ( 3407) P:99 I:1000 C: 100000 Min:      7 Act:   10 Avg:   10 Max:      18
T: 1 ( 3408) P:98 I:1500 C:  67043 Min:      7 Act:    8 Avg:   10 Max:      22

This result indicates an apparent short-term worst-case latency of 18 us. According to this, it is important to pay attention to the Max values as these are indicators of outliers. Even if the system has decent Avg (average) values, a single outlier as indicated by Max is enough to break or disturb a real-time system.

Other Benchmarks

ECI provides many more benchmarks covering a wide range of performance metrics. See Benchmarks & Performance Characterization for a comprehensive guide on all the benchmarks ECI has to offer.

In addition, ECI provides curated Benchmark Data from a subset of benchmarks executed on validated hardware platforms. Use this data to compare the performance of your system to known good systems and assist in determining the best configuration for your application.

Install ECI Packages from Repository

At this point, you should be able to install most ECI packages using the package manager (APT/DNF) on this target system. Deb packages are available for Debian and Canonical® Ubuntu®, while RPM packages are available for Red Hat® Enterprise Linux®. Click each tab below to learn more.

For a complete list of available ECI packages, refer to ECI Packages Lists.

logo_debian logo_ubuntu

The following figure illustrates some of the meta-packages (high-level Deb packages) available for Debian and Canonical® Ubuntu®:

../_images/meta-packages2.png

Here are some meta-packages that you could start with:

Meta-package

Description

eci-realtime

Includes real-time optimization domain packages, such as benchmarks and Intel® Time Coordinated Computing.

eci-connectivity

Includes connectivity domain packages for Time Sensitive Networking and industrial fieldbuses, such as Intel® Edge Control Protocol Bridge, IEC-62541 OPC UA framework, and IEC-60802 TSN.

eci-softplc

Includes software PLC domain packages, such as CODESYS* IEC61131-3, IEC-61158 EtherCAT Master, IEC-61131-3 (part 1 & 2) Motion Control, and IEC-50325-4 CANopen.

For example, to install the eci-realtime meta-package, perform the following command:

$ sudo apt install eci-realtime

Where to go Next?