Intel® Edge Software Device Qualification (Intel® ESDQ) for Intel® Edge Controls for Industrial (Intel® ECI)

ID 679654
Updated 4/11/2024
Version 2023.2
Public

author-image

By

Overview

Intel® Edge Software Device Qualification (Intel® ESDQ) for Intel® Edge Controls for Industrial (Intel® ECI) package provides customers with the capability to run Intel provided ECI Real Time Performance Measurement (RTPM) and Time-Sensitive Networking (TSN) test suites at the target system, with the goal of enabling partners to measure their platform performances for Intel® ECI package.   

The information below is specific to the Intel® ESDQ for ECI package test modules. For documentation on the Intel® ESDQ CLI binary, refer to Intel® Edge Software Device Qualification (Intel® ESDQ) Overview.

Select Configure & Download to download Intel® ESDQ for Edge Controls for Industrial (ECI) and refer to Get Started for installation steps.  

Configure & Download


Target System Requirements 


How It Works

Real Time Performance Measurement (RTPM) Test Modules

Real Time Performance Measurement (RTPM) 

Real-time computing is often critical to industrial usage scenarios. Intel real-time solutions are focused on hard real-time use cases where capability fails if use cases cannot be executed within the allotted time span. Examples of the usage scenarios include robotics, automotive, and so on.  

On a real-time computing system, there are several factors that could impact the latency of reaction to the trigger event. These factors include hardware design, BIOS configuration, OS kernel configuration, system settings, and so on. RTPM is designed to check the key settings of the system and help you to identify hotspots of the system for real-time performance and give a recommendation based on the best-known configurations. In addition, it provides a way to measure the system scheduling latency with some open-source tools.

The RTPM interacts with the Intel® ESDQ CLI through a common test module interface layer (TMI), which is part of the Intel® ESDQ binary.

Intel® ESDQ generates a complete test report in HTML format, along with detailed logs packaged as one zip file, which you can manually choose to email to the ESH support team.

RTPM contains the following test modules:

Real-Time Readiness Check 

This module leverages one of the tools in Intel® Time Coordinated Computing (Intel® TCC) to check the many attributes that may affect real-time performance.

Screenshot of real-time performance checker that includes Software SRAM dependencies checker and Real-time BIOS capabilities checkers. It shows checker name, description, and notes for each.

This module:

  • Verifies whether the system has a supported processor, BIOS, and OS
  • Checks for features that may affect real-time performance, such as Intel® Turbo Boost Technology, Enhanced Intel SpeedStep® Technology, and processor power-saving states
  • Reports CPU and GPU frequencies
  • Operates at the OS level

Boot Command Line Check 

This module checks the Real-Time OS boot command line parameters and recommends settings based on the best-known configurations.

Screenshot of Real-Time OS boot command line parameters and BKCs.

Kernel Configuration Check 

This module checks the Real-Time OS kernel configuration and recommends settings based on the best-known configurations.

Screenshot of Real-Time OS kernel configuration check.

Real-Time Performance Test 

This module contains the following benchmarks to evaluate the performance of the target system. 

Latency
  • Latency tool is used for Xenomai* kernel. 
    Screenshot of latency test processing with a test duration of 60s.
     
  • After the Latency test successfully finishes, the program will generate the time series data diagram automatically in your test result output folder. You will see output similar to the following screenshot, which shows 10 minutes of data.

          Screenshot of latency datagram showing 10 minutes of data.

Cyclictest
  • Cyclictest tool is used for Preempt-RT kernel.
    Screenshot of Processing Cyclictest test
     
  • After the Cyclictest successfully finishes, the program will generate the time series data diagram automatically in your test result output folder. You will see output similar to the following screenshot, which shows 10 minutes of data.
    Screenshot of Cyclictest datagram showing 10 minutes of data.
Rhealstone 

Rhealstone is a measurement targeted specifically toward true multitasking solutions. This benchmark shows four categories of activity crucial to the performance of real-time systems:

  • Task switching time
  • Preemption time
  • Semaphore shuffling time
  • Deadlock breaking time

The results obtained from Rhealstone benchmark are measured time to perform task switching, preemption, semaphore shuffling, and deadlock breaking. Lower values are better.

Screenshot of Processing Rhealstone benchmark with 5 test cycles.

MSI-Latency 

