EtherCAT MainDevice Software Stack Performance

When using EtherCAT technology as a fieldbus, performance often plays a decisive role, but what is really meant by performance? Most often, performance is equated with speed. In the case of an EtherCAT network, this usually means a fast cycle time, around 1kHz or faster, to achieve fast control cycles. However, good performance can also be synonymous with a large amount of data, or with the ability to operate many devices from one controller.

In an EtherCAT network, these performance considerations come down to the EtherCAT MainDevice, and so therefore, an EtherCAT MainDevice software should meet all of these requirements:

  • Support short cycle times for fast device update rates
  • Support a large amount of cyclic process data
  • Be able to handle many EtherCAT devices

Furthermore, this must all be achieved with the lowest possible load on the controller. For a high performance EtherCAT network deployment, no compromises should be made in terms of functionality, error checking, diagnostic options, and reliability in the event of problems.

Design Considerations

For this to be successful, the EtherCAT MainDevice software must be designed for the most efficient possible use of the computing time. Some important design characteristics to achieve this are:

  • Include high performance and real-time capable Ethernet drivers (link layer) for a direct interaction with the Ethernet controller from the MainDevice software
  • Have no dependency on the operating system in the cyclic processing component
  • Support operation without interrupts
  • Have no internal tasks
  • Support time slicing for the processing of non-critical, non-cyclic tasks over several cycles
  • Limit acyclic (mailbox) data communication traffic
  • Utilize "C" macros and optimized compilers

In addition to reducing the average computing time consumption, the peak load (maximum computing time consumption or maximum bus utilization) of the controller is also a critical measure. An EtherCAT MainDevice software must therefore provide and manage a number of parameters (settings) so that this peak load is reduced. The goal is always that sufficient computing power is available for the actual application that runs above the MainDevice, and that the specified timing is always adhered to.

System Variables

Today, EtherCAT is used in a wide variety of different applications. Controller hardware ranges from small, embedded ARM processors like Cortex-M4, to powerful ARM multi-core processors like Cortex A57, or even high-end industrial PC/Server processors like Intel Core i5, i7, and even Xeon. EC-Master can be implemented on all of these systems but based on the application the maximum number of SubDevices, the maximum size of the cyclic data, and the shortest possible cycle time may all be very different. It is rare that when designing an EtherCAT system that the EtherCAT MainDevice is considered when selecting the required processor, but rather the actual application that is processing the data that dictates the decision.

Therefore, the following factors and variables determine the achievable performance and influence the selection of the required controller hardware:

  • Number and type of SubDevices devices
  • Size of the cyclic process data
  • Required cycle time
  • Required EtherCAT MainDevice features or capabilities (Distributed Clocks, Hot Connect, Redundancy, etc.)
  • Necessary computing power for the application

As we will demonstrate below, the acontis EtherCAT MainDevice software, EC-Master, takes all of the design considerations above, and manages all of the numerous system variables, and typically only requires 10-20% of the available CPU time.

Measurement Methodology

In order to support the selection of the control hardware, or to be able to make statements about what is possible with an existing hardware with regard to EtherCAT, one can utilize existing performance values or take new measurements. It is important that in the critical cyclic processing area of the application that the computing time consumption of all process paths that the EtherCAT MainDevice software runs through is measured correctly and precisely. In recent years, acontis has carried out a large number of performance measurements on different systems with different operating systems and the same reference network configuration. This data can be used for a rough assessment of the achievable performance on a given processor.

However, the most reliable values are of course obtained with a live measurement on the real hardware running the desired operating system with the actual desired network configuration. These measurements do not require any special know-how, or additional equipment, and can be carried out very easily with the example applications included in the delivery of the acontis EC-Master software: EcMasterDemo and EcMasterDemoDc. Within these demo applications, the execution times (minimum, maximum, and average) of the individual EC-Master job functions, along with the cycle time, are calculated and saved to the log file (or printed to the console).

Built-in Measurement Functions in the Example Application

In the acontis EC-Master, the integration of the application with the EC-Master in the cyclic part is done by synchronously calling certain functions, each of which fulfills a specific task. These functions, sometimes called jobs, are called from a high-priority task to control the network timing. In many instances, this high-priority task is already existing within the customer application, and so the functions can simply be called from this existing task. These jobs are called within the context of the application, so there is no interaction by the application with other tasks. The computing time consumption of the EC-Master stack can thus be determined very simply and accurately by measuring the computing time consumption of these functions.

The functions are:

