"Плохое" оборудование

Skip to end of metadata
Go to start of metadata

Кратко: для Carbon Reductor в сервере в основном важны три вещи: хорошие сетевые карты, хороший процессор и хорошая оперативная память.

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

Наша компания давно работает с интернет провайдерами. Несмотря на то что мы пишем софт, нам часто приходится помогать своим клиентам решать проблемы с оборудованием. Так вот - мы настолько намучились с D-Link / Realtek / другими дешёвыми сетевыми картами за последние десять лет, что категорически рекомендуем не использовать их для чего-то кроме рабочих станций.

Возможно как железо они не так уж и плохи, но дело в их драйвере:

  1. Одна очередь на rxtx, вне зависимости от числа доступных ядер процессора.
  2. Отсутствие возможности задать параметры размеров ring-буферов сетевой карты (маленький буфер приводит к потерям)
  3. Отсутствие возможности задания coalesce-параметров, нам важен rx-usecs, за счёт его уменьшения можно снизить нагрузку с сетевой карты, увеличив нагрузку на процессор.
  4. Отсутствие поддержки NAPI драйвером.

Intel

  • 82541PI Gigabit Ethernet Controller (rev 05)
  • 82574L Gigabit Network Connection
  • 82540EM Gigabit Ethernet Controller (rev 03)
  • 82545EM
  • 82579LM
  • 82571EB Gigabit Ethernet Controller (rev 06)
  • 82573L Gigabit Ethernet Controller
  • 82573E Gigabit Ethernet Controller (rev 03)
  • 82578DC Gigabit Network Connection (rev 06)
  • 82546EB Gigabit Ethernet Controller (rev 01)
  • 82546GB Gigabit Ethernet Controller (rev 03)
  • I219-V (rev 31)
    Хоть мы и рекомендуем Intel, но конкретно эти модели брать не советуем.

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

Для рабочей станции подходит, но для сервера фильтрации - не очень.

Если используете, но не выходит поменять, а с ним начали возникать проблемы с зависаниями - может помочь статья.

Broadcom

  • Broadcom Corporation NetXtreme BCM5701
  • Broadcom Corporation NetXtreme BCM5704
  • Broadcom Corporation NetXtreme BCM5715
  • Broadcom Corporation NetXtreme BCM5719 - периодически появляются dropped / missed на 256 mbit/s.
  • Broadcom Corporation NetXtreme BCM5721
  • Broadcom Corporation NetXtreme BCM5722
  • Broadcom Corporation NetXtreme II BCM5708
  • Broadcom Corporation NetXtreme II BCM5709 - несмотря на наличие нескольких очередей RSS может начать работать только на одной из них, создавая высокую нагрузку на единственное работающее ядро
  • Broadcom Corporation NetXtreme II BCM5716 , поддерживает распределение прерываний на доступные ядра, но основную массу пакетов всё равно оставляет на нулевом ядре.

Разное

  • VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] (rev 86)
  • Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet
  • Qualcomm Atheros AR8131 Gigabit Ethernet
  • Qualcomm Atheros AR8132 Fast Ethernet
  • Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet (rev c0)
  • 3Com Corporation 3c905C-TX/TX-M [Tornado]
  • Red Hat, Inc Virtio network device
  • Marvell Technology Group Ltd. 88E8057 PCI-E Gigabit Ethernet Controller
  • Marvell Technology Group Ltd. 88E8050 PCI-E ASF Gigabit Ethernet Controller
  • QLogic Corp. cLOM8214 1/10GbE Controller (rev 54) - не работает изменение числа очередей, из коробки 3rx, 1rxtx.

NVIDIA

  • Corporation MCP55 Ethernet (rev a3)

Проблемы:

  • только одна очередь
  • при указании диапазона ядер smp_affinity_list использует только первое ядро (плохой драйвер)
  • нет возможности указывать coalesce параметры.

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

29:     360056          0 3486921273          0   PCI-MSI-edge      eth1
Pre-set maximums: RX: 16384 Current hardware settings: RX: 2048
Cannot get device coalesce settings: Operation not supported
≈75 mbit/sec 26364 pkts/sec

Процессоры

Одно- и двухядерные процессоры

Для тестов в локалке офиса - вполне сойдёт, там где от этого зависит наличие/отсутствие штрафов - нет.

Мощность процессора - одна из самых важных для Carbon Reductor характеристик сервера. Одно ядро часто приводит к шторму прерываний, а в итоге к потерям.
Желательно использовать процессор с современной микроархитектурой (Sandy Bridge и новее)

Более того - по умолчанию даже очень мощный процессор с 32 ядрами может использоваться как одноядерный Celeron, если все прерывания висят на 1 ядре.

Процессоры AMD

Встречались плавающие проблемы, исчезавшие после перехода даже на обычный десктопный Intel Core i3/i5/i7, не говоря о Xeon.

Процессоры без L3 кэша

Плохо:

$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2 ONLINE
0   0    0      0    0:0:0      да
1   0    1      1    1:1:1      да
2   0    0      2    2:2:0      да
3   0    1      3    3:3:1      да

Хорошо:

$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       да
1   0    0      1    1:1:1:0       да
2   0    0      2    2:2:2:0       да
3   0    0      3    3:3:3:0       да
4   0    0      4    4:4:4:0       да
5   0    0      5    5:5:5:0       да
6   0    0      6    6:6:6:0       да
7   0    0      7    7:7:7:0       да

Оперативная память DDR1, DDR2

Частота оперативной памяти - тоже довольно важная вещь в задаче фильтрации трафика. Приблизительные цифры для сравнения:

  • DDR1 400 MHz - не подходит
  • DDR2 600 MHz - не подходит
  • DDR3 1333-2133 MHz - плохо подходит
  • DDR4 2133-2800 MHz - подходит
  • DDR4 2800-3400 Mhz - хорошо подходит

Не создавайте из оперативной памяти "бутылочное горлышко".

P.S: объём памяти на текущий момент для Carbon Reductor не так важен, как частота. 4-8Gb - адекватный запас на ближайший год.

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.