MSI (Message Signaled Interrupt) Latency measures interrupt latency for MSIs generated by a discrete or integrated peripheral device, such as the Intel® Ethernet Controller I210 and serviced by the Intel® architecture core. This benchmark measures i210 kernel module MSI interrupt triggered back latency.

NOTE: This benchmark only functions in tandem with an Intel® Ethernet Controller I210. 

Screenshot of Processing MSI Latency with a duration of 60s.
MSI-Jitter 

MSI (Message Signaled Interrupt) jitter benchmark tool is a benchmark tool to check the jitter of cyclical MSI from Intel® Ethernet Controller I210. This tool records each cyclical MSI timestamps in the software interrupt handler and calculates delta between each timestamps and compares the delta with cycle time as the jitter.

NOTE: This benchmark only functions in tandem with an Intel® Ethernet Controller I210. 

Screenshot of Processing MSI Jitter test with duration of 60s.
MMIO-Latency

MMIO-latency is a simple driver that creates an affinitized thread to read a virtual map physical address (Memory-mapped I/O). Memory read latency is measured. The thread is created and started on initialization and loops several times. It also provides a char device that reads the current statistic counters using inline assembly and kernel functions to get a very close benchmark.

Screenshot of MMIO-latency

Jitter

The Jitter benchmark measures the execution time variation of a CPU test workload. The performance of the workload is impacted by kernel interrupts. Minimizing these interrupts also minimizes the jitter that applications could potentially experience.

Screenshot of Jitter

Caterpillar 

The Caterpillar benchmark measures the execution time variation of a memory test workload. The performance of the workload is impacted by cache misses. Using CAT improves application performance by assigning CPU affinity to cache ways, which can be dedicated to real-time applications.

Screenshot of Caterpillar

LMbench 

LMbench is a suite of simple, portable, ANSI/C microbenchmarks for UNIX/POSIX. In general, it measures two key features: latency and bandwidth. LMbench is intended to provide system developers an insight into the basic costs of key operations.

Screenshot of LMbench

lat_mem_rd measures memory read latency for varying memory sizes and strides. The results are reported in nanoseconds per load and have been verified to be accurate to within a few nanoseconds on an SGI Indy. The entire memory hierarchy is measured, including onboard cache latency and size, external cache latency and size, main memory latency, and TLB miss latency. Only data accesses are measured; the instruction cache is not measured.

Check Installation Status of ECI Components

This module checks the installation status of ECI components in the ECI system. For more information to install and setup the ECI Components, refer here.

Screenshot of ECI Components Installation Status Check

PLCopen Motion Control Sanity Checks

This module runs three PLCopen Motion Control sanity checks to check the status of PLCopen Motion Control modules.

Screenshot of PLCOpen Motion Control PLCOpen Motion Control Sanity Checks

PLCopen Motion Control Recurring Testing

This module runs one PLCopen Motion Control recurring test.

Screenshot of PLCOpen Motion Control Recurring Test

CANOpen Sanity Checks

This module runs three CANOpen sanity checks.

CanOpen Sanity Checks

RTPM Test Configurations

For RTPM, there are two ways to set up the running configurations: one is to use the “Configuration File Parameters”, and another is to use the “Command Line Parameters”.

The RTPM command line interface receives the “Command Line Parameters”, and then translates them into “Configuration File Parameters”. So, the “Command Line Parameters” have higher priority than the “Configuration File Parameters”. The “Command Line Parameters” only control the benchmarks enable status. For more benchmark parameter settings, you need to use the “Configuration File Parameters”.

Screenshot of Configuration File Parameters

 

 

Configuration File Parameters

