Оптимизация

Изоляция ядер

По умолчанию ядра ЦП, работающие с сетевыми портами, используются и другими подсистемами. Это может снижать производительность и вызывать всплески Input Errors pps/bps на графиках Port extX/intX. Можно снять часть нагрузки с этих ядер, запретив некритичным подсистемам выполняться на них.

Пример.

  • Два CPU по 12 физических ядер с HyperThreading, итого 2×12×2 = 48 потоков.
  • Два порта сетевой карты обрабатываются ядрами 1, 2 (HT-парные: 25, 26).
  • Ядро 0 всегда занято служебными задачами (HT-парное: 24).
// data-plane.conf
Lcores(3-23,27-47);
Lcore(1, ext0);
Lcore(2, int0);

Контейнерам graphite, fwstats, backend, watchhog и postgres можно задать cpuset: "3-23,27-47" в docker-compose.override.yml:

version: "2.1"
  services:
    graphite:
      cpuset: "3-23,27-47"

    fwstats:
      cpuset: "3-23,27-47"

    backend:
      cpuset: "3-23,27-47"

    watchhog:
      cpuset: "3-23,27-47"

    postgres:
      cpuset: "3-23,27-47"

В данном случае набор ядер cpuset совпадает с набором Lcores, но может быть и более узким. После внесения изменений нужно перезапустить Mitigator:

systemctl restart mitigator

Подробнее о параметре cpuset: