Core Isolation for Performance Optimization
By default, the CPU cores that work with network ports are also used by
other subsystems. This can degrade performance and cause Input Errors pps/bps
spikes on Port extX/intX graphs. You can take some of the load off these cores
by preventing non-critical subsystems from running on them.
To do so:
-
Specify isolation of the packet processor cores in the core options through the
isolcpus=...andrcu_nocbs=...parameters. It is also recommended to addmitigations=offto disable core security patches. -
Add these parameters to
.env:DATA_PLANE_CPUS— list of cores allocated for packet processing (dataplane);CONTROL_PLANE_CPUS— list of cores allocated for other subsystems (all other cores).
-
Download
docker-compose.cpuisol.yml, that appliescpusetoption to all subsystems:wget https://docs.mitigator.ru/v25.06/dist/docker-compose.cpuisol.yml -O /srv/mitigator/docker-compose.cpuisol.yml -
Add it to the
COMPOSE_FILElist in.env:COMPOSE_FILE=docker-compose.yml:docker-compose.cpuisol.yml
Example
- Server with two CPUs of 10 physical cores with HyperThreading — a total of 40 logical cores:
CPU0: 0-9,20-29
CPU1: 10-19,30-39- All cores, except for one, from each CPU are allocated for the dataplane, including HT-pairs:
0-8,10-18,20-28,30-38- The remaining cores are given to the rest of the subsystems:
9,19,29,39grub settings:
GRUB_CMDLINE_LINUX_DEFAULT="... isolcpus=0-8,10-18,20-28,30-38 rcu_nocbs=0-8,10-18,20-28,30-38 mitigations=off".env settings:
DATA_PLANE_CPUS=0-8,10-18,20-28,30-38
CONTROL_PLANE_CPUS=9,19,29,39More about cpuset parameter
Related Content
- Packet Processor Settings
- System Setup for Mellanox (NVIDIA) Adapters
- Access to the Grafana Interface
- Configuration Change
- Graphite on a Separate Server
- Incident Chart Update Period
- MITIGATOR Installation
- Performance Optimization for AMD Platforms
- Setting the Storage Time for Metrics in Graphite
- Troubleshooting