10G дома: Myricom, Windows-SMB, iSCSI

Продолжаю развлечения с 10G между двумя рабочими станциями.

Windows - Windows

Запускаю на обеих машинах Win7, на одной делаю Ramdrive на 8G, расшариваю его прямо windows-средствами, запускаю Atto disk benchmark, получаю вот такую картинку:

Каких-то настроек на серверной стороне я не делал, я их и не знаю.

Картинки с Самбы на той же машине (для сравнения) запрятаны в этом посте.

Как видим, на мелких блоках стало побыстрее в 1.5-2 раза (2 раза - для блока 8к), на больших блоках - незначительно медленнее.

Копирование крупных файлов идет с примерно той же скоростью, в районе 500-600MB/sec, то есть быстрее, чем можно надеяться имея в массиве разумное для дома количество HDD под этой сетью. Про копирование мелких файлов будет ниже и отдельно.

Понастраивал всякие параметры у сетевой карты (Adaptive Interrupt Moderation, Interrupt Coalescing Delay), но каких-то больших отличий не увидел.

Заодно, раз на двух концах провода винды, попускал NT Testing TCP Tool, списав настройки с Myricom-овской странички Myri-10G 10-Gigabit Ethernet Performance. В результатах увидел странное:

  • В один поток имею единицы гигабит, типа 3-4, меньше чем iperf давал.
  • В три (и более) потока - имею один поток в 9+ гигабит и 2 (и более) потоков порядка 200Mbit, общая сумма в районе 9.9Gbit/s
Объяснений загадке нет, вдаваться еще и в это - не было сил.

iSCSI

Загружаю Linux, настраиваю там iSCSI, следующим образом (только отличия от defaults):
Target iqn.1-1.com.example:storage.lun1
        Lun 0 Path=/dev/ram0,Type=blockio
        MaxConnections          10              # Number of connections/session
        MaxSessions             10              # Number of sessions/target
        ImmediateData           Yes             # Data can accompany command
        MaxRecvDataSegmentLength 262144         # Max data per PDU to receive
        MaxXmitDataSegmentLength 262144         # Max data per PDU to transmit
        MaxBurstLength          262144          # Max data per sequence (R2T)
        FirstBurstLength        65536           # Max unsolicited data sequence
        MaxOutstandingR2T       16              # Max outstanding R2Ts per cmnd
        Wthreads                16              # Number of IO threads
        QueuedCommands          32              # Number of queued commands
Честно скажу, вообще ничего не понимаю iSCSI, значения подбирал пролетарским чутьем.

Монтирую в винде, форматирую NTFS, запускаю ATTO:

Бенчмарка странная, сразу признаю, более того, при копировании больших файлов я этого самого гигабайта в секунду не вижу. Я и 600 не вижу. Правда я могу упираться в скорость источника, без кэша источник больше 500-600 отдавать всяко не должен, а сделать еще и на второй машине ramdrive - как-то руки не дошли.

В любом случае, скорость с большими файлами более чем удовлетворительная и на iSCSI и на Самбе и на Win7 в позе сервера. Интереснее маленькие.

Мелкие файлы

Берем каталок с Qt 4.8, там кроме Qt у меня еще валяются исходники OpenSSL, QCA и немножко другого мусора, всего 65k файлов и 3.1Gb. И вот прямо Windows Explorer-ом копируем на сетевой диск, время меряем секундомером. Гонял по несколько раз, брал лучшее время. Получается такое вот:
Копирование 65к файлов (3.1G всего) по 10G-сети
ВариантВремя, mm:ss
SSD - Linux,Samba (настройки см. в предыдущем посте)2:43
SSD - Win7 SMB(без настроек)1:14
SSD - iSCSI, настройки см. выше0:42
SSD-Локальный массив, 6xHDD 7200, RAID6, Adaptec 5805, NTFS1:20
SSD-второй SSD0:42

Довольно неожиданный результат: remote iSCSI оказался не медленнее локального SSD.

Более того, одинаковое время наводит на мысль, что бутылочное горло - в источнике. Или где-то еще, но не в диске-приемнике.

Возможно, если бы в наборе файлов средний размер был бы поменьше, то было бы иначе, но и то не факт, SSD пишет быстро (почти упираясь в свое SATA2) только большими блоками, а на мелких всяко есть деградация.

К сожалению, тест SSD-SSD я проделал, когда стенд уже размонтировал, вытащив Myrinet и вставив Infiniband. Понятно, что нужен еще и тест с чем-то вроде поиска файла в относительно большом каталоге (компиляция или что-то вроде этого). На IB я это сделаю, если получу интересные результаты, то к Myrinet опять вернусь.

Comments

супер. Но всетаки не ясно. почему скорость падает ниже 32к блоком? И будет ли такое же падение на IB.
У меня в наличии IB две карты и кабелек. Хранилка выдает локально 700Мбайт. Сейчас по 3xMPIO работает. Нужно это всунуть по iSCSI в ESXi чтоб выжать максимум из хранилки.
Хранилка под Solaris'ом работает. И собрать OpenSM не получается под Solaris. Вот подскажи, ты OpenSM под чем поднял для тестов? Взял из пакетов/портов или компилировал? Если компилировал, то какие зависимости тянет с собой?

Скорость падает понятно почему - потому что чем меньше блок, тем больше заметен RTT. Что будет на IB - увидим, это все требует времени, которого мало, а спешки у меня тоже нет т.к. вся перестройка запланирована одновременно с апгрейдом workstation на Ivy Bridge, т.е. это не раньше мая скорее всего.

