{toc}
h1. Сетевые карты
Наша компания давно работает с интернет провайдерами. Несмотря на то что мы пишем софт, нам часто приходится помогать своим клиентам решать проблемы с оборудованием. Так вот - мы настолько намучались с D-Link / Realtek / другими дешёвыми сетевыми картами за последние десять лет, что категорически рекомендуем не использовать их для чего-то кроме рабочих станций.
Возможно как железо они не так уж и плохи, но дело в их драйвере:
# Одна очередь на rxtx, вне зависимости от числа доступных ядер процессора.
# Отсутствие возможности задать параметры размеров ring-буферов сетевой карты (маленький буфер приводит к потерям)
# Отсутствие возможности задания coalesce-параметров, нам важен rx-usecs, за счёт его уменьшения можно снизить нагрузку с сетевой карты, увеличив нагрузку на процессор.
# Отсутствие поддержки NAPI драйвером.
h2. 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)
Хоть мы и рекомендуем Intel, но конкретно эти модели брать не советуем.
Только одна очередь, в итоге всем будет заниматься только одно ядро процессора.
Для десктопа - хороша (и наверное дешёвая довольно), но для сервера фильтрации - не очень.
Если используете, но не выходит поменять, а с ним начали возникать проблемы с зависаниями - [может помочь статья|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=65799130].
h2. Broadcom
* 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 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
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. Сетевые карты
Наша компания давно работает с интернет провайдерами. Несмотря на то что мы пишем софт, нам часто приходится помогать своим клиентам решать проблемы с оборудованием. Так вот - мы настолько намучались с D-Link / Realtek / другими дешёвыми сетевыми картами за последние десять лет, что категорически рекомендуем не использовать их для чего-то кроме рабочих станций.
Возможно как железо они не так уж и плохи, но дело в их драйвере:
# Одна очередь на rxtx, вне зависимости от числа доступных ядер процессора.
# Отсутствие возможности задать параметры размеров ring-буферов сетевой карты (маленький буфер приводит к потерям)
# Отсутствие возможности задания coalesce-параметров, нам важен rx-usecs, за счёт его уменьшения можно снизить нагрузку с сетевой карты, увеличив нагрузку на процессор.
# Отсутствие поддержки NAPI драйвером.
h2. 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)
Хоть мы и рекомендуем Intel, но конкретно эти модели брать не советуем.
Только одна очередь, в итоге всем будет заниматься только одно ядро процессора.
Для десктопа - хороша (и наверное дешёвая довольно), но для сервера фильтрации - не очень.
Если используете, но не выходит поменять, а с ним начали возникать проблемы с зависаниями - [может помочь статья|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=65799130].
h2. Broadcom
* 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 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
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}