APIs, concepts, guides, and more
RMP PC hardware and performance requirements

Determine if your hardware meets the requirements for running RMP.

πŸ”Ή RSI Industrial PCs

If you're using an RSI Industrial PC , you can skip the rest of this pageβ€”your PC is already fully compatible with RMP. These systems are pre-vetted to ensure optimal real-time operating system (RTOS) performance, including low latency, minimal jitter, and guaranteed RMP compatibility.

πŸ”Ή Operating System

  • Windows

    • Windows 10
    • Windows 11

    Tenasys INtime RTOS will be installed, as described in Install RMP for Windows.

  • Linux

    • Debian 12
    • Ubuntu 22.04
    • Ubuntu 24.04

    A PREEMPT_RT enabled kernel is required for real-time performance on Linux.

πŸ”Ή CPU

RSI recommends Intel CPUs with the TCC feature for the best real-time performance. See the Intel TCC CPU list.

  • Windows

    • Intel and AMD x86-64

    For a detailed list of compatible CPUs, refer to the Tenasys INtime CPU list..

  • Linux

    • Intel and AMD x86-64
    • ARM Cortex-A53, A57, A72, A73, A75, A76, etc.

πŸ”Ή NIC

The RMP requires at least one network interface card (NIC) to communicate with EtherCAT devices. The NIC must support 100 Mbps or greater.

  • Windows

    Supported NICs INtime Driver
    Intel 10/100Mbps ie100m
    Intel 1Gbps ie1g
    Intel 82575/82576/82580 ie1ge
    Intel 2.5Gbps i225/i226 ie25g
    Realtek 10/100Mbps rtl100m
    Realtek 1Gbps rtl1g

    For a more extensive list, including hardware IDs, visit Tenasys Supported network interface card list. (RMP-Windows requires INtime HPE support for the NIC driver.)

  • Linux

    • Any 100 Mbps or greater NIC

πŸ”Ή Real-time Latency and Jitter

Latency refers to the time delay between the instant a task is scheduled and the moment the system starts executing the scheduled task. Jitter refers to the deviation from the expected timing behavior. Low latency and jitter are crucial in real-time systems, like those controlling machinery, to ensure tasks are executed quickly and predictably. In systems using EtherCAT, excessive jitter can disrupt the network or impact performance.

Performing a measurement of maximum latency and jitter is crucial for evaluating hardware for RMP.

Maximum Acceptable Latency

RMP will precisely schedule EtherCAT frames (RMP Sample Rate) so your RTOS maximum latency is critical. Maximum latency is determined by running high-priority cyclic threads and measuring how long the thread takes (worst-case) to wake and respond. RMP will adjust EtherCAT nodes to process the data as far as possible from when RMP sends the data. This refers to how frequently the RMP updates the system's motion.

Guidelines for maximum acceptable latency:

RMP Sample Rate Recommended Acceptable
500Hz 250us 500us
1000Hz (default) 125Β΅s 250Β΅s
2000Hz 62.5Β΅s 125Β΅s
4000Hz 31.25Β΅s 62.5Β΅s

Maximum Acceptable Jitter

The optimal system should have no more than 40Β΅s deviation from the Average Tick value.

πŸ”Ή How to Measure Latency and Jitter (Windows)

Image

Navigate to C:\Program Files (x86)\INtime\bin\tpat.exe and open the application Platform Assessment Tool. Select NodeA and click Start. A good way to simulate demand is to run two long YouTube videos in the background during the Jitter test. Let the tool run overnight to gather enough data. The tool displays CPU information, timing records, and a histogram.

Analyzing Results

Image

Two key indicators are Max Jitter and Longest Tick. Consistently low Longest Tick values are more critical than the Shortest Tick values for smoother operation. Excessive jitter can lead to "motor knocking," impacting the precision of machinery. Refer above for RSI recommended values. If you are unsatisfied with your results, Platform Assessment Tool provides a brief summary of BIOS Real-time Settings that may be configurable, detailed below.

πŸ”Ή How to Measure Latency and Jitter (Linux)

To measure latency and jitter on Linux systems, use the rmp-eval tool, an open-source utility designed specifically for evaluating PC hardware compatibility with RMP. The tool requires root access and a PREEMPT_RT kernel.

Installation

Pre-built packages for amd64 and arm64 are available from the rmp-eval GitHub releases. On Debian/Ubuntu:

sudo dpkg -i rmp-eval_*.deb

Basic Usage

For CPU-only latency testing:

sudo rmp-eval

For testing with network interface (requires a connected EtherCAT drive):

sudo rmp-eval --nic enp2s0

Press Ctrl+C to stop the test and view results. Let the tool run for several minutes or longer to capture worst-case scenarios. Running demanding applications (like video playback) during testing can help simulate real-world load.

Example Output

