Изоляция ядер для оптимизации производительности
По умолчанию ядра CPU, работающие с сетевыми портами, используются и другими подсистемами.
Это может снижать производительность и вызывать всплески Input Errors pps/bps на
графиках Port extX/intX. Можно снять часть нагрузки с этих ядер, запретив
некритичным подсистемам выполняться на них.
Для этого:
-
В опциях ядра пропишите изоляцию ядер обработчика пакетов через параметры
isolcpus=...иrcu_nocbs=.... Также рекомендуется добавитьmitigations=offдля отключения патчей безопасности ядра. -
В
.envдобавьте параметры:DATA_PLANE_CPUS— список ядер, выделенных под обработчик пакетов (dataplane);CONTROL_PLANE_CPUS— список ядер, выделенных под остальные подсистемы (все остальные ядра).
-
Скачайте
docker-compose.cpuisol.yml, применяющий параметрcpusetдля всех подсистем:wget https://docs.mitigator.ru/v25.06/dist/docker-compose.cpuisol.yml -O /srv/mitigator/docker-compose.cpuisol.yml -
Добавьте его в список
COMPOSE_FILEв.env:COMPOSE_FILE=docker-compose.yml:docker-compose.cpuisol.yml
Пример
- Сервер с двумя CPU по 10 физических ядер с HyperThreading — всего 40 логических ядер:
CPU0: 0-9,20-29
CPU1: 10-19,30-39- Под dataplane выделены все ядра кроме одного с каждого CPU, включая HT-пары:
0-8,10-18,20-28,30-38- Оставшиеся ядра отданы остальным подсистемам:
9,19,29,39Настройка grub:
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:
DATA_PLANE_CPUS=0-8,10-18,20-28,30-38
CONTROL_PLANE_CPUS=9,19,29,39Подробнее о параметре cpuset
Похожие статьи
- Настройка системы для карт Mellanox (NVIDIA)
- Настройки обработчика пакетов
- Graphite на отдельном сервере
- Troubleshooting
- Документация pgfailover
- Доступ к интерфейсу Grafana
- Изменение конфигурационных параметров ClickHouse
- Использование единого Graphite для нескольких кластеров MITIGATOR
- Настройка времени хранения метрик в Graphite
- Настройка эшелонированной защиты на базе MITIGATOR