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

{toc}

h2. Как оценивать сервер

h3. Сервер есть под руками

Установите CentOS 6 или CentOS 7

Выполните:

{code}
yum -y install epel-release
yum -y install python-pip
pip install netutils-linux
sudo server-info rate
{code}

Для более общей оценки можно:

{code}
cd /root/server/
# оценка с точностью до девайса
server-info-rate -f
# оценка с точностью до подсистемы
server-info-rate -ff
# оценка сервера целиком
server-info-rate -fff
{code}

Если что-то идёт не так или оценка, на ваш взгляд, некорректна: не стесняйтесь создавать на гитхаб репорты о проблемах: [https://github.com/strizhechenko/netutils-linux/issues]

h3. Сервер только планируется собирать

Смотрите инструкцию ниже и консультируйтесь с нашей технической поддержкой.


h2. Процессор


h3. Число процессоров

* В идеале число процессоров = числу принимающих зеркало трафика сетевых карт. Отсюда два вывода:
** если сетевая карта одна, а процессора два - большой выгоды от использования 2 процессоров не будет.
** если сетевых карты две, а процессор один - они будут конфликтовать за его ресурсы, что неэффективно.
** если сетевых карты три, а процессора два - может проще установить ещё один сервер?
** если сетевая карта 1, но двухпортовая, а процессора два - один из портов будет обрабатываться значительно менее эффективно.
** если сетевых карты две, процессора два, но обе сетевые карты принадлежат к одной NUMA-ноде, они будут использоваться неэффективно.
* Среднестатистические системы с одним процессором в теории способны обрабатывать около 2-4гб трафика.
* Однако можно масштабироваться не в рамках одного сервера, а устанавливая дополнительные сервера.

h3. Частота

* Частота - один из самых важных показателей процессора. В каком-то роде по нему можно судить сколько пакетов в секунду на 1 ядро способен прожевать сервер.
* 2GHz процессоры не очень эффективны в обработке трафика.
* 2.8GHz приемлемо.
* 3.2GHz\+ оптимально
* 4GHz хорошо, но, обычно, дорого

h3. Число ядер

* 8 ядер на процессор - это хорошо.
* 1 ядро на процессор - это очень плохо.
* Гипертрединг в общем случае лучше выключить, а число тредов не учитывать:
** Гипертрединг для 1 ядра почти бесполезен.
** Гипертрединг для 8\+ ядер может быть незначительно вреден.

h3. L3 кэш

* Процессоры с L2-only кэшем могут быть не такими уж плохими, но в 99% это сигнализирует о том, что остальное железо (материнская плата, оперативная память) старое и слабое.
* Чем больше L3-кэша тем лучше.

h2. Сетевые карты


h3. Размер rx-буфера

* Меньше 1024 - не рекомендуется
* 2048-4096 - пригодно в общем случае
* 8192 - отлично

h3. Драйвер

От драйвера и модели карты зависит, что он умеет, например
* Управление числом очередей
* Управление размером буфера
* Управление распределением пакетов между процессорами

Выдержка из кода утилиты server-info, в комментарии - наблюдаемая беспроблемная работа сетевых карт, использующих этот драйвер:

{code}
'driver': {
'mlx5_core': 10, # 7500 mbit/s
'mlx4_en': 9, # 6500 mbit/s
'i40e': 8, # 6000 mbit/s
'ixgbe': 7, # 4000 mbit/s
'igb': 6, # 400 mbit/s
'bnx2x': 4, # 100 mbit/s
'e1000e': 3, # 80 mbit/s
'e1000': 3, # 50 mbit/s
'r8169': 1, 'ATL1E': 1, '8139too': 1, # real trash, you should never use it
}
{code}

h3. Число очередей

* Сетевые карты с одной очередью не рекомендуются
** Компенсировать их неэффективность можно с помощью технологии RPS
* Сетевые карты с 1 rx-очередью и 1 tx-очередью тоже не подходят, т.к. TX-трафика при приёме зеркала нет
* Некоторые сетевые карты умеют работать только с числом очередей кратным степени двойки, использование 6-ядерных процессоров с ними неэффективно.

h3. Число портов

* Порты одной сетевой обрабатываются одним процессором (принадлежат к 1 NUMA-ноде), поэтому:
** Двухпортовые сетевые карты имеет смысл использовать только при сборе бонда (LAG)
** При наличии двух процессоров в системе лучше приобрести две однопортовые карты и вставить их в слоты так, чтобы они принадлежали к разным NUMA-нодам.

h2. Материнская плата и корпус


h3. Число слотов под сетевые карты

* Слотов должно хватать на установку PCI карт.
* Места в корпусе сервера должно хватать под установку всех необходимых сетевых карт

h3. Тип оперативной памяти

* {color:#222222}Используйте DDR4-память{color}
* {color:#222222}В крайнем случае DDR3, но это станет узким горлышком при апгрейде сервера{color}
* {color:#222222}DDR1 и DDR2 память не рекомендуется использовать при любом объёме трафика, она слишком медленная{color}