Ну а сейчас - ну кину я 10G то текущего NAS, ну упрусь там в диски на уровне ~200Mb/s, это то все тривиально.

Про OpenSM на солярке вот чего пишут: http://syoyo.wordpress.com/2011/12/13/opensm-on-solaris11-works/

У себя я его поднимал и под виндой и под Linux. Сам собирал - только под Linux (ну и на FreeBSD9 он входит в систему и как-то собирается).

Под Linux тянул за собой какой-то infiniband-devel или что-то такое, что у Убунты было в репозитории и приехало как-то само (я не помню что именно, но помню что никакой проблемы не было с написанием apt-get install).

А OFED линуксовый на солярке - не собирается никак, даже частями?

ofed какраз стоит "изкаробки". Если это дрова. Видны оба порта.
Почему IB привлекательнее? потому что имеет меньше RTT, и соответственно быстрее на мелких блоках?

Кабель CX4 подходит от Myricom к IB?

OFED - это и дрова и тестовые утиля и библиотеки. И OpenSM тоже, во всяком случае оный у меня всегда приезжал с OFED.

Кабели - да, одни и те же. У IB требования, похоже, чуть ниже (или чуть другие) - у меня из 4-х кабелей один работает только с IB, а с Myrinet там carrier дрожит, несколько раз в минуту реконнект. Остальные три - работают и там и сям.

Я не умею правильно померять RTT на Myrinet (не понимаю чем), по пингу - там микросекунд 100-120. У IB моего - 6 микросекунд на коротких пакетах.

Ну вообще-то если чистую сеть мерять, то не хватает случая RAMdisk-RAMdisk. Толку-то заодно стораджи мерять.

На практике меня интересует ситуация, "как бы оно было, если бы на той стороне был бы быстрый массив".
Но быстрого массива нет, вот и эмулирую рамдиском.

Для мелких файлов, чую уже, придется свой софтварий написать.

ковыряю аналогичные карточки и IB и ethernet:
3 метровые кабеля (dlink) работают только с IB
из 7-ми одно-метровых два вообще не работают, 5 и IB и только 2 с ethernet

Да, с кабелями - геморой. У меня так:
- китайские кабели (3м) - работают и с Myri и с IB
- D-Link (фирменный, купленный здесь за безумные $180) - только IB
- два метровых совсем дешевых (по $16) - на IB дали 1x, с ether - не работают.

Китайские кабели где покупали?

На eBay, вестимо.

Сейчас у этого продавца их нет, не могу ссылку дать.

Я так понимаю, основные проблемы именно с кабелями?
По каким критериям выбирать их на eBay?

Я выбирал по цене. В результате два самых дешевых (метровые по $16) - нерабочие, самый дорогой (родной D-Link, покупал в Москве) работает с IB, но не работает с 10GbE (менять не стал, его работа на IB меня вполне устраивает), остальные - рабочие.

Каких-то устойчивых критериев - не уловил. Нерабочие китайские - выглядят на вид прилично, распаяны хорошо, какого хрена не работают - не знаю.

SRP target + OpenSM на solaris не пробовали ?

нету солярки в хозяйстве.

Если необходимо подключить 3-4 машины по IB их надо по кольцу подключать?
И будет ли подобный образом работать Remote Direct Memory Access или при таком количестве уже надо про свич думать? Если занимать расчетами с использованием MPI?

Я боюсь, что MPI хочет взять нормальную топологию из IB, а не догадываться что три машины соединены в кольцо. Не уверен, но подозреваю. Т.е. больше двух машин не будет работать нормально скорее всего.

Но свитчи 10Gb совсем же дешевые. 8 портов стоят вот прямо сейчас на eBay $450. И видел 24-портовые за $999 или около того.
Понятно что еще доставка, встанет баксов в 200 запросто, но цены в любом случае приемлемые.

У вас сейчас три карты двухпорторые, чтобы попарно соединить одну машину с каждой другой?

Да. Хотя реально две рабочие машины между собой не соединены, не надо.

Но мне не нужен MPI и прочие броадкасты, кроме как для экспериментов (а эксперименты можно и на двух машинах), а нужен IP (SRP) с рабочих станций на сервер.

ссылку можно на 8 портов

Так вот прямо на eBay набираю "infiniband switch", сортировка по Price+Shipping, lowest first.

Вылезает вот это: http://www.ebay.com/itm/Flextronics-8-Port-4X-SDR-InfiniBand-Switch-F-X4...

Шиппинг написано $49, но это обман.

Ну и там дальше всякое, в том числе 288 портов за $2k (но перевозка этой телушки обойдется прилично, плюс ее точно не растаможить нормально).

Понятно что первый (или там есть еще 24 порта в 1U за 800-999) - надо доставлять в место вроде Shipito и платить им еще немножко денег за перепаковку. Но это - если слать на частное лицо - пролезает под таможенный бесплатный лимит и финальная цена (с пересылками и т.п.) будет в районе 600-650 за 8-портовик и 1200 за 24-портовик.

Если на eBay порыбачить (и, имея адрес в Shipito - не игнорировать то, что USA Only) - я и за $250 за 8 портов видел варианты.

за 250 я никак не могу поймать :) 250 это мой моральный предел :(

Надо рыбачить. Я видел близко к этой цене.
Но для 1U цена пересылки будет изрядная, большой разницы 250 или 350 нет.

Я поискал в completed - 8-портовый 18-го марта продали за $300 :)

хотя я бы с удовольствием нашел 10G ethernet портов cx4 на 4-8, но нет таких за разумные деньги.