Советы по подбору оборудования

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (33)

просмотр истории страницы


* Гипертрединг - _Гипертрединг_ \- необходимо отключить. Число ядер (cores) у процессоров в таблице ниже указано с учётом отключенного гипертрединга.
* Рекомендуется:
1. 4+ ядра.
2. Призводитель-Intel.
3. Чем больше L3 кэш, тем лучше.
4. 3GHz+ частота
* Не рекомендуется
1. Очень много ядер, но с маленькой частотой.
2. Призводитель-AMD


* несколько socket'ов (физических процессоров):
Рекомендуем:
1. Использовать несколько сетевых карт для зеркала
2. Использовать материнские платы с несколькими PCI слотами, привязанными к разным процессорам.
Рекомендуется:

* 4 или более ядер.
* Призводитель --- Intel.
* Чем больше L3 кэш, тем лучше.
* 3GHz\+ частота

Не рекомендуется:

* Очень много ядер, но с маленькой частотой.
* Призводитель --- AMD


Для серверов с _несколькими_ физическими процессорами (sockets) нужно использовать материнские платы с несколькими PCI слотами, привязанными к разным процессорам. На каждый физический процессор должна использоваться отдельная сетевая карта (не порт), установленная в PCI-слот соответствующего ей процессора.



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

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

h3. Частота
Среднестатистические системы с одним процессором в теории способны обрабатывать от 2 до 7 Гб трафика.

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

Частота - один из самых важных показателей процессора. От него зависит сколько пакетов в секунду на 1 ядро способен обработать сервер.

* 2.0 - 2.4 GHz процессоры неэффективны в обработке трафика вне зависимости от числа ядер.
* 3.0 GHz приемлемо.
* 3.2 GHz\+ оптимально.
* 3.8 GHz отлично.

h3. Число ядер

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

h3. L3 кэш

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

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}
* mellanox
** mlx5_core - 7500 mbit/s
** mlx4_en - 6500 mbit/s
* intel:
** i40e - 6000 mbit/s
** ixgbe - 4000 mbit/s
** igb - 800 mbit/s
** e1000e - 80 mbit/s
** e1000 - 50 mbit/s
* broadcom:
** bnx2x - 100 mbit/s
* r8169, ATL1E, 8139too - эффективная работа не фиксировалось.

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

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

h3. Число портов
Большинство сетевых карт имеют неоптимальные настройки по умолчанию, что может приводить к пропускам. Carbon Reductor DPI настраивает часть параметров автоматически при загрузке.

Распределение прерываний (RSS) опасно настраивать автоматически: сетевая карта может "зависнуть", а для многопроцессорных систем сложно определить его оптимальную конфигурацию, поэтому мы настраиваем эту опцию только вручную.
* Для сетевых карт имеющих несколько очередей, распределение прерываний (RSS) настраивается автоматически на том процессоре, к которому эта сетевая карта привязана.
* Количество очередей не меняется, в случае с несколькими процессорами его нужно настроить вручную (настройки сети в /etc/sysconfig/network-scripts/ifcfg-ethX, параметр ETHTOOL_OPTS).
* Для сетевых карт не поддерживающих распределение прерываний, настраивается RPS, что также распределяет нагрузку между ядрами.
* Размер буфера устанавливается автоматически, если это возможно.

При установке нового оборудования обращайтесь в техническую поддержку - мы поможем исключить потери пакетов и подтвердим, что оборудование справляется с текущей нагрузкой.
* {color:#222222}DDR1 и DDR2 память не рекомендуется использовать при любом объёме трафика, она слишком медленная{color}

h3. {color:#222222}Число модулей оперативной памяти{color}

{color:#222222}Для оптимальной производительности используйте число модулей не меньше чем по формуле: число каналов памяти процессора * число процессоров.{color}

|| Тип сервера || Описание || Плюсы || Минусы ||
| ATX | {color:#222222}Самостоятельно собранный или заказанный сервер из десктопных компонентов{color}\\ | {color:#222222}Такие сервера имеют высокую производительность за низкую цену.{color}\\ {color:#222222}С их помощью очень легко масштабироваться в ширину.{color}\\ {color:#222222}Компоненты легко приобрести.{color}\\ | Менее надёжны. \\