По умолчанию ядра CPU, работающие с сетевыми портами, используются и другими
подсистемами. Это может снижать производительность и вызывать всплески Input Errors pps/bps на графиках Port extX/intX. Можно снять часть нагрузки с этих
ядер, запретив некритичным подсистемам выполняться на них.
Для этого:
В опциях ядра прописывается изоляция ядер обработчика пакетов через параметры
isolcpus=... и rcu_nocbs=.... Кроме этого рекомендуется добавить
mitigations=off для отключения патчей безопасности ядра.
В .env добавлются параметры:
DPCPUS - список ядер, выделенных под обработчик пакетов (data-plane);SRVCPUS - список ядер, выделенных под остальные подсистемы (все остальные ядра).Создается файл cpuset.yml, применяющий параметр cpuset для всех подсистем,
и добавляется в список настроек в .env
(COMPOSE_FILE=docker-compose.yml:docker-compose.override.yml:cpuset.yml):
version: "2.2"
services:
  data-plane:
    cpuset: ${DPCPUS}
  postgres:
    cpuset: ${SRVCPUS}
  backend:
    cpuset: ${SRVCPUS}
  nginx:
    cpuset: ${SRVCPUS}
  fwstats:
    cpuset: ${SRVCPUS}
  watchhog:
    cpuset: ${SRVCPUS}
  rts:
    cpuset: ${SRVCPUS}
  accesslog:
    cpuset: ${SRVCPUS}
  clickhouse:
    cpuset: ${SRVCPUS}
  graphite-clickhouse:
    cpuset: ${SRVCPUS}
  carbon-clickhouse:
    cpuset: ${SRVCPUS}
  carbonapi:
    cpuset: ${SRVCPUS}
  grafana:
    cpuset: ${SRVCPUS}
CPU0: 0-9,20-29
CPU1: 10-19,30-39
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:
DPCPUS=0-8,10-18,20-28,30-38
SRVCPUS=9,19,29,39
cpuset