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

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


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

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

*Основные причины:*

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

h2. Intel

* 82541GI Gigabit Ethernet Controller (rev 05)
* 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)
* I217
Хоть мы и рекомендуем Intel, но конкретно эти модели брать не советуем.


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

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

Если используете, но не выходит поменять, а с ним начали возникать проблемы с зависаниями - [может помочь статья|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=65799130].




h2. 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 , поддерживает распределение прерываний на доступные ядра, но основную массу пакетов всё равно оставляет на нулевом ядре.

h2. Разное

* 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.
* Сетевые карты NC326i

h2. NVIDIA

* Corporation MCP55 Ethernet (rev a3)

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

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


{code}
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

{code}

h1. Процессоры

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

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

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

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

h2. Процессоры AMD

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

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

Плохо:

{code}
$ 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 да
{code}

Хорошо:
{code}
$ 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 да
{code}

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

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

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

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

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