Configuration - Manual - Industrial Edge - Industrial Edge - Industrial Edge - Documentation of the Industrial Edge Platform - IEM - Hub - Industrial - Device - IED - Edge - IEH

Industrial Edge Platform Operation - Build a Device

Portfolio
Industrial Edge
Product
Industrial Edge
Software version
v25.06
Edition
06/2025
Language
English

As a device builder, you can control the allocation of CPUs. The device builder's default configuration is specified in the file /usr/lib/ie-cpu-resource-plugin/ie-cpu-resource-plugin.yaml. Any changes during operation are only applied to the user's configuration file /etc/ie-resource-plugins/ie-cpu-resource-plugin.yaml.

The CPU isolation plugin extracts the static parameters from the device builder's default configuration file and the non-static parameters from the user's configuration file (the user can only set non-static parameters). Both sets of parameters are then merged to obtain the actual configuration. In case of a firmware update, the user's configuration is kept and subsequently merged with a potentially updated device builder's configuration.

NOTICE

Make sure that /etc/ie-resource-plugins/ is empty before shipping the image.

The following settings are currently supported:

# CPUs that should be reserved for system tasks and are not isolatable
cpuset_system: "2"

# Statically configured system CPUs
cpuset_system_static: "0-1"

# Statically configured CPUs that should be ignored by Industrial Edge
cpuset_ignore_static: "0,4"

Each setting takes a CPU set defined as comma-separated list of ranges, where a range can also be a single CPU. Examples are: 0, 0,2,4, 0-1,3,8-9. Spaces are not allowed and ranges must not be decreasing, i.e., the CPU set 0, 4-3 is invalid in both respects.

NOTICE

cpuset_system can be changed dynamically by the administrator of an edge device, whereas both static configuration options, cpuset_system_static and cpuset_ignore_static, can only be changed by editing the configuration file. This allows device builders to taylor the basic configuration to their needs, while giving administrators sufficient freedom to adapt to the actual workloads.

In the following, the effective system CPU set (cpuset_system_effective) refers to the union of cpuset_system and cpuset_system_static.

  • cpuset_system_effective defines the set of CPUs that are reserved for housekeeping and are not given to Industrial Edge apps as isolated CPUs. They are, however, allowed to run Industrial Edge apps that aren't given dedicated isolated CPUs.
  • cpuset_ignore_static defines the set of CPUs that must not be touched by Industrial Edge altogether. If this option is not set (or set to the empty string), it defaults to the empty set. The set of CPUs usable by Industrial Edge is the difference between the set of online CPUs and the CPUs to ignore (online CPU set cpuset_ignore); it therefore includes the CPUs in cpuset_system_effective. All Industrial Edge CPUs, except for the CPUs in cpuset_system_effective, are isolatable.

NOTICE

cpuset_system_effective and cpuset_ignore_static may overlap. CPUs that are in both sets are used to run system processes, but they are not used to run Industrial Edge apps.

The following constraints exist on the aforementioned configuration options:

  • cpuset_system_static must contain CPU 0 and therefore is never empty (CPU 0 is often special as it may run important system processes and kernel threads, or handle interrupts or hardware-related tasks)
  • cpuset_system_effective must neither equal cpuset_ignore_static nor be a subset thereof (if all Industrial Edge CPUs were to be isolated, regular apps that do not require isolation would no longer be able to run)

For most use cases, the following values, which provide a high degree of flexibility for system administrators, are recommended as default for device builders (not taking into account hyperthreading as discussed below):

cpuset_system: "", cpuset_system_static: "0", cpuset_ignore_static: ""

If the target device is supposed to run special tasks on one or more dedicated CPUs, you may exclude them from being used by Industrial Edge using cpuset_ignore_static. As an example, if your device has many CPUs, where each may run a real-time application, it is recommended to reserve at least one CPU for system tasks such as interrupt handling:

cpuset_system: "", cpuset_system_static: "0,1", cpuset_ignore_static: "0"

In the above example, cpuset_system_static has been extended to also include CPU 1.

NOTICE

Changing the configuration requires a system restart, as the ie-cpu-partition service depends on these configuration values to set the allowed CPU sets of the default systemd cgroups on startup and to update the tuning profile.