Тестирование гигабитных сетевых адаптеров на 64-битной шине PCI, платформы AMD760MPX


В предыдущих обзорах гигабитных адаптеров был сделан вывод, что производительности 32-битной шины PCI, работающей на частоте 33 МГц, недостаточно для полного раскрытия скоростного потенциала микроконтроллеров этих карт. Особенно это касается серверных адаптеров с 64-битным интерфейсом PCI. Поэтому эти гигабитные адаптеры были протестированы на серверной платформе с 64-битными слотами PCI. В качестве такой платформы использовались материнские платы на чипсете AMD-760MPX.

Забегая вперед, скажу, что стабильность работы материнских плат на этом чипсете (а скорее самого чипсета), несмотря на прошивку последней версии BIOS, оставляла желать лучшего. Из-за этого не все тесты удалось запустить, да и результаты часто были далеки от ожидаемых. Если бы эти же адаптеры ранее не были протестированы на 32-битной платформе Intel PCI, я бы грешил на них. Но предыдущие тесты никаких глюков не выявили, а тут они посыпались как из рога изобилия и на всех без исключения картах. Именно поэтому был сделан вывод, что виноват в этом чипсет AMD-760MPX. Поэтому в следующих обзорах адаптеры будут сравниваться на платформах с чипсетами от Intel.

Стабильность AMD платформы я оцениваю по результатам работы гигабитных адаптеров на Intel платформе. Во втором случае никаких глюков в процессе тестирования обнаружено не было. Хотя вполне возможно, что это зависит и от конкретных производителей или моделей материнских плат. Нижеописанные глюки повторялись на обоих AMD стендах, вне зависимости от номера используемого PCI разъема.

Так же отмечу, что по отзывам читателей, материнские платы от Tyan на чипсетах AMD-770MP[X] работают вполне стабильно и без нареканий.

Несколько слов о самом AMD-760MPX. Это развитие чипсета AMD-760MP, который в свою очередь является первым чипсетом от AMD с поддержкой двухпроцессорных конфигураций. Именно этим он и отличается от своего предшественника, AMD-760. Есть еще и второе отличие, наиболее интересное нам — поддержка 64-битной шины PCI. Приведу краткие характеристики чипсета AMD-760MPX.

  • северный мост AMD-762, system controller
  • южный мост AMD-766, peripheral bus controller
  • двойная процессорная шина 200/266MHz для процессоров Athlon
  • поддержка до 4GB оперативной памяти PC1600 и PC2100
  • поддержка порта AGP 4× (включая режимы 1× и 2×)
  • поддержка шины PCI 2.2
  • 7 PCI слотов 33MHz 32/64-bit или 2 PCI слота 33/66MHz 32/64-bit
  • два канала EIDE, ATA 33/66/100
  • четыре порта USB
  • поддержка управления питанием (включая ACPI)

Для тестового стенда были собраны два компьютера, на одном из которых был установлен процессор AMD Athlon 1700 МГц с материнской платой MSI K7D Master (однопроцессорная конфигурация), на другом — два процессора AMD Athlon MP 1200 МГц на материнской плате Asus A7M266-D. Остальная конфигурация была общей у обоих компьютеров:

  • Память 256 MБ DDR;
  • Жесткий диск Maxtor 20 ГБ;
  • ОС Windows 2000 с установленным сервис-паком версии 3 и Linux Red Hat 7.3 с ядрами версий 2.4.19 и 2.4.20
  • Все дополнительные навесные устройства, типа встроенного звука, USB, сетевой платы, были отключены в BIOS.
Компьютеры напрямую (без использования коммутатора) соединялись восьмиметровым кабелем категории 5е (практически идеальные условия).

На двухпроцессорной машине операционные системы устанавливались с поддержкой двухпроцессорности. Но данные по загрузке процессора снимались с однопроцессорной машины (с AMD Athlon 1700 МГц).

Теоретические основы Gigabit Ethernet были изложены в этой статье, а мы перейдем к рассмотрению участников тестирования.

Список плат