The performance test can be configured in the esdq/modules/Rtpm_Test_Module/rt_performance_test/test_cfg file. 

  • Latency 
    • To execute Latency in RTPM: 
      • ENABLE_LATENCY=”TRUE” 
    • To NOT execute Latency or Cyclictest in RTPM:
      • ENABLE_LATENCY=”FALSE”.
    • To set CPU core affinity (for example, core 1):
      • LATENCY_RUN_CORE=1
    • To set Latency  test duration in seconds (for example, 1 hour):
      • LATENCY_TEST_DURATION=”3600”
  • Cyclictest
    • To execute Cyclictest in RTPM:  
      • ENABLE_CYCLICTEST=”TRUE”  
    • To NOT execute Cyclictest in RTPM: 
      • ENABLE_ CYCLICTEST =”FALSE”. 
    • To set CPU core affinity (for example, core 1):
      • CYCLICTEST_RUN_CORE=1
    • To set Cyclictest test duration in seconds (for example, 1 hour): 
      • CYCLICTEST_TEST_DURATION=”3600”
  • Rhealstone
    • To execute Rhealstone in RTPM:
      • ENABLE_RHEALSTONE=”TRUE”
    • To NOT execute Rhealstone in RTPM:
      • ENABLE_ RHEALSTONE =”FALSE”.
    • To set CPU core affinity (for example, core 1):
      • RHEALSTONE_RUN_CORE=1
    • To set Rhealstone test cycles [0 to N] (for example, 10000):
      • RHEALSTONE_CYCLES=”10000”
  • MSI Latency 
    • To execute MSI Latency in RTPM:
      • ENABLE_MSI_LATENCY=”TRUE”
    • To NOT execute MSI Latency in RTPM:
      • ENABLE_MSI_LATENCY=”FALSE”
    • To set the Intel® Ethernet Controller I210 ID: Use lspci command to find out the ethernet controller ID (for example, 02:00.0).
      • MSI_LATENCY_IGBID=”02:00.0”
    • To set CPU core affinity (for example, core 1): 
      • MSI_LATENCY_RUN_CORE=”1” 
    • Run IRQ as a pthread [0] or in legacy mode [1] (for example, legacy mode):
      • MSI_LATENCY_IRQ_SPEC=1
    • Duration (clock ticks) for which the interrupts are blocked after requesting MSI (for example, block 100 clock ticks):
      • MSI_LATENCY_BLOCK_IRQ=100
    • To set period between interrupts in milliseconds:
      • MSI_LATENCY_IRQ_PERIOD=10
    • To set the test duration in seconds (for example, 1 hour):
      • MSI_LATENCY_TEST_DURATION=3600
  • MSI Jitter
    • To execute MSI Jitter in RTPM:
      • ENABLE_MSI_ JITTER =”TRUE”
    • To NOT execute MSI Jitter in RTPM:
      • ENABLE_MSI_ JITTER =”FALSE”
    • To set the Intel® Ethernet Controller I210 ID: Use lspci command to find out the ethernet controller ID (for example, 02:00.0).
      • MSI_ JITTER _IGBID=”02:00.0”
    • To set CPU core affinity (for example, core 1): 
      • MSI_ JITTER _RUN_CORE=”1” 
    • To set period between interrupts in milliseconds:
      • MSI_ JITTER _IRQ_PERIOD=10
    • To set the test duration in seconds (for example, 1 hour):
      • MSI_ JITTER _TEST_DURATION=3600
  • MMIO Latency
    • To execute MMIO Latency in RTPM:
      • ENABLE_MMIO_LATENCY=”TRUE”
    • To NOT execute MMIO Latency in RTPM:
      • ENABLE_MMIO_LATENCY=”FALSE”
    • To set the MMIO address (for example, a123000).
      • MMIO_LATENCY_PHYSICAL_ADDRESS=”a123000”
    • To set CPU core affinity (for example, core 1):
      • MMIO_RUN_CORE=1
    • To set if block the IRQs respectively (for example, 1 or 0, default 0 is to not block IRQs.).
      • MMIO_LATENCY_IRQ_STATE=0
    • To set the test duration in seconds (for example, 5 mins):
      • MMIO_LATENCY_DURATION=300
  • Jitter
    • To execute Jitter in RTPM: 
      • ENABLE_JITTER_TEST=”TRUE” 
    • To NOT execute Jitter in RTPM 
      • ENABLE_JITTER_TEST =”FALSE” 
    • To set CPU core affinity (for example, core 1):
      • JITTER_RUN_CORE=1
    • To set display update rate (for example 20000):
      • JITTER_DISPLAY_UPDATE_RATE=20000
    • To set loop count for code block (for example, 80000):
      • JITTER_LOOP_COUNT=80000
    • To set sample counts after which program terminates (for example, 200)
      • JITTER_SAMPLE_COUNTS=200
  • Caterpillar
    • To execute Caterpillar in RTPM: 
      • ENABLE_CATERPILLAR=”TRUE” 
    • To NOT execute Caterpillar in RTPM 
      • ENABLE_CATERPILLAR=”FALSE” 
    • To set CPU core affinity (for example, core 1):
      • CATERPILLAR_RUN_CORE=1
    • To set number of test cycles to complete per sample (for example, 10000):
      • CATERPILLAR_TEST_CYCLES=10000
    • To set number of iterations to execute operation (for example, 50000):
      • CATERPILLAR_TEST_ITERATIONS=50000
    • To set maximum number of samples to take (for example, 200)
      • CATERPILLAR_MAX_SAMPLES=200
  • LMbench
    • To execute LMbench in RTPM: 
      • ENABLE_LMBENCH=”TRUE” 
    • To NOT execute LMbench in RTPM 
      • ENABLE_ LMBENCH =”FALSE” 
    • To set CPU core affinity (for example, core 1):
      • LMBENCH_RUN_CORE=1
    • To set test memory size in megabytes (for example, 128):
      • LMBENCH_TEST_MEMORY_SIZE=128
  • Stress: Stress-ng is used to simulate non-real-time workload in the target system during the performance test. 
    • To enable stress-ng:
      • ENABLE_STRESS=”TRUE”
    • To disable stress-ng:
      • ENABLE_STRESS=”FALSE”
    • To set up “stress” workload core affinity (for example, core 0):
      • STRESS_CORE_SETUP_STRESS=0
    • To set up “stress-ng” workload core affinity (for example, core 2):
      • STRESS_CORE_SETUP_STRESS_NG=2
    • To set up “hackbench” workload core affinity (for example, core 3):
      • STRESS_CORE_SETUP_HACKBENCH=3
    • To set the timeout of stress workload after test complete in seconds (for example, 3 seconds):
      • STRESS_TIMEOUT=3
  • RTPM main progress setup.
    • To set up the “RTPM” main progress core affinity (for example, core 1):
      • RTPM_MAIN_CORE=1

 

