voraus.ipc_tools.core_isolation
This role configures CPU core isolation to enable deterministic execution of realtime applications on Linux systems. By isolating specific CPU cores from general system and user processes, it creates a dedicated environment for time-critical workloads such as robotic control systems, industrial automation, and realtime network communication.
Key Features:
CPU Core Isolation: Isolates specified CPU cores using the
isolcpuskernel parameter, preventing the scheduler from assigning regular system tasks and user processes to these cores.IRQ Affinity Management: Automatically configures interrupt request (IRQ) affinity to route system interrupts away from isolated cores, minimizing latency and jitter.
Network Interface Pinning: Optionally pins network interface IRQ threads to specific CPU cores, enabling deterministic realtime network communication.
RCU Offloading: Offloads Read-Copy-Update (RCU) callbacks from isolated cores using
rcu_nocbsandrcu_nocb_pollkernel parameters.Environment Variable Export: Exports isolated core IDs and network interface pinning configuration to
/etc/environmentfor easy access by applications.
Requirements
Currently we only support 64-bit systems. The target needs to be running systemd.
Role Variables
The defaults/main.yml file always provides a complete list of the variables.
Dependencies
The following packages are installed by this role
Example Playbook
- hosts: all
vars:
core_isolation_isolated_core_ids: 1,3,4,5,12,21
core_isolation_isolated_network_interfaces:
eno1: 3
enp6s0f0: 4
core_isolation_enable_nomodeset: true
roles:
- voraus.ipc_tools.core_isolation
Warning
It is not recommended to isolate CPU 0. It should be available for the OS and housekeeping tasks.
For this example playbook, the following environment variables are exported system-wide:
VRT_INTERFACE_PINNING__eno1=[3]VRT_INTERFACE_PINNING__enp6s0f0=[4]VRT_COREISOLATION__IDS=[1,3,4,5,12,21]