В этом обзоре участвуют пять плат. Все — с 64-битным интерфейсом PCI. Первая плата — Hardlink HA-64G, от MAS Elektronik AG




Около разъема RJ-45 адаптера установлено три индикатора, показывающих наличие линка на скоростях 10/100/1000 Мбит и режим передачи данных мерцанием. Сетевой адаптер одночиповый, в качестве Ethernet-контроллера используется AC1001KPB от AltimaCommunications

Микроконтроллер AC1001 является контроллером 10/100/1000Base-T Ethernet с интегрированным трансивером. Его краткие характеристики:

  • поддержка 32/64-шины PCI v2.2 на частотах 33/66 МГц
  • скорости работы 10/100/1000BASE-T в полу- и полнодуплексных режимах
  • управление потоком (flow control) в режиме полного дуплекса
  • поддержка ACPI стандарта “Wake on LAN support”
  • размер интегрированного буфера пакетов — 48 КБ
  • поддержка IEEE 802.1Q VLAN с установкой/удалением VLAN тагов (до 64 VLAN-ов)
  • поддержка очередей стандарта 802.1p layer 2 (до четырех уровней приоритета)
  • наличия интерфейса SNMP MIB II (802.3x) для сбора статистики
  • поддержка PXE совместимой Boot ROM
  • возможность подключения внешней EEPROM
  • поддержка Jumbo фреймов
  • максимальное энергопотребление — 4 Ватт

Кроме микроконтроллера, на плате можно заметить еще несколько крупных деталей. Одна из этих микросхем, расположенная между контроллером (или трансивером, если он внешний) и разъемом RJ-45, устанавливается на каждом адаптере. В данном случае это PG243002 производства YCL Electronics Co., Ltd, являющаяся пассивным фильтром для подавления синфазных помех. Она-то как раз и позволяет увеличить длину сегмента до 100 метров на гигабитных скоростях приема/передачи данных. Микросхема вынесена за основной контроллер вероятно потому, что технологии производства аналоговых микросхем и чипов логики различаются. В CMOS-микросхемах очень проблематично добиться приемлемых характеристик для индуктивности (то есть, сделать индуктивность или трансформатор в чипе).

            

Также на плате можно заметить стабилизатор напряжения LMS1585 и микросхему EPROM памяти 24LC32A объемом 32 Кбит.

            

Для установки Hardlink HA-64G в ОС Windows использовались драйверы, прилагаемые на дискете с картой, так как новых версий на сайте компании выложено не было. Драйвер имеет лишь необходимый минимум опций, а размеры Jumbo Frame выставляются дискретно и могут принимать значения 1500, 2000, 3000 и 4000. Тем не менее, при включении Jumbo-фреймов передача данных была невозможна — не проходили даже пинги.

Для ОС Linux тоже был использован прилагаемый с картой драйвер (Gigabit Ethernet Driver AC1000 версии 10.3 от 27/12/01), так как новых версий найдено не было. В ядре Linux был найден драйвер “Broadcom Tigon3 support”, который поддерживает некоторые чипы Altima. Но с данной картой он не заработал (не находил адаптера), что в принципе ожидалось — в нем заявлена поддержка лишь микроконтроллера AC1000. К сожалению, родной драйвер не позволяет менять размеры MTU и соответственно включить поддержку адаптером Jumbo-фреймов. Возможно, поддержку можно включить где-то внутри исходных текстов драйвера, но мои поиски успехом не увенчались. Поэтому Hardlink HA-64G оказался единственным адаптером, протестированным без Jumbo-фреймов (на MTU размера 1500).

Вторая карта — 3С996B-T — от компании 3Com, еще не участвовала в наших обзорах.

              

Карта имеет низкопрофильный дизайн (Low Profile PCI design) и может устанавливаться в U2 сервера, как впрочем и все остальные карты в этом тестировании. Также это единственная в этом обзоре карта, драйвера и другие утилиты которой поставлялись на компакт-диске (с остальными картами шли дискеты). На адаптере установлено четыре индикатора. Как обычно, три из них сообщают о режиме скорости 10/100/1000 Мбит, а четвертый показывает наличие передачи данных мерцанием.