Command Line Parameters 

RTPM test module can be executed separately. It supports the following command line parameters:

Specify log file path (required parameter). 

-p or --logpath

 Specify csv log file name (required parameter). 

-n or --logname 

 Execute Latency  test. If not specified, ENABLE_LATENCY setting in configuration file will be used. 

-l or --latency

 Execute Cyclictest test. If not specified, ENABLE_CYCLICTEST setting in configuration file will be used.

-c or --cyclictest

 Execute Rhealstone test. If not specified, ENABLE_RHEALSTONE setting in configuration file will be used. 

-r   or --rhealstone

 Execute MSI Latency test. If not specified, ENABLE_MSI_LATENCY setting in configuration file will be used. 

-ml or --msilatency

 Execute MSI Jitter test. If not specified, ENABLE_MSI_JITTER setting in configuration file will be used. 

-mj or --msijitter

 Execute MMIO-Latency test. If not specified, ENABLE_MMIO_LATENCY setting in configuration file will be used.  

-mo or --mmiolatency

 Execute Caterpillar test. If not specified, ENABLE_CATERPILLAR setting in configuration file will be used.   

-cp or --caterpillar

 Execute Jitter test. If not specified, ENABLE_JITTER_TEST setting in configuration file will be used.   

-j or --jitter

 Execute LMbench test. If not specified, ENABLE_LMBENCH setting in configuration file will be used.

-lm or --lmbench

 Add stress during performance test. If not specified, ENABLE_STRESS setting in configuration file will be used. 

-s or --stress

 Execute all performance tests, except Latency and Cyclictest. The program will identify the current Real-Time framework. If it is Xenomai, it will run Latency, otherwise if it is Preempt-RT, it will run Cyclictest.

If not specified, settings in configuration file will be used. 

-a or --all

 Show help. 

-h or --help

Parameter Mapping Table 

The following table provides the mapping between the command line parameters and the configuration file parameters. When the command line takes effect, if the “Command Line Parameter” is not given, RTPM will use “Configuration File Parameter” as the default setup.

