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

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

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

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


* Гипертрединг - _Гипертрединг_ \- необходимо отключить. Число ядер (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% эффективности.

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

h3. Частота

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

* 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. Примеры одно\- и многопроцессорных решений


|| Трафик || Однопроцессорное решение \\ || Многопроцессорное решение \\ ||
| 10 Гбит/сек + \\ | Здесь не получится обойтись одним процессором. Можно масштабировать \\
по числу серверов: на каждую точку съёма зеркала трафика установить \\
Можно масштабировать по числу серверов: \\
на каждую точку съёма зеркала трафика установить  отдельный недорогой сервер. \\
Это окажется дешевле при покупке, но, возможно, усложнит эксплуатацию \\
отдельный недорогой сервер. Это окажется дешевле при покупке, но, возможно, усложнит эксплуатацию (все сервера нужно администрировать). | * Intel® Xeon® Gold 6154 Processor, 3,00GHz, 4 sockets, 18 cores, 25M L3 cache
* Intel® Xeon® Gold 6144 Processor, 3.50 GHz, 4 sockets, 8 cores, 25M L3 cache
* Intel® Xeon® E5-2687W v4 @ 3.00GHz, 2 sockets, 12 cores, 30M L3 cache
* Intel® Xeon® E5-2689 v4 @3.10GHz, 2 sockets, 10 cores/socket, 25M L3 cache
* Intel® Xeon® E5-2690 @ 2.90GHz, 2 sockets, 8 cores/socket, 20M L3 cache |
| до 5 Гбит/сек \\ | Серверные процессоры \\
| до 5 Гбит/сек \\ | * Intel(R) Xeon(R) CPU W-2145 @ 3.70GHz, 8 cores, 11M L3 cache
* Intel(R) Xeon(R) CPU E5-1680 v4 @ 3.40GHz, 8 cores, 20M L3 cache
* Intel(R) Xeon(R) E5-2667 V4 @ 3.20GHz, 8 cores, 25M L3 cache
* Intel(R) Xeon(R) CPU E5-1660 v2 @ 3.30GHz, 6 cores, 16M L3 cache
* Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1270 @ 3.40GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz, 4 cores, 6M L3 cache
* Intel(R) Xeon(R) CPU E3-1240 @ 3.30GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz, 4 cores, 8M L3 cache
* Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz, 4 cores, 8M L3 cache\\
Десктопные процессоры \\
* Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz, 4 cores, 8M L3 cache
* Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz, 4 cores, 6M L3 cache
* Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz, 4 cores, 6M L3 cache
* Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz, 4 cores, 6M L3 cache | * Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz, 2 sockets, 6 cores/socket, 16M L3 cache
* Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz, 4 cores, 8M L3 cache | * Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz, 2 sockets, 6 cores/socket, 16M L3 cache
* Intel(R) Xeon(R) CPU X5650 @ 2.67GHz, 2 sockets, 6 cores/socket, 12M L3 cache
* Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz, 2 sockets, 6 cores/socket, 16M L3 cache
* Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz, 2 sockets, 4 cores/socket, 10M L3 cache
* Intel(R) Xeon(R) CPU X5570 @ 2.93GHz, 2 sockets, 4 cores/socket, 8M L3 cache
* Intel(R) Xeon(R) CPU E5645 @ 2.40GHz, 2 sockets, 6 cores/socket, 12M L3 cache |
* Intel(R) Xeon(R) CPU E5530 @ 2.40GHz, 2 sockets, 4 cores/socket, 8M L3 cache |




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}
* 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, что также распределяет нагрузку между ядрами.
* Размер буфера устанавливается автоматически, если это возможно.

При установке нового оборудования обращайтесь в техническую поддержку - мы поможем исключить потери пакетов и подтвердим, что оборудование справляется с текущей нагрузкой.
\[ConnectX-3 Pro\] | 10 Гбит/сек | rx=128 | rx=8192 | 6.5 Гбит/сек | Число очередей может быть равным  \\
только степени двойки, неэффективно \\
на 6-ядерных процессорах |
на 6-, 10-, 12-, 14-, 18-ядерных процессорах |
| Broadcom \\
Emulex | OneConnect 10Gb NIC (be3) \\
*\* увеличение rx_frag_size для Emulex*

Из коробки иногда не хватает значения rx_frag_size, из-за чего растёт счётчик dropped пакетов, но решается выполнением:

{color:#333333}Из коробки иногда не хватает значения rx_frag_size, из-за чего растёт счётчик dropped пакетов, но решается очень просто:{color}

{code}
echo options be2net rx_frag_size=8192 > /etc/modprobe.d/be2net.conf
echo "options be2net rx_frag_size=8192" > /etc/modprobe.d/be2net.conf
reboot
{code}
h3. Тип оперативной памяти

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

|| Тип сервера || Описание || Плюсы || Минусы ||
| ATX | {color:#222222}Самостоятельно собранный или заказанный сервер из десктопных компонентов{color}\\ | {color:#222222}Такие сервера имеют высокую производительность за низкую цену.{color}\\ {color:#222222}С их помощью очень легко масштабироваться в ширину.{color}\\ {color:#222222}Компоненты легко приобрести.{color}\\ | Менее надёжны. \\
Не получится поставить в стандартную серверную стойку. |
| 1U, 2U | {color:#222222}сервера для установки в стойку.{color}\\ | {color:#222222}Верхний сегмент таких серверов позволяет проводить вертикальное масштабирование, то есть обрабатывать б{color}{color:#222222}{_}о{_}{color}{color:#222222}льший объём трафика в рамках одного сервера.{color}\\ {color:#222222}Высокая надёжность.{color}\\ {color:#222222}Чем меньше серверов - тем проще их администрировать.{color} | Высокая цена. \\
На некоторые модели сложно найти поставщика. |
h3. Число модулей оперативной памяти

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

h3. Форм-фактор

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



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

Смотрите инструкцию ниже и консультируйтесь с технической поддержкой CarbonSoft.
|| Тип сервера || Описание || Плюсы || Минусы ||
| ATX | {color:#222222}Самостоятельно собранный или заказанный сервер из десктопных компонентов{color}\\ | {color:#222222}Такие сервера имеют высокую производительность за низкую цену.{color}\\ {color:#222222}С их помощью очень легко масштабироваться в ширину, докупая при необходимости новые сервера.{color}\\ {color:#222222}Компоненты легко приобрести.{color}\\ | Менее надёжны. \\
Не получится поставить в стандартную серверную стойку. |
| 1U, 2U | {color:#222222}сервера для установки в стойку.{color}\\ | {color:#222222}Верхний сегмент таких серверов позволяет проводить вертикальное масштабирование, обрабатывая б{color}{color:#222222}{_}о{_}{color}{color:#222222}льший объём трафика в рамках одного сервера.{color}\\ {color:#222222}Высокая надёжность.{color}\\ {color:#222222}Чем меньше серверов - тем проще их администрировать.{color} | Высокая цена. \\
На некоторые модели сложно найти поставщика. |