По умолчанию ядра CPU, работающие с сетевыми портами, используются и другими
подсистемами. Это может снижать производительность и вызывать всплески Input Errors pps/bps
на графиках Port extX/intX
. Можно снять часть нагрузки с этих
ядер, запретив некритичным подсистемам выполняться на них.
Для этого:
В опциях ядра прописывается изоляция ядер обработчика пакетов через параметры
isolcpus=...
и rcu_nocbs=...
. Кроме этого рекомендуется добавить rcu_nocb_poll
,
audit=0
, nosoftlockup
и mce=ignore_ce
.
В .env
добавлются параметры:
DPCPUS
- список ядер, выделенных под обработчик пакетов (data-plane);SRVCPUS
- список ядер, выделенных под остальные подсистемы (все остальные ядра).В docker-compose.override.yml
эти ядра прописываются через настройку cpuset
(DPCPUS
- для data-plane, SRVCPUS
- для всего остального):
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}
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 rcu_nocb_poll audit=0 nosoftlockup mce=ignore_ce"
.env
:
DPCPUS=0-8,10-18,20-28,30-38
SRVCPUS=9,19,29,39
cpuset