Command Line Parameter Configuration File Parameter
-l or --latency ENABLE_LATENCY=”TRUE”
-ld or --latency_duration LATENCY_TEST_DURATION=60
-c or --cyclictest ENABLE_CYCLICTEST=”TRUE”
-cd or --cyclictest_duration CYCLICTEST_TEST_DURATION=60
-r or --rhealstone ENABLE_RHEALSTONE=”TRUE”
-rc or –rhealstone_cycles RHEALSTONE_CYCLES=2
-ml or --msilatency ENABLE_MSI_LATENCY=”TRUE”
-mld or --msilatency_duration MSI_LATENCY_TEST_DURATION=60
-mj or –msijitter ENABLE_MSI_JITTER=”TRUE”
-mjd or --msijitter_duration MSI_JITTER_TEST_DURATION=60
-mo or –mmiolatency ENABLE_MMIO_LATENCY=”TRUE”
-mod or --mmiolatency_duration MMIO_LATENCY_TEST_DURATION=300
-cp or --caterpillar ENABLE_CATERPILLAR=”TRUE”
-j or --jitter ENABLE_JITTER_TEST=”TRUE”
-lm or --lmbench ENABLE_LMBENCH=”TRUE”
-a or --all

ENABLE_LATENCY=”TRUE” (For Xenomai only)

ENABLE_CYCLICTEST=”TRUE”  (For Preempt-RT only)

ENABLE_RHEALSTONE=”TRUE”

ENABLE_MSI_LATENCY=”TRUE”

ENABLE_MSI_JITTER=”TRUE”

ENABLE_MMIO_LATENCY=”TRUE”

ENABLE_CATERPILLAR=”TRUE”

ENABLE_JITTER_TEST=”TRUE”

ENABLE_LMBENCH=”TRUE”

 

Time-Sensitive Networking (TSN) Test Modules

 

TSN Performance Measurement

Time-sensitive networking (TSN) is set to reshape the industrial communication landscape and lay the foundation for the convergence of Information Technology (IT) and Industrial Operations Technology (OT). By bringing industrial-grade robustness and reliability to Ethernet, TSN offers an IEEE standard communication technology that enables interoperability between standard-conformant industrial devices from any vendor.

On a TSN system, there are several factors that could impact the deterministic of real-time data streams. These factors include hardware design, BIOS configuration, OS kernel configuration, system settings, and so on. TSN performance measurement module is designed to check the key settings of the system and help you to identify hotspots of the system for real-time network performance and give a recommendation based on best-known configuration. In addition, it provides a way to measure the real-time data transmission performance with some open-source tools.

The following figure shows the hardware setup for the TSN performance test. Each platform contains an Intel® i225/I226-LM/IT/AT Ethernet Controller with TSN support. Two devices, Board A & Board B are connected through a CAT-5E Ethernet cable. The TSN performance measurement module will test the TSN performance of Board A. For Board B, it is a KPI recorder.


The TSN performance measurement module interacts with the Intel® ESDQ CLI through a common test module interface (TMI) layer, which is part of the Intel® ESDQ binary.
Intel® ESDQ generates a complete test report in HTML format, along with detailed logs packaged as one zip file, which you can manually email to the ESH support team, if required.

TSN contains the following test modules.

Real-Time Readiness Check

This module leverages one of the tools in Intel® Time Coordinated Computing (Intel® TCC) to check the many attributes that may affect time-sensitive network performance:

  • Verifies whether the system has a supported processor, BIOS, and OS
  • Checks for features that may affect real-time performance, such as Intel® Turbo Boost Technology, Enhanced Intel SpeedStep® Technology, and processor power-saving states
  • Reports CPU and GPU frequencies
  • Operates at the OS level

Screenshot of Real-Time readiness Check

Screenshot of Real-Time Readiness Check

 

Boot Command Line Check

This module checks the real-time OS boot command line parameters which may affect time-sensitive network performance and recommends settings based on best-known configurations.

Screenshot of TSN Boot Command Line Check

 

Kernel Configuration Check

This module checks the real-time OS kernel configuration that may affect time-sensitive network performance and recommends settings based on best-known configurations.

Screenshot of TSN Kernel Config Check

 

TSN Performance Test 

This module contains the following benchmarks to evaluate the performance of TSN.

This module contains the following benchmarks to evaluate the performance of TSN.  It will execute all benchmarks after it is started on Board A.

  • IEEE 802.1Qbv Time Aware Shaper
  • Time-Based Scheduling
  • Bounded Low-latency With TSN
  • Bounded Low-latency Without TSN
IEEE 802.1Qbv Time Aware Shaper

Board A fill all queues with packets. Board B receives the packets and records the packet arrival time.