Target period: 1000 us
| | | Great | Good | Poor | Bad | Pathetic | Max Latency |
| Label | Count | < 125us | < 250us | < 500us | < 1000us | >= 1000us | us | index |
|----------+-------+---------+---------+---------+----------+-----------+------+-------+
| Sender | 62367 | 62367 | 0 | 0 | 0 | 0 | 1 | 161 |
| Receiver | 62367 | 62367 | 0 | 0 | 0 | 0 | 10 | 61567 |
Duration: 00:01:02.445
Sender max period: 1001Β΅s at index 161 which is Great.
Receiver max period: 1010Β΅s at index 61567 which is Great.

Understanding the Output

Label: Thread type - Sender and Receiver (when using --nic), or Cyclic (CPU-only mode)
Count: Total number of test cycles completed
Latency Buckets (< 125Β΅s, < 250Β΅s, < 500Β΅s, < 1000Β΅s, >= 1000Β΅s): How many cycles had timing deviations in each range. Color-coded by severity (green = excellent, red = poor). All cycles should ideally fall in the first bucket.
Max Latency: Worst-case latency deviation observed. Compare this value to the Maximum acceptable latency table above based on your target RMP sample rate.

  • us: Maximum latency in microseconds
  • index: Which test iteration had the worst-case latency

Ideally, all observations should fall in the first bucket (< 125Β΅s for 1kHz operation).

Alternative: cyclictest

The traditional cyclictest tool can also be used for latency measurement:

sudo apt-get install rt-tests
sudo cyclictest -p 45 -a 3 -i 1000

