|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (72)
просмотр истории страницыh2. Типы серверов |
{toc} |
|
|| Тип сервера || Описание || Плюсы || Минусы || | 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} | Высокая цена. \\ На некоторые модели сложно найти поставщика. | |
h2. Процессоры |
|
h2. Процессоры |
_Гипертрединг_ \- необходимо отключить. Число ядер (cores) у процессоров в таблице ниже указано с учётом отключенного гипертрединга. |
|
* гипертрединг - нужно отключать. число ядер (cores) у процессоров ниже указано с учётом отключенного гипертрединга. * 4\+ ядра - хорошо * Intel - хорошо, с AMD могут быть проблемы |
Рекомендуется: * 4 или более ядер. * Призводитель --- Intel. |
* Чем больше L3 кэш, тем лучше. |
* 3GHz\+ частота - хорошо |
* очень много ядер, но с маленькой частотой - не хорошо. * несколько socket'ов (физических процессоров): ** если используется несколько сетевых карт для зеркала - хорошо ** если одна - имеет мало смысла и в некоторых случаях может быть хуже, чем на одном сокете. ** если у материнской платы один PCI слот или оба привязаны к одному процессору - плохо. |
|
Не рекомендуется: * Очень много ядер, но с маленькой частотой. * Призводитель --- AMD Для серверов с _несколькими_ физическими процессорами (sockets) нужно использовать материнские платы с несколькими PCI слотами, привязанными к разным процессорам. На каждый физический процессор должна использоваться отдельная сетевая карта (не порт), установленная в PCI-слот соответствующего ей процессора. h3. Число процессоров В идеале число процессоров = числу принимающих зеркало трафика сетевых карт. Иногда проще и дешевле масштабироваться, устанавливая дополнительные сервера и отправляя доп. зеркала трафика в них, чем покупать один мощный сервер с несколькими процессами и сетевыми картами. * если сетевая карта 1, а процессора 2 - большой выгоды от использования 2 процессоров не будет. * если сетевых карты 2, а процессор 1 - ничего страшного, главное чтобы его ресурсов хватало на обработку трафика. * если сетевых карты 3, а процессора 2 --- лучше установить ещё 1 сервер. * если сетевая карта 1, но двухпортовая, а процессора 2 - либо 2й процессор будет простаивать, либо один из портов будет обрабатываться с 10-30% эффективности. * если сетевых карты 2, процессора 2, _но_ обе сетевые карты установлены в PCI слоты, принадлежащие к одной NUMA-ноде, либо 2й процессор будет простаивать, либо работать с 10-30% эффективности. Среднестатистические системы с одним процессором в теории способны обрабатывать от 2 до 7 Гб трафика. h3. Частота Частота - один из самых важных показателей процессора. От него зависит сколько пакетов в секунду на 1 ядро способен обработать сервер. * 2.0 - 2.4 GHz процессоры неэффективны в обработке трафика вне зависимости от числа ядер. * 3.0 GHz приемлемо. * 3.2 GHz\+ оптимально. * 3.8 GHz отлично. h3. Число ядер * 1 ядро / процессор --- запрещено. * 2 ядра / процессор --- не рекомендуется. * 4 ядра / процессор --- рекомендуемый минимум. * 6 ядер / процессор --- не всегда хорошо, из-за особенностей некоторых сетевых карт лучше выбирать процессоры с числом ядер, кратным степени двойки (4, 8, 16). * 8 ядер / процессор --- хорошо. * Гипертрединг нужно выключить, а число тредов не учитывать. h3. L3 кэш * Процессоры без 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 | |
|
{toc} |
|
h2. Как оценивать сервер |
|
h3. Сервер есть под руками |
h2. Сетевые карты |
|
Установите CentOS 6 или CentOS 7 |
|
Выполните: |
h3. Размер rx-буфера |
|
{code} yum -y install epel-release yum -y install python-pip pip install netutils-linux sudo server-info rate {code} |
* Менее 1024 - не рекомендуется. * 2048-4096 - пригодно в общем случае. * 8192 - отлично. |
|
Для более общей оценки можно: |
h3. Драйвер |
|
{code} cd /root/server/ # оценка с точностью до девайса server-info-rate -f # оценка с точностью до подсистемы server-info-rate -ff # оценка сервера целиком server-info-rate -fff {code} |
От драйвера и модели карты зависит, что он умеет, например * управление числом очередей * управление размером буфера * управление распределением пакетов между процессорами |
|
Зафиксированные нами "рекорды" эффективной работы (без потерь и задержек обработки пакетов) сетевых карт, в зависимости от драйвера: |
|
h3. Сервер только планируется собирать |
* 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. Число очередей |
|
* Сетевые карты с одной очередью не рекомендуются для использования. * Некоторые сетевые карты (Mellanox, Intel X710) способны работать только с числом очередей кратным степени двойки, использование 6-, 10-, 12-, 14-, 18\- ядерных процессоров с ними может быть неэффективно. |
|
h2. Процессор |
h3. Число портов |
|
* Порты одной сетевой обрабатываются одним процессором (принадлежат к 1 NUMA-ноде), поэтому: ** Двухпортовые сетевые карты имеет смысл использовать только при сборе бонда (LAG) ** При наличии двух процессоров в системе лучше приобрести две однопортовые карты и вставить их в слоты так, чтобы они принадлежали к разным NUMA-нодам. |
|
h3. Число процессоров |
|
* В идеале число процессоров = числу принимающих зеркало трафика сетевых карт. Отсюда два вывода: ** если сетевая карта одна, а процессора два - большой выгоды от использования 2 процессоров не будет. ** если сетевых карты две, а процессор один - они будут конфликтовать за его ресурсы, что неэффективно. ** если сетевых карты три, а процессора два - может проще установить ещё один сервер? ** если сетевая карта 1, но двухпортовая, а процессора два - один из портов будет обрабатываться значительно менее эффективно. ** если сетевых карты две, процессора два, но обе сетевые карты принадлежат к одной NUMA-ноде, они будут использоваться неэффективно. * Среднестатистические системы с одним процессором в теории способны обрабатывать около 2-4гб трафика. * Однако можно масштабироваться не в рамках одного сервера, а устанавливая дополнительные сервера. |
|
h3. Частота |
Большинство сетевых карт имеют неоптимальные настройки по умолчанию, что может приводить к пропускам. Carbon Reductor DPI настраивает часть параметров автоматически при загрузке. |
|
* Частота - один из самых важных показателей процессора. В каком-то роде по нему можно судить сколько пакетов в секунду на 1 ядро способен прожевать сервер. * 2GHz процессоры не очень эффективны в обработке трафика. * 2.8GHz приемлемо. * 3.2GHz\+ оптимально * 4GHz хорошо, но, обычно, дорого |
* Для сетевых карт имеющих несколько очередей, распределение прерываний (RSS) настраивается автоматически на том процессоре, к которому эта сетевая карта привязана. * Количество очередей не меняется, в случае с несколькими процессорами его нужно настроить вручную (настройки сети в /etc/sysconfig/network-scripts/ifcfg-ethX, параметр ETHTOOL_OPTS). * Для сетевых карт не поддерживающих распределение прерываний, настраивается RPS, что также распределяет нагрузку между ядрами. * Размер буфера устанавливается автоматически, если это возможно. |
|
h3. Число ядер |
При установке нового оборудования обращайтесь в техническую поддержку - мы поможем исключить потери пакетов и подтвердим, что оборудование справляется с текущей нагрузкой. |
|
* 8 ядер на процессор - это хорошо. * 1 ядро на процессор - это очень плохо. * Гипертрединг в общем случае лучше выключить, а число тредов не учитывать: ** Гипертрединг для 1 ядра почти бесполезен. ** Гипертрединг для 8\+ ядер может быть незначительно вреден. |
h3. Рекомендованные |
|
h3. L3 кэш |
|| Вендор || Модель || Тип || Число \\ очередей \\ (макс.) || Размер \\ буфера \\ (макс.) || Макс. наблюдавшаяся \\ нагрузка {color:#000000}{*}на 1 порт *{color}с \\ отсутствием потерь и \\ др. проблем || Проблемы || | Mellanox | MT27520 Family \\ \[ConnectX-3 Pro\] | 10 Гбит/сек | rx=128 | rx=8192 | 6.5 Гбит/сек | Число очередей может быть равным \\ только степени двойки, неэффективно \\ на 6-, 10-, 12-, 14-, 18-ядерных процессорах | | Broadcom \\ Emulex | OneConnect 10Gb NIC (be3) \\ Device e729 | 10 Гбит/сек | combined=4 | rx=1024 \\ tx=2048 | 1 Гбит/сек | Малое максимальное число \\ очередей, малый размер rx-буфера. \\ Подойдёт для 800-900мбит/сек. \\ Нужно увеличивать параметр модуля \\ rx_frag_size *\** | | Intel | 82599ES, 82599EB (2 порта) \\ 82599EN (1 порт) \\ (ixgbe driver) | 10 Гбит/сек | combined=63 | rx=4096 \\ tx=4096 | 3.5 гбит/сек | Необходимо [отключать опции LRO и GRO|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=65799130]. \\ В остальном хороши, популярны, легко купить \\ замену при необходимости | | Intel | X710 (i40e driver) | 10 Гбит/сек | combined=64 | rx=4096 | 4.5 Гбит/сек | Скорее всего способна обрабатывать и больший \\ объём трафика. | | Intel | I210, I211, I350 \\ (igb driver) \\ 82576, 82575EB \\ | 1 Гбит/сек | combined=8 \\ (иногда rx и \\ tx очереди \\ раздельны) | rx=4096 \\ tx=4096 | 800 мбит/сек | В некоторых ситуациях требует \\ пересборки драйвера без поддержки \\ LRO, в противных случаях зависает. | |
|
* Процессоры с L2-only кэшем могут быть не такими уж плохими, но в 99% это сигнализирует о том, что остальное железо (материнская плата, оперативная память) старое и слабое. * Чем больше L3-кэша тем лучше. |
*\* увеличение rx_frag_size для Emulex* |
|
h2. Сетевые карты |
Из коробки иногда не хватает значения rx_frag_size, из-за чего растёт счётчик dropped пакетов, но решается выполнением: |
|
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 } |
echo "options be2net rx_frag_size=8192" > /etc/modprobe.d/be2net.conf reboot |
{code} |
h3. Число очередей * Сетевые карты с одной очередью не рекомендуются ** Компенсировать их неэффективность можно с помощью технологии RPS * Сетевые карты с 1 rx-очередью и 1 tx-очередью тоже не подходят, т.к. TX-трафика при приёме зеркала нет * Некоторые сетевые карты умеют работать только с числом очередей кратным степени двойки, использование 6-ядерных процессоров с ними неэффективно. h3. Число портов * Порты одной сетевой обрабатываются одним процессором (принадлежат к 1 NUMA-ноде), поэтому: ** Двухпортовые сетевые карты имеет смысл использовать только при сборе бонда (LAG) ** При наличии двух процессоров в системе лучше приобрести две однопортовые карты и вставить их в слоты так, чтобы они принадлежали к разным NUMA-нодам. |
h2. Материнская плата и корпус |
... |
h3. Тип оперативной памяти |
* {color:#222222}Используйте DDR4-память{color} |
* Используйте DDR4-память |
* {color:#222222}В В крайнем случае DDR3, но это станет узким горлышком при апгрейде сервера{color} |
* {color:#222222}DDR1 и DDR2 память не рекомендуется использовать при любом объёме трафика, она слишком медленная{color} |
h3. Число модулей оперативной памяти Для оптимальной производительности используйте число модулей не меньше чем по формуле: число каналов памяти процессора * число процессоров. h3. Форм-фактор || Тип сервера || Описание || Плюсы || Минусы || | 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} | Высокая цена. \\ На некоторые модели сложно найти поставщика. | |