Queues configuration on board A
  • Queue 0 open at 0us offset, duration 250us, for priority 3.
  • Queue 1 open at 250us offset, duration 250us, for priority 1.
  • Queue 2 open at 500us offset, duration 250us, for priority 2.
  • Queue 3 open at 750us offset, duration 250us, for priority 0, 4-7.
Traffic configuration on board A
  • ptp traffic priority 3.
  • Benchmark traffic priority 0-3, unlimited transmit rate.

Board B groups the arrival time by transmit queue, measure transmit queue opening accuracy by arrival time.

Time-Based Scheduling

Board A transmits packets precisely at 1ms intervals while noise traffic is running in the background. Board B receives the packets and records the interval time between two adjacent packets.

Queues configuration on board A
  • Queue 0 open at 0us offset, duration 250us, for priority 3.
  • Queue 1 open at 250us offset, duration 250us, with ETF qdisc offloading, for priority 1.
  • Queue 2 open at 500us offset, duration 250us, for priority 2.
  • Queue 3 open at 750us offset, duration 250us, for priority 0, 4-7.
Traffic configuration on board A
  • ptp traffic priority 3.
  • Benchmark traffic priority 1, transmit interval 1ms.
  • Noise traffic priority 0, unlimited transmit rate.

Comparison board B recording interval with board A transmit interval, the benchmark measures the Time-Based Scheduling accuracy.

Bounded Low-latency With TSN

Transmit and receive packets between board A & B, showing the userspace-to-userspace latency while noise traffic is running in the background.

Queues configuration on board A
  • Queue 0 open at 0us offset, duration 250us, for priority 3.
  • Queue 1 open at 250us offset, duration 250us, with ETF qdisc offloading, for priority 1.
  • Queue 2 open at 500us offset, duration 250us, for priority 2.
  • Queue 3 open at 750us offset, duration 250us, for priority 0, 4-7.
Traffic configuration on board A
  • ptp traffic priority 3.
  • Benchmark traffic priority 1.
  • Noise traffic priority 0, unlimited transmit rate.
Bounded Low-latency Without TSN

Transmit and receive packets between board A & B, showing the userspace-to-userspace latency while noise traffic is running in the background.

Queues configuration on board A
  • Default FIFO qdisc.
Traffic configuration on board A
  • ptp traffic priority 3.
  • Benchmark traffic priority 1.
  • Noise traffic priority 0, unlimited transmit rate.

TSN Test Configurations

Configuration File Parameters

The performance test parameters can be configured in the esdq/modules/Tsn_Test_Module/test_cfg file.

Screenshot of TSN Config File Parameters

  • The IP address of Board A. The value should be the string matching  IP address pattern.
    • Default value is “192.168.1.1”.
      • BOARD_A_IP="192.168.1.1"
  • The IP address of Board B. The value should be the string matching  IP address pattern.
    • Default value is “192.168.1.2”.
      • BOARD_B_IP="192.168.1.1"
  • The number of packets used in this measurement
    • Default value is 100000, value range from 10 to 10000000.
      • PACKET_NUMBER=100000

Command Line Parameters

To run the TSN test module in command line with the specified parameters, perform the following:

  1. [Board A] Change directory to: 
    cd $HOME/edge_software_device_qualification/Edge_Software_Device_Qualification_For_RTPM_<version>/ESDQ/
    Where <version> is the package version that was downloaded.
     
  2. [Board A] Get the TSN test module ID <TSN_MODULE_ID>:
    ./esdq module list

        

  1.  [Board A] Run the TSN test module:

    esdq --verbose module run TSN

     


Get Started 

Intel® ESDQ 6.0 CLI tool is installed as part of the Intel® ESDQ for Intel® ECI.

NOTE: The screenshots may show a package version number that is different from the current release. See the Release Notes for information on the current release. 