Where -p 45 sets the real-time priority (matching RMP's default max priority), -a 3 specifies the isolated CPU core, and -i 1000 sets the timer interval to 1000 microseconds (1kHz sample rate). For faster sample rates, adjust the interval accordingly (e.g., 4kHz = -i 250).

For cyclictest users: compare the Max value in cyclictest output to the acceptable latency values in the table above.

πŸ”Ή Linux System Configuration

For optimal real-time performance on Linux, one CPU core must be isolated and dedicated exclusively to RMP operation. This isolated core runs the RMP real-time thread without interference from other system processes.

The rmp-eval tool automatically checks your Linux system configuration and reports potential issues. When you run the tool, it displays comprehensive system, CPU core, and network interface checks:

Example System Configuration Output

sudo ./rmp-eval --nic enp2s0
CPU: 13th Gen Intel(R) Core(TM) i3-13100TE (4 logical, 4 physical)
Kernel: Linux 6.12.43+deb13-rt-amd64 #1 SMP PREEMPT_RT Debian 6.12.43-1 (2025-08-27) x86_64
System Checks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PREEMPT_RT active βœ”οΈ /sys/kernel/realtime=1
Swap disabled βœ”οΈ /proc/swaps empty
Timer Migration disabled βœ”οΈ timer_migration=0
RT throttling disabled βœ”οΈ sched_rt_runtime_us=-1
Clocksource stable βœ”οΈ tsc
Core 3 Checks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RT core isolated βœ”οΈ isolated list: 3
nohz_full on RT core βœ”οΈ nohz_full list: 3
rcu_nocbs includes RT core βœ”οΈ 3
CPU governor = performance βœ”οΈ governor=performance
CPU current frequency ❌ cur=800000 kHz, min=800000 kHz, max=4100000 kHz
irqaffinity excludes RT core βœ”οΈ 0,1
No unrelated IRQs on RT core βœ”οΈ clean
SMT sibling isolated/disabled βœ”οΈ no sibling
Deep C-states capped βœ”οΈ intel_idle.max_cstate=0
Turbo/boost disabled ❌ intel_pstate/no_turbo=0
NIC enp2s0 Checks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
NIC interface present βœ”οΈ exists
NIC link is UP βœ”οΈ operstate=up
NIC is quiet ❌ v4=0, v6=1, def4=no, def6=no
NIC IRQs pinned to RT core βœ”οΈ all pinned to CPU3
RPS disabled on NIC βœ”οΈ all zero masks

Key Configuration Requirements

System Checks:

  • PREEMPT_RT active: Verifies /sys/kernel/realtime=1. The PREEMPT_RT enabled kernel is required for deterministic real-time performance.
  • Swap disabled: Checks /proc/swaps is empty. Swap causes unpredictable delays and must be disabled.
  • Timer Migration disabled: Verifies timer_migration=0. Prevents timer interrupts from being migrated to the isolated RT core.
  • RT throttling disabled: Checks sched_rt_runtime_us=-1. Allows real-time tasks to use 100% of CPU without throttling.
  • Clocksource stable: Verifies TSC (Time Stamp Counter) is used. TSC provides stable, high-resolution timing.

Core Isolation Checks:

  • RT core isolated: Confirms the core appears in the isolated list (e.g., isolcpus=3 kernel parameter). One core must be isolated for RMP.
  • nohz_full on RT core: Verifies the core is in the nohz_full list. Disables scheduling ticks on the isolated core.
  • rcu_nocbs includes RT core: Confirms RCU callbacks are offloaded from the RT core to prevent latency spikes.
  • CPU governor = performance: Ensures the core runs at maximum frequency without dynamic scaling.
  • CPU current frequency: Checks if frequency matches max (warning shown if running below maximum).
  • irqaffinity excludes RT core: Verifies system IRQs are directed to non-RT cores only.
  • No unrelated IRQs on RT core: Confirms the RT core has no unexpected interrupt handlers.
  • SMT sibling isolated/disabled: Checks that if the core has a hyper-threading sibling, it's also isolated or disabled.
  • Deep C-states capped: Verifies intel_idle.max_cstate=0 to prevent deep sleep states that increase wakeup latency.
  • Turbo/boost disabled: Checks if CPU turbo is disabled (e.g., intel_pstate/no_turbo=1) for frequency consistency.

NIC Checks (when using –nic):

  • NIC interface present: Verifies the specified network interface exists.
  • NIC link is UP: Confirms the interface has an active connection.
  • NIC is quiet: Warns if the interface has active IP traffic (v4/v6 packets or default routes). The NIC should be dedicated to EtherCAT only.
  • NIC IRQs pinned to RT core: Verifies all NIC interrupt handlers are assigned to the isolated RT core for lowest latency.
  • RPS disabled on NIC: Confirms Receive Packet Steering is disabled (all zero masks) to prevent packet processing on non-RT cores.

For detailed information about rmp-eval and its configuration checks, visit the rmp-eval GitHub repository.

πŸ”Ή BIOS Optimization

Warning
While we strive to give you the most accurate and helpful computer advice possible, RSI (Robotic Systems Integration, Inc.) cannot be held responsible for any damage to your PC by attempting to follow the PC operating recommendations detailed on this page. If you have purchased a PC from us and you run into these types of errors detailed in this article, please feel free to contact us at tech@.nosp@m.robo.nosp@m.ticsy.nosp@m.s.co.nosp@m.m.

The INtime Platform Assessment Tool offers a detailed overview of BIOS configurations that may impact real-time performance. The BIOS Real-Time Settings Summary is available in the lower-left corner of the Platform Assessment tool. By double-clicking this section, users can access detailed information regarding each setting.

Image

BIOS Settings Affecting Real-time Performance

Setting Description
Hyper-Threading / SMT Hyper-Threading (Intel) and SMT (AMD) allow two threads to share CPU resources, which can lead to one thread waiting for shared resources, increasing jitter. Disabling Hyper-Threading or SMT can improve real-time performance by eliminating this contention, though it reduces the total number of logical processors available.
SpeedStep / CPPC Intel SpeedStep and AMD CPPC dynamically adjust CPU frequency to save power, which can increase latency and jitter. Disabling these features helps ensure the CPU runs at a constant frequency, improving predictability in real-time systems.
C-States / Cool'n'Quiet C-States (Intel) and Cool'n'Quiet (AMD) allow the CPU to enter lower power states, where the clock may slow down or stop. This can increase latency when the CPU must wake up to handle tasks. Disabling C-States/Cool'n'Quiet in the BIOS prevents the CPU from entering these power-saving modes, ensuring consistent performance.
HWP (Intel Speed Shift Technology) Gives the CPU control over power management, allowing it to change power consumption and frequency dynamically, which can negatively impact real-time performance. Disabling HWP can prevent these frequency changes and improve jitter.
System Management Mode (SMM) SMM is a special operating mode where the CPU temporarily suspends normal operation to handle low-level system management tasks. While in SMM, the CPU cannot handle regular interrupts, leading to large spikes in latency (jitter). Reducing or eliminating SMM usage in the BIOS is critical for real-time performance.
Turbo Mode / Precision Boost Intel Turbo Mode and AMD Precision Boost allow the CPU to increase clock speeds beyond its base frequency, potentially increasing jitter. Disabling Turbo Mode/Precision Boost can help keep the CPU frequency stable, reducing variability in execution time.
Spread Spectrum Modulates the CPU clock frequency slightly to reduce electromagnetic interference (EMI), but this can introduce small fluctuations in timing and increase jitter. Disabling Spread Spectrum helps maintain a stable clock for real-time performance.
TSC Sync Ensures the Time Stamp Counter (TSC) is synchronized across all CPU cores. Unsynchronized TSCs can cause timing inconsistencies in real-time systems.
NUMA In multi-socket or large-core systems, NUMA can improve memory access speed but may increase latency if not properly configured. For real-time systems, disabling NUMA or carefully binding tasks to a single NUMA node can reduce latency and jitter.
PCIe ASPM PCIe Active State Power Management (ASPM) reduces power consumption by placing devices in lower power states. Disabling ASPM in the BIOS ensures PCIe devices maintain their performance, reducing latency when waking from low-power states.
SATA Power Management Similar to PCIe ASPM, SATA power management introduces delays when accessing disks after they’ve entered a low-power state. Disabling SATA power management improves performance consistency.

Please note that the availability and configuration of these BIOS settings vary depending on the motherboard and BIOS manufacturer.