At the beginning of a cycle, the newly received data (inputs) are first updated. This is done by evaluating the previously received EtherCAT frames when calling the Process Inputs job function. The application then takes this newly received data and calculates the data (outputs) that should be sent to the network. These new output data are then sent out when calling the Write Outputs job function. With the help of Direct Memory Access (DMA), the frame is transported from the memory to the Ethernet controller without loading the CPU and sent over the physical network. The frame then passes through all EtherCAT devices on the network and is automatically received on returning to the EC-Master without the need for an interrupt. The EC-Master state machine and the state machines on each individual SubDevice are then executed when calling the "EC-Master Administration" job function.

During the initial start-up process, all SubDevices must be transferred from the INIT state to the OPERATIONAL state in a series of sequential steps. The state machines are required during regular operation to handle acyclic communications like the handling of the download of a parameter via the mailbox protocol CAN application protocol over EtherCAT (CoE). These acyclic mailbox communications require another frame with SubDevice specific commands for reading and writing to the SubDevice. This acyclic frame is sent using the “Send Acyclic Datagrams/Commands” job function. It is important that the EC-Master is able to limit this acyclic data traffic, otherwise the network or the CPU could become overloaded.

Performance Measurements Using the Example Application

The acontis EC-Master software has a built-in performance measurement capability within the included example application. This performance measurement calculation can be called using a command line parameter with the example application (–perf). When enabled, the example application will measure the execution times of the job functions that are called within the cyclic part of the application, as well as the total computing time consumed by the cyclic task itself. The example application uses the included APIs ecatPerfMeasStart() and ecatPerfMeasEnd() for high-precision measurement time calculations.

The resulting measurement values are recorded every few seconds to the log file, and printed to the console in the following format:

PerfMsmt 'Cycle Time                     ' (min/avg/max) [usec]:  948.3/1000.0/1053.5
PerfMsmt 'Task Duration (JOB_Total + App)' (min/avg/max) [usec]:    7.4/  12.2/  77.0
PerfMsmt 'JOB_Total                      ' (min/avg/max) [usec]:    7.0/  11.4/  67.5
PerfMsmt 'JOB_ProcessAllRxFrames         ' (min/avg/max) [usec]:    1.3/   3.4/  46.2
PerfMsmt 'JOB_SendAllCycFrames           ' (min/avg/max) [usec]:    3.0/   3.9/  41.5
PerfMsmt 'JOB_MasterTimer                ' (min/avg/max) [usec]:    0.4/   1.5/  37.9
PerfMsmt 'JOB_SendAcycFrames             ' (min/avg/max) [usec]:    1.5/   2.4/  36.9
PerfMsmt 'myAppWorkPd                    ' (min/avg/max) [usec]:    0.0/   0.2/  27.9

Measurement Results

The following measurement results were performed with 16, 32, and 64 SubDevices on different controllers with different cycle times. The percentage load on the CPU by the EC-Master is calculated by taking the ratio of the cumulative runtimes of the job functions and the overall cycle time.

Texas Instruments AM3359, ARM Cortex-A8, 32-Bit, 600 MHz

EC-Master CPU Load on TI AM3359

Texas Instruments TDA4VM, with TDA4VH-Q1, Jacinto 8x Cortex™-A72 up to 2000 MHz

NXP i.MX 8, ARM Cortex-A72, 64-Bit, 1 GHz

EC-Master CPU Load on NXP i.MX8

Intel Atom, Elkhart Lake x6425E, 64-Bit, 1.80 GHz

EC-Master CPU load on Intel Elkhart Lake x6425E

NVIDIA®Jetson AGX Orin™, Cortex®-A78AE, 64-Bit, 2.2 GHz

EC-Master CPU Load on NVIDIA®Jetson AGX Orin™

EC-Master Performance Measurement Results

