Кросспост из
блога автора. Комментировать лучше
там, но можно и тут
Продолжаю развлечения с 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 опять вернусь.