Просмотр Исходного

При использовании многопроцессорных систем есть свои особенности.

{toc}

Для отладки производительности и исследования данного железа рекомендуем использовать утилиты server-info и network-top из пакета [netutils-linux|https://github.com/strizhechenko/netutils-linux], они доступны внутри chroot /app/reductor/, если он ещё не установлен или это Carbon Reductor 7, то его можно установить следующими командами:

{code}
yum -y install python-pip
pip install --upgrade netutils-linux
network-top
{code}

network-top отображает текущую нагрузку на сетевую подсистему Linux, подсвечивая ядра процессоров и сетевые интерфейсы по группам NUMA-нод (если NUMA нет или одна - то по принадлежности к физическому процессору и другими цветами).

!https://cloud.githubusercontent.com/assets/3813830/26570951/acacf18c-452c-11e7-8fe7-5d0952f39d8b.gif|width=600!

h1. Системы с несколькими физическими процессорами и раздельной памятью (несколькими NUMA-нодами)

Сетевая карта может быть привязана к NUMA-ноде, проверить это можно:

{code}
# cat /sys/class/net/eth2/device/numa_node
0
{code}

В данном случае это node0. В таком случае обработкой пакетов на этой сетевой карте должны заниматься ядра процессора, привязанные к этой ноде:

{code}
# numactl --hardware | grep cpus
node 0 cpus: 0 1 2 3 4 5
node 1 cpus: 6 7 8 9 10 11
{code}

В данном случае, это 0, 1, 2, 3, 4, 5.

h1. Двухпортовые сетевые карты

К NUMA-нодам привязка идёт в зависимости от PCI-слота, в который установлена сетевая карта.

Перенести один из портов на другую NUMA-ноду невозможно.

Соответственно, для утилизации второго физического процессора потребуется устанавливать вторую физическую сетевую карту.

Использование вторым портом сетевой карты другой NUMA-ноды при мало-мальской нагрузке приводит к потере производительности и, соответственно, потерям пакетов.

h1. Системы с двумя процессорами и общей памятью.

В случае, если NUMA-нода одна на систему, но используются два разных физических процессора, лучше ограничить обработку трафика порта сетевой карты одним из процессоров, а не использовать оба порта одновременно.

h1. Число очередей порта сетевой карты превышает число ядер в группе NUMA-ноды или физического процессора.

Число очередей у хороших сетевых карт, как правило, регулируется с помощью команд:

Узнать возможности сетевой карты:

{code}
# ethtool -l eth2
Channel parameters for eth2:
Pre-set maximums:
RX: 0
TX: 0
Other: 1
Combined: 63
Current hardware settings:
RX: 0
TX: 0
Other: 1
Combined: 12
{code}

Установить число комбинированных очередей:

{code}
# ethtool -L eth2 combined 6
{code}

Помочь сохранить эти настройки после перезагрузки может наша техническая поддержка.