Адаптер тоже одночиповый, в качестве микроконтроллера используется BCM5701 от Broadcom Corporation. Контроллер создан по 0,18-микронной CMOS-технологии и в него интегрирован трансивер физического уровня.

Его характеристики:

  • поддержка 3,3/5 Вольт 32/64-битной шины PCI v2.2 на частотах 33/66 МГц и 32/64-битной шины PCI-X v1.0 на частотах 33/66/100/133 МГц
  • скорости работы 10/100/1000BASE-T в полу- и полнодуплексных режимах
  • размер интегрированного буфера пакетов — 96 КБ
  • два RISC ядра с размером кэша 16 КБ для расширенной классификации пакетов
  • ускорение обсчета контрольных сумм кадров протоколов IP, TCP, и UDP.
  • аппаратная сборка сегментированных TCP кадров
  • алгоритмы для уменьшения количества прерываний к центральному процессору
    (передача нескольких полученных пакетов за одно прерывание)
  • поддержка PXE 2.0 совместимой Boot ROM
  • поддержка стандарта ASF 1.0 (Alert Specification Forum)
    (возможность удаленного управления OS-absent сетевыми устройствами (без операционной системы))
  • поддержка ACPI стандарта Wake on LAN
  • наличия интерфейса SNMP MIB II (802.3x) для сбора статистики
  • совместимость с ACPI 1.1a
  • поддержка виртуальных сетей IEEE 802.1Q VLAN с установкой/удалением VLAN тагов (до 64 VLAN-ов)
  • поддержка очередей приоритетов стандарта 802.1p layer 2 (до четырех уровней приоритета)
  • возможность подключения внешней EEPROM
  • поддержка Jumbo фреймов размером до 9 КБ
  • управление потоком (flow control) 802.3x
  • поддержка агрегирования и балансировки каналов (802.3ad), и двунаправленного выравнивания нагрузки (как независимо от производителя коммутатора, так и зависимо от коммутатора (например, Fast EtherChannel and Gigabit EtherChannel Support)
  • интегрированный интерфейс для ПО, позволяющий тестировать кабельный канал: длину и качество линии, полярность и порядок пар.

В качестве пассивного фильтра для подавления синфазных помех тут используется микросхема S558-5599 производства Bell Fuse Inc. А микросхема LT1764 (расположенная справа) является стабилизатором напряжения.

С адаптером 3Com 3C996B-T поставляется компакт-диск с драйверами, утилитами диагностики и сопутствующими программами. Но на их англоязычном сайте были обнаружены более новые версии драйверов как для Windows, так и для Linux.

                

В ОС Windows была использована последняя версия драйвера (2.67). Интерфейс драйвера предоставляет богатые возможности по настройке настройки сетевого адаптера, а так же его диагностике. Размеры Jumbo-фреймов задаются дискретно от 1500 до 9000 с шагом 500. Никаких нареканий к работе адаптера в это ОС не было.

В Linux ситуация была несколько посложнее. В наличии у меня оказалось три драйвера. Два из них — родные — Broadcom BCM 5700 with Broadcom NIC extension (NICE) версии 2.028 (от 05/11/2001), с прилагаемого компакт диска и тот же драйвер версии 5.05 (от 24/09/2002), скачанный с сайта. Оба драйвера успешно собрались, но оба не работали на ядре 2.4.20. Версия 5.05 выдавала Segmentation Fault при попытке поднятия адаптера, а версия 2.028 — Kernel Panic при попытке послать какие-либо данные (например, ping). На предыдущем ядре версии 2.4.19 оба драйвера собрались и работали, но не давали изменять размер MTU (в ответ выдавая Invalid argument).

Последний драйвер брался из ядра Linux — Broadcom Tigon3 (tg3) версии 1.43.2.80 (он одинаков в 2.4.19 и 2.4.20 ядрах). С ним адаптер работал без нареканий.

Остальные три адаптера являются двухчиповыми решениями. Все они собраны на микроконтроллере DP83820BVUW корпорации National Semiconductor. DP83820BVUW — это 10/100/1000 Мбит Ethernet-контроллер. Он не имеет встроенного трансивера, а только интерфейсы для связи с внешним трансивером и шиной PCI.

Его характеристики:

  • поддержка 32/64-битной шины PCI v2.2 на частотах 33/66 МГц
  • скорости работы 10/100/1000BASE-T в полу- и полнодуплексных режимах
  • размер интегрированного буфера пакетов — 96 КБ
  • ускорение обсчета контрольных сумм кадров IPv.4 протоколов IP, TCP, и UDP.
  • встроенные очереди FIFO размерами 8 КБ на передачу и 32 КБ на прием;
  • поддержка Flash/PROM интерфейсов для удаленной загрузки
  • поддержка последовательной EEPROM в качестве внешней памяти для загрузки конфигурации при включении
  • наличия интерфейса SNMP MIB II и Ether-Link MIB (RFC. 1398) для сбора статистики
  • совместимость с ACPI 1.0
  • поддержка виртуальных сетей IEEE 802.1Q VLAN с установкой/удалением VLAN тагов.
  • управление потоком (flow control) 802.3x
  • поддержка очередей приоритетов (QoS) стандарта 802.1D и 802.1Q
  • поддержка Jumbo-фреймов

Второй чип — DP83861VQM-3 — это трансивер физического уровня. На большинстве адаптеров на него установлен радиатор, так как трансиверы ощутимо греются. При смене карты сразу после выключения компьютера, чип (если он без радиатора) или сам радиатор на ощупь практически обжигающие. Трансивер может работать на скоростях 10/100/1000 Мбит/сек в режимах полу- и полного дуплекса. Поддерживает режим автосогласования скоростей и режимов из вышеназванного списка (IEEE 802.3u Auto-Negotiation).

Замечу, что в этот раз глюк, описанный в предыдущем обзоре (насчет неизвестного дополнительно PCI-устройства), не наблюдался.  Из этого можно сделать вывод, что виноват был не драйвер сетевого адаптера, а комбинация определенных материнских плат и адаптеров.

Первая плата на вышеперечисленной логике — TRENDnet TEG-PCITX2 от компании TRENDware.

            

На трансивере адаптера установлен радиатор, Сзади на ней расположены шесть светодиодных индикаторов, первые три информируют о скорости соединения 10/100/1000 Мбит, а остальные показывают наличие коллизий, полного дуплекса и факта передачи данных.

              

Для установки сетевого адаптера в ОС Windows 2000 использовалась последняя версия драйвера, скачанная с сайта производителя. Номер версии — 5.01.24. В драйвере присутствуют богатые возможности настройки и тюнинга карты, а размер Jumbo Frame можно задавать вручную с шагом 1, насколько большой размер можно выставить, не выяснялось. Но с размером фрейма 16128, являвшимся максимальным в тестах, адаптер работал без нареканий.

Для ОС Linux предлагаются лишь драйвера для ядра 2.2.х. В ядрах версии 2.4.х они не собираются, поэтому использовался встроенный в ОС драйвер “National Semiconduct DP83820” версии 0.18 (для ядра 2.4.19) и версии 0.20 (для ядра 2.4.20). Но в ней задан максимальный размер Jumbo Frame — 8192. Причем не правя исходный код драйвера, невозможно выставить размеры пакета более 1500.

На драйверах версии 0.20 при включении Jumbo-фреймов, в самом начале теста (при размере пакета передаваемых данных больше 1024 байт) адаптер “зависал”. То есть ОС продолжала функционировать, но передача и прием данных прекращались, как будто от адаптера отсоединили сетевой кабель. При использовании драйвера версии 0.18 эта ситуация наступала несколько позже, на MTU = 6000 и при размерах данных для передачи больше 128 КБ. На всех остальных адаптерах с микроконтроллером DP83820 ситуация полностью повторялась.


                

Следующий адаптер — SMC9462TX, произведен компанией SMC Networks. Радиатор на трансивере у карты отсутствует. На карте установлено пять светодиодных индикаторов. Три из них показывают скорость работы, а два остальных — наличие линка и передачи данных

Последняя версия драйвера (1.2.905.2001) для Windows, скачанная с сайта компании, не заработала. Во время требуемой (после установки драйвера) перезагрузки ОС падала с BSOD (синим экраном смерти). Поэтому в тестах были использованы референсные драйверы (те же, что и адаптера TEG-PCITX2)

Для Linux использовался поставляемый с ядром драйвер “National Semiconductor DP83820”, как и у предыдущего адаптера. Драйвер, выложенный на сайте компании, не собирался, а уже собранный (поставляемый в пакете с исходными текстами) модуль не запускался, требуя отсутствующие зависимости.

И последняя рассматриваемая в этом обзоре карта — LNIC-1000T(64) от компании LG Electronics.



На трансивере адаптера присутствует радиатор. Карта имеет шесть индикаторов с функциями, аналогичными адаптеру TEG-PCITX2.

            

Для ОС Windows использовались прилагаемые с картой драйверы, так как на сайте компании новые драйверы отсутствовали. Судя по их виду, использовались референсные драйверы (опять же аналогично TEG-PCITX2) с теми же функциями. Их версия — 5.01.24.

Драйверы для Linux присутствовали только для версии ядер 2.2.х, поэтому для тестирования использовался тот же, что и в случае TEG-PCITX2, тоесть драйвер, встроенный в ядро ОС.

Методика тестирования

Методика не претерпела изменений с предыдущего тестирования.

В Windows 2000 для генерации TCP-трафика и снятия показаний использовались программы Iperf версии 1.2 и NTttcp из Windows 2000 DDK. Программы запускались для снятия показателей скорости передачи данных и загрузки процессора при размерах Jumbo Frame

  • 1514 байт (Jumbo-фреймы отсутствуют);
  • 3014 байт;
  • 6014 байт;
  • 9014 байт;
  • 16128 байт.
Естественно, что карты, не поддерживающие определенные размеры Jumbo фреймов, эти тесты пропускали.

Кроме этого, Iperf запускался в режиме генерации UDP-трафика. При этом, утилите устанавливалась фиксированная скорость потока UDP (скорость генерации UDP-трафика), а в качестве результата принималась результирующая скорость передачи. Максимальная скорость рассчитывалась методом последовательных приближений с минимумом/максимумом в 200/800 Мбит соответственно и шагом в 10 Мбит.

Также осуществлялся небольшой тюнинг ОС. Параметры запуска программ и установки реестра следующие:

  • Максимальный размер пакета 1514 байт (Jumbo Frame отсутствуют)

    Hkey_Local_Machine\System\CurrentControlSet\Services\Tcpip\Parameters
    TcpWindowSize = ffff

    Параметры запуска Iperf в режиме TCP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K
    сервер: iperf -s -m -M 100000 -w 64K -l 24K

    Параметры запуска Iperf в режиме UDP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K -u -b 200M
    сервер: iperf -s -m -M 100000 -w 64K -l 24K -u

    Параметры запуска NTttcp:
    передатчик: ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    приемник: ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -n 10000

  • Размер пакета 3014, 6014, 9014 и 16128 байт (включены Jumbo Frame)

    Hkey_Local_Machine\System\CurrentControlSet\Services\Tcpip\Parameters
    TcpWindowSize = 20971520 (20 Мб)
    Tcp1323Opts = 3

    Параметры запуска Iperf в режиме TCP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K
    сервер: iperf -s -m -M 100000 -w 1M -l 24K

    Параметры запуска Iperf в режиме UDP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K -u -b 200M
    сервер: iperf -s -m -M 100000 -w 1M -l 24K -u

    Параметры запуска NTttcp:
    передатчик: ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    приемник: ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -rb 20000000 -n 10000

Каждый TCP-тест запускался 15 раз, после чего выбирался лучший (по скорости) результат. В случае NTttcp загрузка процессора измерялась встроенными средствами программы, а в Iperf — с помощью системного монитора Windows 2000.

В ОС Linux для генерации трафика и снятия показаний использовалась программа netPIPE версии 2.4. Программа осуществляет генерацию трафика с постепенно возрастающим размером пакета данных (пакет размера N передается несколько раз, количество передач обратно пропорционально его размеру, но не меньше семи). Эта схема позволяет наглядно увидеть процент использования канала в зависимости от размера передаваемых данных.

Изменение размера Jumbo Frame осуществлялось через изменение MTU в настройках сетевого интерфейса командой
ifconfig eth0 MTU $size up
При тестировании устанавливались следующие размеры MTU:

  • 1500 байт (Jumbo фреймы отсутствуют);
  • 3000 байт;
  • 6000 байт;
  • 9000 байт;
  • 16000 байт.
Параметры запуска netPIPE:
приемник: NTtcp -b 65535 -o logfile -P -r
передатчик: NTtcp -b 65535 -o logfile -P -t

Результаты тестирования

В тестах под ОС Linux, в скобках после названия карты указано название используемого драйвера и версия, если их несколько.

1. Windows 2000, скорость передачи данных.





2. Windows 2000, загрузка процессора.

В абсолютном большинстве тестов лидирует адаптер 3Com 3C996B-T, что и ожидалось. За ним с небольшим отрывом следует адаптер Hardlink HS-64G при MTU = 1500. К сожалению, его не удалось протестировать при включенных Jumbo фреймах, но скорее всего распределение карт бы не изменилось. Превосходство этих двух адаптеров над остальными объясняется в первую очередь более новым поколением Ethernet-микроконтроллера, двухчиповые адаптеры появились значительно раньше.

Далее отмечу тот факт, что адаптер SMC9462TX показывает существенно большие скорости по сравнению с остальными двумя картами, собранными на тех же микроконтроллерах. Вот это уже странно, особенно учитывая средне-одинаковые показатели этих адаптеров на 32-битной шине PCI. Возможно, сказывается плохая совместимость с конкретными материнскими платами или самим чипсетом AMD-760MPX.

По минимальной загрузке процессора опять выигрывает карта от 3Com (всего 12 процентов при почти максимальной скорости для гигабитного Ethernet на размере MTU в 6000 !). А вот адаптер от Hardlink показал, несмотря на новый микроконтроллер, самый высокий процент использования CPU (при отключенных Jumbo-фреймах), надеюсь новые драйверы все же исправят ситуацию с этой картой. Также меня поразил факт сильного увеличения загрузки процессора при MTU = 9000 и выше на двухчиповых картах. Неясно, с чем это связано.

3. Linux, изменяем размер MTU.









Видно, что родной драйвер Broadcom для адаптера 3C996B-T сильно выигрывает в скорости по сравнению с сторонним драйвером TG3, да и в документации с родным драйвером присутствует рекомендация использовать именно его.

У остальных адаптеров картина достаточно ожидаемая, вот только у двухчиповых адаптеров график получается очень зубчатым при отключенных Jumbo-фреймах. Это на версии драйвера 0.18. А вот при использовании версии 0.20 график выравнивается, да и общая скорость передачи данных сильно возрастает.

4. Linux, сравнение производительности на одинаковом размере MTU.





Эти графики подтверждают сказанное выше.

Последней, как обычно, привожу диаграмму пиковых скоростей адаптеров в netPIPE. Картина повторяет вышеописанные, кроме того, что скорости двухчиповых карт сравниваются (адаптер от SMC перестает вырываться вперед).

Выводы

Результаты, безусловно, требуют проверки на другой платформе, до этого делать какие-либо глобальные выводы рановато.

 

Адаптер 3Com 3C996B-T предоставлен представительством компании 3Com
Адаптер LG LNIC-1000T(64) предоставлен компанией ОЛДИ
Адаптер Hardlink HA-64G предоставлен компанией MAS Elektronik AG
Адаптеры SMC94x2TX предоставлены компанией SMC NetworksG
Адаптеры TRENDnet TEG-PCITXx предоставлены компанией MultiCo ltd

 




Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.