Date Silicon Vendor CPU Core Arch. Board Operating
System
EC-Master
Version
Build
Spec
RtEth DC Cycle Time
Avg [us]
Cycle Time
Max [us]
JOB Total
Avg [us]
JOB Total
Max [us]
CPU_Load
Avg %
2022-02-17 NXP iMX8   ARM_64Bit Toradex Apalis QNX_7.1 3.1.3.99 Full emllFslFec Yes 1000,0 1043,1 38,7 56,8 4%
2022-08-08 NXP iMX8   ARM_64Bit Variscite Xenomai 3.1.4.99 Full emllFslFec No 1000,0 1014 22,2 39,3 2%
2022-08-08 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Xenomai 3.1.4.03 Full emllI8254x No 1000,0 1015,2 26,2 52,6 3%
2022-08-08 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Xenomai 3.1.4.03 Full emllI8254x Yes 999,9 1023,1 28,8 56,5 3%
2022-11-17 Texas Instruments Sitara AM64xx R5 Cortex ARM_32Bit   FreeRTOS 3.1.4.06 Full emllTiEnetIcssg No 1000,3 1019,8 83,1 121,8 8%
2022-11-17 Xilinx Zync-7000 A15 Cortex ARM_32Bit ZC702 FreeRTOS 3.1.4.06 Full emllGEM No 1000,1 1031,5 93,9 171,5 9%
2022-11-17 Xilinx Zync-7000 R5 Cortex ARM_32Bit ZCU104 FreeRTOS 3.1.4.06 Full emllGEM No 1000,0 1027,2 87,6 164,8 9%
2023-01-16 Texas Instruments Sitara AM64xx   ARM_64Bit IDK Linux 3.1.4.07 Full emllSockRaw No 1000,0 1055,6 43,2 188,4 4%
2023-01-16 Texas Instruments Sitara AM64xx   ARM_64Bit IDK Linux 3.1.4.07 Full emllSockRaw Yes 999,9 1073,9 57,8 214,6 6%
2023-01-16 NXP iMX8   ARM_64Bit Toradex Apalis Linux 3.1.4.07 Full emllSockRaw No 1999,9 2023,7 29,4 72,7 1%
2023-03-27 Intel Celeron 827E   x86_64Bit CX2020 QNX_8.0 3.1.4.99 Full emllCCAT No 999,3 1009,8 13,4 32,6 1%
2023-05-30 Rockchip RK3399   ARM_64Bit OrangePi4 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1055,5 52,1 115,5 5%
2023-05-30 Rockchip RK3588s   ARM_64Bit OrangePi5 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1028,4 10,3 16,9 1%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock3 Linux 3.1.4.10 Full emllDW3504 No 1000,0 1039,2 20,7 53,4 2%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock3 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1031,4 26,3 43,8 3%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock64 Linux 3.1.4.10 Full emllDW3504 No 1000,0 1068,9 19,2 71,2 2%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock64 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1045,3 26,2 65,6 3%
2023-07-25 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Linux 3.1.4.11 Full emllBcmGenet Yes 1000,0 1088,6 35,4 131,5 4%
2023-07-25 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Linux 3.1.4.11 Full emllBcmGenet Yes 1000,1 1070,7 28 92,5 3%
2023-08-15 NXP iMX93   ARM_64Bit i.MX93EVK Linux 3.1.4.99 Full emllFslFec Yes 1000,1 1065,7 21,7 65,7 2%
2023-10-05 Texas Instruments Sitara AM64xx R5 Cortex ARM_32Bit   FreeRTOS 3.1.4.99 Full emllTiEnetCpswg Yes 1000,1 1035,4 133,4 261,4 13%
2023-12-20 Intel Core-i5   x86_64Bit MinisForum U820 Linux 3.2.1.02 Full emllIntelGbe No 1000,0 1012,1 5,3 15,8 1%
2023-12-20 Intel Core-i5   x86_64Bit MinisForum U820 Linux 3.2.1.02 Full emllIntelGbe Yes 1000,0 1017,8 6 20,5 1%
2024-02-21 Texas Instruments Sitara AM64xx   ARM_64Bit SolidRun Hummingboard Linux 3.2.1.99 Full emllCPSWG Yes 1000,0 1099,3 50,5 122,8 5%
2024-03-03 ST STM32H7   ARM_32Bit STM32H747I-Disco CMSIS-RTOS 3.2.1.99 Full emllCmsisEth No 1000,3 1000,9 306,1 312,6 31%
2024-04-18 Intel Core-i5   x86_64Bit MinisForum U820 QNX_8.0 3.2.1.99 Full emllIntelGbe No 999,3 1008,7 4 17,3 0%
2024-04-29 NXP   A72 Cortex ARM_64Bit LS1046A Linux 3.2.1.99 Full emllDpaa Yes 1000,0 1022,3 44,9 93,6 4%
2024-05-14 Texas Instruments Sitara AM64xx   ARM_64Bit   Linux 3.2.1.05 Full emllCPSWG Yes 1000,0 1069,6 35,1 127,1 4%
2024-05-14 Texas Instruments Sitara AM64xx   ARM_64Bit   Linux 3.2.1.05 Full emllIntelGbe Yes 1000,0 1051,4 34,9 136,9 3%
2024-05-27 Texas Instruments Sitara AM243x R5 Cortex ARM_32Bit TIAM243EVM FreeRTOS 3.2.1.05 Full emllTiEnetIcssg Yes 1000,1 1148,1 107,7 219,1 11%
2024-06-07 ST STM32H7   ARM_32Bit STM32H743 uCOS-III 3.2.1.99 Full emllCmsisEth No 1000,0 1000,9 77,4 119,1 8%
2024-06-13 Texas Instruments   R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.1.99 Full emllTiEnetCpswg Yes 240,6 321,9 163,8 308,9 68%
2024-08-08 Texas Instruments Sitara AM335x   ARM_32Bit WAGO PFC200 Linux 3.2.1.99 Full emllCPSW No 1000,0 1063,3 75,4 190,4 8%
2024-10-28 Moxa     x86_64Bit DA820E Linux 3.2.2.03 Full emllIntelGbe No 1000,0 1030,3 12,2 41,2 1%
2024-10-28 Moxa     x86_64Bit DA820E Linux 3.2.2.03 Full emllIntelGbe Yes 1000,0 1022,9 12,7 42,2 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM Yes 1000,0 1017,4 10 32,5 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM No 1000,0 1019,6 9,6 25,1 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM Yes 100,0 118,2 9,2 31,5 9%
2025-02-20 Texas Instruments Jacinto TDA4VM R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.2.05 Full emllTiEnetCpswg No 250,0 265,8 99,9 187,8 40%
2025-02-20 Texas Instruments Jacinto TDA4VM R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.2.05 Full emllTiEnetCpswg Yes 250,0 255,9 86,8 147,5 35%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.2.05 Full emllIntelGbe Yes 1000,0 1013,5 11,9 38,1 1%
2025-06-05 Nvidia Orin A78 Cortex ARM_64Bit Nvidia AGX Orin 32Gb H01 Kit Linux 3.2.3.01 Full emllIntelGbe Yes 1000,0 1003,2 9,7 15,8 1%
2025-06-05 Nvidia Orin A78 Cortex ARM_64Bit Nvidia AGX Orin 32Gb H01 Kit Linux 3.2.3.01 Full emllIntelGbe Yes 100,0 106,9 9,7 15,5 10%
2024-02-14 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit SK-TDA4VM Linux 3.2.1.03 Full emllCPSWG Yes 1000,0 1027,4 18,1 58,2 2%
2025-02-14 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit SK-TDA4VM Linux 3.2.1.03 Full emllCPSWG No 1000,0 1022,7 14,4 42,1 1%
2025-07-17 Qualcomm Qualcomm Kryo A78 Cortex ARM_64Bit Qualcomm Dragonwing IQ-9075 EVK Linux 3.2.3.99   emllIntelGbe No 1000,0 1005,4 5,2 15,4 1%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 1000,0 1001,9 4,6 17,1 0%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 500,0 510,8 4,5 15,1 1%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 250,0 257,6 4,3 11,7 2%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 100,0 109,6 4,2 15,3 4%
2025-09-12 AMD Ryzen 7 8700 G   x86_64Bit Gigabyte B650 EAGLE AX RTX 3.2.3.01 Full emllIntelGbe No 1000,0 1015,4 4,3 20,6 0%
2025-09-12 AMD Ryzen 7 8700 G   x86_64Bit Gigabyte B650 EAGLE AX RTX 3.2.3.01 Full emllIntelGbe No 250,0 274,8 4,2 40,4 2%
2025-12-15 Xilinx Zynq UltraScale+ A53 Cortex ARM_64Bit Custom Encustra Mercury-XU5 FreeRTOS 3.2.3.05 Full emllTemac No 1002,0 1002,5 96,5 118,9 10%
2026-01-26 Qualcomm Octa-Core Kryo Gen 6 A78 Cortex ARM_64Bit Qualcomm Dragonwing IQ-9075 EVK Linux 3.2.3.05 Full emllDW3504 No 1000,0 1005 11,3 27 1%
2026-03-03 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit TI j784s4-evm Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1021,6 27,8 47,6 3%
2026-03-03 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit TI j784s4-evm Linux 3.2.3.06 Full emllCPSWG No 1000,0 1029,2 18,2 41,4 2%
2026-03-03 Texas Instruments Sitara AM65xx A53 Cortex ARM_64Bit Ti Am654xEVM Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1038,1 40 124,3 4%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1037,1 29,4 86 3%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG No 1000,0 1044,2 26,6 97,6 3%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG Yes 250,0 287,3 28,8 87,6 12%

EC-Master Performance Data Sheet

EC-Master performance measurement results on many different CPU, architectures, boards, operating systems are available in the EC-Master Performance Data Sheet.

Stay Up to Date