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.
Target System Requirements
- Intel Edge Controls for Industrial Documentation
- A stable internet connection.
- Network Adaptors with TSN support:
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:
Recommended BIOS Optimizations
This module provides a BIOS optimization option table consistent with Intel ECI. Users can optimize the configuration of their system based on the BIOS options on the table.
Boot Command Line Check
This module checks the Real-Time OS boot command line parameters and recommends settings based on the best-known configurations.
Kernel Configuration Check
This module checks the Real-Time OS kernel configuration and recommends settings based on the best-known configurations.
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.
- 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.
Cyclictest
- Cyclictest tool is used for Preempt-RT kernel.
- 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 60 seconds of data of three different cores.
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.
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.
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.
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.
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.
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.
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.
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.
Generate CPU Architecture Diagram
This module will generate CPU architecture diagram automatically after running Real-Time Performance Measurement Tool.
Refer below screenshot for a sample CPU architecture diagram generated in the target output folder:
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.
PLCopen Motion Control Sanity Checks
This module runs three PLCopen Motion Control sanity checks to check the status of PLCopen Motion Control modules.
PLCopen Motion Control Recurring Testing
This module runs one PLCopen Motion Control recurring test.
CANOpen Sanity Checks
This module runs three 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”.
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”
- To execute Latency in RTPM:
- 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, for multi cores: 1,2,3,4):
- CYCLICTEST_RUN_CORE=1 Or
- CYCLICTEST_RUN_CORE=1,2,3,4
- To set Cyclictest test duration in seconds (for example, 1 hour):
- CYCLICTEST_TEST_DURATION=”3600”
- To execute Cyclictest in RTPM:
- 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”
- To execute Rhealstone in RTPM:
- 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
- To execute MSI Latency in RTPM:
- 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
- To execute MSI Jitter in RTPM:
- 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
- To execute MMIO Latency in RTPM:
- 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
- To execute Jitter in RTPM:
- 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
- To execute Caterpillar in RTPM:
- 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
- To execute LMbench in RTPM:
- 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
- To enable stress-ng:
- RTPM main progress setup.
- To set up the “RTPM” main progress core affinity (for example, core 1):
- RTPM_MAIN_CORE=1
- To set up the “RTPM” main progress core affinity (for example, 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
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.
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.
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.
- 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"
- Default value is “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"
- Default value is “192.168.1.2”.
- The number of packets used in this measurement
- Default value is 100000, value range from 10 to 10000000.
- PACKET_NUMBER=100000
- Default value is 100000, value range from 10 to 10000000.
Command Line Parameters
To run the TSN test module in command line with the specified parameters, perform the following:
- [Board A] Change directory to:
cd $HOME/edge_software_device_qualification/Edge_Software_Device_Qualification_For_RTPM_<version>/ESDQ/
- [Board A] Get the TSN test module ID <TSN_MODULE_ID>:
./esdq module list
-
[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
- Select Configure & Download to download Intel® ESDQ ECI and then follow the steps below to install it.
Configure & Download
- Select Request Access.
- After your access is approved, the following configure screen appears. Select Version or Tag, Target System, and Distribution and then click Download.
- Copy and save the Product Key.
- Click Edit to reconfigure the options and download another version of ESDQ for ECI in subsequent releases.
- Transfer the downloaded Intel® ECI package to the target Debian* system.
- 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"/>
- Prepare the target system for Intel® ECI installation. Make sure of the following:
- The target system is Ubuntu 22.04 Preempt-RT patched Linux
- 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 git
- 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
-
- Remove current rt-tests
- All RTPM dependent modules are installed.
- For Xenomai patched Linux.
- sudo apt install rtpm-xenomai
- For Preempt-RT patched Linux.
- sudo apt install rtpm
- For Xenomai patched Linux.
- 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
- Provide executable permission to edgesoftware.
chmod +x ./edgesoftware
- Run the following command to install Intel® ESDQ 6.0 and Intel® ECI. .
./edgesoftware install
- 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).
- When the installation is complete, you will see the message “Installation of package complete” and the installation status for each module.
- Find the module ID for the Intel® ESDQ:
./edgesoftware list --default
Example output:
- 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
- Change directory to RTPM:
cd $HOME/edge_software_device_qualification/Edge_Software_Device_Qualification_For_RTPM_<version>/ESDQ
- Get RTPM test module ID:
./esdq module list
Example output:
- Use the ESDQ command parameter “-arg” to pass the arguments to RTPM test module:
esdq --verbose module run --arg “-a” RTPM
- These are three situations that need attention:
- Pass a blank parameter by ESDQ “--arg” command like below:
esdq --verbose module run --arg “” RTPM
- Pass invalid parameters by the ESDQ “--arg” command:
esdq --verbose module run --arg “invalid parameters” RTPM
- Skip the esdq “--arg” command:
esdq --verbose module run RTPM
For more ESDQ command line parameters information, refer to Intel® Edge Software Device Qualification (Intel® ESDQ) Overview.
- Pass a blank parameter by ESDQ “--arg” command like below:
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
- [Board B] Enable Root login via SSH
- [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
- [Board A] Configure IP address:
ip addresss add 192.168.1.1/24 dev enp1s0
-
[Board B] Configure IP address:
ip address add 192.168.1.2/24 dev enp1s0
-
[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.
-
[Board A] Get TSN test module ID <TSN_MODULE_ID>:
esdq module list
-
[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"
- [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
- [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
Current Version 1.12 (Package Version 2024.1)
Version 1.12
- Replace Real-Time Readiness Check with Recommended BIOS Optimizations
- Add more check entries in Boot Command Line Check function
- Add Generate CPU Architecture Diagram function
- Update Real-Time Performance Test Cyclictest benchmark, support multi-core test
Version 1.11
- 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
- Support Intel® Ethernet Controller I210-IT and Intel Atom® x6000E Series Processors integrated network apdators.
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.