Download and Install Intel® ESDQ for Intel® ECI 

  1. Select Configure & Download to download Intel® ESDQ ECI and then follow the steps below to install it. 
    Configure & Download
     
  2. Select Request Access
    Download Intel ESDQ Intel ECI
     
  3. After your access is approved, the following configure screen appears. Select Version or Tag, Target System, and Distribution and then click Download.
    Download Recommended Configuration

 

  1. Copy and save the Product Key
    Copy product key
     
  2. Click Edit to reconfigure the options and download another version of ESDQ for ECI in subsequent releases.
  3. Transfer the downloaded Intel® ECI package to the target Debian* system.
  4. View the edgesoftware_configuration.xml included in the edge software zip package and look for the Intel® ESDQ ingredient and test modules for Intel® ECI. 
     <project path="installation/src" id="61421ecad393cc0020ed22d7" version="1.5" label="esdq/Rtpm_Test_Module"/>
  5. Prepare the target system for Intel® ECI installation. Make sure of the following: 
    • The target system is Debian 11 or Ubuntu 22.04
    • The apt source list is updated to the latest, and sudo, lsusb, and unzip are already installed. 
      • sudo apt update 
      • sudo apt install usbutils unzip python3-setuptools python3-psutil gnuplot pciutils dmidecode build-essential libnuma-dev
    • Python3 environment is set up correctly.
      • export LC_ALL=C.UTF-8
      • export LANG=C.UTF-8
    • Install rt-tests v2.6
      • Remove current rt-tests
        • apt remove -y rt-tests
      • Clone rt-tests
      • Compile and install rt-tests

        • cd rt-tests && git checkout v2.6

        • make all && make install

      • Create symbolic link for cyclictest (Remove /usr/bin/cyclictest if file exist.)

        • sudo ln -s /usr/local/bin/cyclictest /usr/bin/cyclictest

    • All RTPM dependent modules are installed. 
      • For Xenomai patched Linux. 
        • sudo apt install rtpm-xenomai 
      • For Preempt-RT patched Linux. 
        • sudo apt install rtpm 
    • Target system date is correct. 
      • Use “date” command to validate current system date. 
    • The eci-process-automation Deb package is installed for TSN testing. 
      • sudo apt install eci-process-automation
  6. Provide executable permission to edgesoftware
    chmod +x ./edgesoftware
  7. Run the following command to install Intel® ESDQ 6.0 and Intel® ECI. . 
    ./edgesoftware install
  8. During the installation, you will be prompted for the Product Key. You will find the product key in the email that you received from Intel confirming your download (or from the saved Product Key in the above step). The Product Key is contained in the email you received from Intel confirming your download (or from the saved Product Key in the step above). 
  9. When the installation is complete, you will see the message “Installation of package complete” and the installation status for each module. 
    Screenshot of Installation of Package Complete
     
  10. Find the module ID for the Intel® ESDQ: 
    ./edgesoftware list --default

    Example output:  

           

  1. After modules installation is completed successfully, configure ESDQ and add ESDQ binary path to system environment:  

           export PATH=$PATH:~/.local/bin


Run the Application

For the complete Intel® ESDQ CLI, refer to Intel® ESDQ CLI Overview.  The test modules are already available in the target system.

Single DUT Setup for RTPM

  1. Change directory to RTPM: 
    cd $HOME/edge_software_device_qualification/Edge_Software_Device_Qualification_For_RTPM_<version>/ESDQ
    Where <version> is the package version that was downloaded.
  2. Get RTPM test module ID:
    ./esdq module list

            Example output:

            

 

  1. Use the ESDQ command parameter “-arg” to pass the arguments to RTPM test module: 
    esdq --verbose module run --arg “-a” RTPM
  2. These are three situations that need attention: 
    1. Pass a blank parameter by ESDQ “--arg” command like below: 
      esdq --verbose module run --arg “” RTPM
      The RTPM will not receive any parameters and will use test_cfg setup to configure whole test progress. 
    2. Pass invalid parameters by the ESDQ “--arg” command: 
      esdq --verbose module run --arg “invalid parameters” RTPM
      The invalid parameter will be filtered and replace it with run all benchmarks, thus RTPM will run all benchmarks. 
    3. Skip the esdq “--arg” command: 
      esdq --verbose module run RTPM
      The RTPM will run all benchmarks. 

      For more ESDQ command line parameters information, refer to Intel® Edge Software Device Qualification (Intel® ESDQ) Overview.

The test report should look like the following example.

Note: The results shown below are for illustration only.

If the Latency or Cyclictest benchmark test finishes without any issue, the program will generate the time series data diagrams and integrate them into the HTML report similar to the following output:

 

Dual DUT Setup for TSN

 

  1. [Board B] Enable Root login via SSH
  2. [Board A & B] Install required packages:
