Изоляция ядер для оптимизации производительности
По умолчанию ядра 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для всех подсистем: -
Добавьте его в список
COMPOSE_FILEв.env:
Пример
- Сервер с двумя CPU по 10 физических ядер с HyperThreading — всего 40 логических ядер:
- Под dataplane выделены все ядра, кроме одного с каждого CPU, включая HT-пары:
- Оставшиеся ядра отданы остальным подсистемам:
Настройка grub:
Настройка .env:
Подробнее о параметре cpuset
Похожие статьи
- Настройка системы для карт Mellanox (NVIDIA)
- Настройки обработчика пакетов
- Graphite на отдельном сервере
- Troubleshooting
- Документация pgfailover
- Доступ к интерфейсу Grafana
- Изменение конфигурационных параметров ClickHouse
- Использование единого Graphite для нескольких кластеров MITIGATOR
- Настройка времени хранения метрик в Graphite
- Настройка эшелонированной защиты на базе MITIGATOR