apt install ethtool util-linux pciutils gnuplot tcc-tools-common net-tools checkclocks iperf3 bc linuxptp iotg-txrx-tsn jq
  1. [Board A] Configure IP address:
    ip addresss add 192.168.1.1/24 dev enp1s0

     

  2.  [Board B] Configure IP address:

    ip address add 192.168.1.2/24 dev enp1s0
    

     

  3. [Board A] Change directory to esdq:

    cd $HOME/edge_software_device_qualification/Edge_Software_Device_Qualification_For_RTPM_<version>/ESDQ/

    Where <version> is the package version that was downloaded.

  4. [Board A] Get TSN test module ID <TSN_MODULE_ID>:

    esdq module list

  5. [Board A] Change the parameters in the configuration file. Specify IP address of Borad A & Board B:

vi Tsn_Test_Module/tsn_performance_test/test_cfg

   BOARD_A_IP="192.168.1.1"
   BOARD_B_IP="192.168.1.2"

 

  1. [Board A] Change the parameters in the configuration file. Specify Ping Board B to test the communication. If the output is 4, it means communication working:
ping 192.168.1.2 -4 -c 4 | grep "from 192.168.1.2" | wc -l

 

  1. [Board A] Run Intel® ESDQ TSN test and generate the report:
esdq --verbose module run TSN


The test report should look like the following example in folder “./reports/report.html” of Board A:
 

Note: The results shown below are for illustration only.


Release Notes 

RTPM Release Notes

Version 1.11 (Package Version 2023.1)

New in this Release

  • Added CANOpen sanity checks

Version 1.10 (Package Version 2022.4)

  • Added benchmark test durations command line parameters.
  • Added ECI components installation status check function.
  • Added PLCopen Motion Control sanity checks and recurring test.

Version 1.9 (Package Version 2022.3)

  • This version has been upgraded for compatibility with ECI 3.0.
  • If you plan to use the latest ECI 3.0, use it with the ESDQ_ECI 2022.3 version.

Version 1.8    

  • Leveraged gnuplot function to generate the Latency and Cyclictest test data diagram.
  • Changed the logic for the command line argument “-a”. When using the “-a” command, the RTPM will choose the Latency or Cyclictest benchmark according to system real-time framework instead of running them. For example, if system is Xenomai, the RTPM will choose Latency; if system is Preempt-RT, the RTPM will choose Cyclictest. You can also choose to use the separated command “-c -l” to run them in one test flow.
  • Separated stress workload core affinity setup, you can configure each “stress” workload core affinity in test_cfg now.

Version 1.7

  • Added the below Real-time Performance test. 
    • Jitter 
    • Caterpillar 
    • LMbench 
  • Separated Latency and Cyclictest test flow, and made Latency & Cyclictest run independently. 
  • Added more benchmark running information. 
  • Automatically compressed test result for archiving.

Version 1.6 

  • Support Real-Time Readiness Checker 1.3. 
  • Add below Real-time Performance test.  
    • MMIO-Latency

Version: 1.5 

  • Replace BIOS configuration check with: 
    • Real-Time Readiness Checker. 
  • Add below Real-time Performance test. 
    • Rhealstone 
    • MSI-latency 
    • MSI-Jitter

Version: 1.0

Initial features for recommended configuration.

 

Known Issues 

  • Some BIOS settings may be “LOCKED” or detected incorrectly in OS. Check BIOS manually for the recommended settings.

TSN Release Notes

Current Version: 1.8

New in this Release

  • Add below benchmarks:
    • IEEE 802.1Qbv Time Aware Shaper
    • Bounded Low-latency With TSN
    • Bounded Low-latency Without TSN
  • Change dual DUT operation to single DUT operation.
  • Use graph to present KPIs.
  • Support Intel® Ethernet Controller I226-IT/LM network adaptors.

Remove in this Release

Version: 1.7

  • Enable stress traffic when data transmission performance testing.

Version: 1.6

  • Remove OPC UA performance measurement case. 
  • Supports Intel Atom® x6000E Series Processors.

Version 1.5

  • Add new measurement of packet end-to-end transmission latency.

Version 1.2   

  • Supports Intel® Ethernet Controller I225-IT for Time-Sensitive Networking (TSN). 
  • Added performance measurement based on OPC UA stack.

Version 1.0

  • Initial features for recommended configuration.

Support Forum

If you are unable to resolve your issues, contact the Support Forum