Q: windows 7 tcp performance

Есть у меня дисковый бокс (Adaptec 5805, 8 дисков, i5-2400, 8GB RAM), который до сегодняшнего дня жил под Linux c картами Infiniband 10G, доступался я к нему по SRP и выглядело это, в смысле скорости, вот так:

С чем связан провал чтения при размере записи 128-256к - вот не знаю, от слова совсем, но он устойчиво есть, воспроизводится при повторном тестировании. Кстати, как померять под виндами какая у меня длина записи  в типовой нагрузке - тоже не знаю, от слова совсем (на юниксе iostat покажет среднее с момента ребута, а тут, наверное, надо Perf. monitor надрючивать)

Однако подступило страшное:

  • Под Windows 8.1 под мои IB-карты с драйверами плохо: OpenFabrics 3.x под восьмерку нету. То что предлагает вендор (Mellanox, а он прекратил поддержку моих (дешевых) адаптеры Infinihost два года назад) - не содержит драйверов моих карт в свежих (с SRP) драйверах для Win 8.1.
  • А апгрейд на Win8.1 (или десятку) - неизбежен, потому что никакие более старые с мониторами с сильно разными dpi нормально не работают, а 4k - хочется.

И вот всунул я в этот ящик:

  • 10G-адаптеры Myricom, благо были в запасе.
  • Ну и до кучи, FreeBSD-current, потому как тамошний iSCSI хвалили (прямо тут в блоге в комментах), и действительно стало хорошо и просто: простой конфиг, все мгновенно завелось.
  • И пошел туда по iSCSI.

Получилось вот так:

Оно не сразу так получилось, пришлось потюнить маленько: jumbo frames, checksum offload, вот это вот все. Пока не потюнил - на стороне FreeBSD упиралось в 25% CPU load на interrupt на приеме и скорости были ниже; сейчас - около 15% interrupt, 9% system, можно 3 ядра из 4 у CPU отрывать.

То есть:

  • Латентность похуже, поэтому маленьким блоком - плохо (ну это и так было известно из экспериментов 3 года назад)
  • Со скоростью записи - все в порядке, и по тестам и реально вот большие файлы льются примерно так, как на картинке (источники у меня где-то ~550 выдают ну вот с такой скоростью работает).
  • Скорость же чтения - заметно ниже, чем в случае SRP.

Опять же, я показываю финальную картинку, изначально с чтением было еще хуже и наладилось вот до показанной картинки - только после увеличения очередей чтения у адаптера.

Теперь, собственно, ВОПРОС:

А есть ли какие-то магические настройки TCP-стека, которые имело бы смысл применить к клиентской Windows7 для приема одного TCP-потока исходя из того, что памяти на ней изрядно (32Gb) и процессора тоже немало (i7-4770). То есть вот Myricom на сайте пишет, что "Win7 ничего трогать не надо, все работает само", но может быть какие-нть буфера под TCP надо увеличить (которые стандартно - меньше, потому что на 32G мозгов не рассчитаны) или еще чего?

Может быть тупо назначить на карты с двух сторон по два IP-адреса и устроить iSCSI multipath c round robin? Тогда прерывания от карт по разным очередям разлягутся?

P.S. На ту же WS, на место резервной Windows (голая система, подняться из бэкапа если вдруг чего) поставил 8.1 вместо семерки. У нее, при тех же настройках драйвера Myricom, перформанс пободрее:

  • Чтение с iSCSI: ~450Mb/sec вместо ~400
  • Чтение с самбы (c другого ящика): ~350Mb/sec вместо 250-300 (и выше не будет, в другом ящике меньше дисков и они медленнее)

P.P.S. С точки зрения вообще использования, мне iSCSI нравится больше SRP, реконнекты как-то проще происходят, непонятной магии меньше (если SRP не подцепился - что с ним происходит я не научился понимать).

Comments

На запись больше, т.к. оно в память кешируется.
У MS есть гайд performance tuning for windows server (лучше брать по 2012).
Там есть разделы по тюнингу сетевой подсистемы, cifs.
В клиентских ОС все может быть урезано, но что-то из этого можно применить.
Вообще обычно стандартно: брать нормальные карты с RSS, последние драйвера, tcp offload, etc.
AFAIK, iSCSI не тюнится никак со стороны MS. Multipath RR даст только отказоустойчивость, увеличения скорости не будет. Скорость будет делиться.
А вот SMB 3.0 реально работает быстрее. А если несколько сетевых путей до сервера -- то может все интерфейсы загрузить.
По SMB 3.0 сейчас у многих Hyper-V и SQL сервера работают и не кашляют.

Кэширование - в тесте ATTO - выключено (галка Direct IO стоит), с кэшированием скорости сильно выше.
Ну и на стороне дискового бокса я вижу ровно тот же трафик на сетевом интерфейсе, что и выдает мне ATTO.

Касаемо multipath - я исхожу из следующей смешной теории:
- предположим, что узкое место - в районе очереди сетевой карты (на Unix-стороне оно так и было до jumbo frames)
- тогда надо разложить по нескольким очередям этой карты.
- но для одного TCP-потока сделать этого нельзя, там все 3 варианта хэшей для раскладки по очередям (по IP, по IP + TCp port) один TCP-поток сунут в одну очередь.
- теоретически, multipath это место обходит.

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

Вот, кстати, свежая же идея, сделать на стороне ящика с дисками рамдрайв и мучать его!

А с Multipath я обломался, в Win7 его нет, надо тащить из сервера (да и то, там в WIM оно не появляется), мне влом.

Продолжение на рамдиске: http://blog.lexa.ru/2015/04/06/a_windows_7_tcp_performance.html
Вывод: ограничивают не винды.

С SMB 3.0 есть неприятные случаи побития больших файлов при трансфере в mixed конфигурациях. Типа, льём большой backup одним файлом (mssql, к примеру) с WinServer 2008 (SMB2) на WinServer 2012(SMB3). И оно ИНОГДА молча корраптится по дороге. Отключение SMB3 вопрос решает.
Я его теперь боюсь использовать без явной верификации. :(

Чисто мысля в слух: а если купить две карточки Thunderbolt, например http://www.bhphotovideo.com/c/product/1039491-REG/hp_f3f43at_hp_thunderb... и кабель 5,5 метров http://store.apple.com/us/product/HB204ZM/A/thunderbolt-optical-cable-by... Получаем 2*140+180=$460. Наверное, и дешевле можно найти. Gbit/s.

Допустим, линк установили.
Вот во втором ящике есть RAID-контроллер с дисками. Как к нему сходить то?

Thunderbolt networking - на уровне пресс-релизов же пока?

Вроде работает http://arstechnica.com/apple/2013/10/os-x-10-9-brings-fast-but-choppy-th... по ссылки пишут, что коряво, мб сейчас уже лучше, новее не нашёл. Ящик - тоже комп? А сейчас как ходит? Если есть возможность, поставить тоже контроллер.

Вообще, интересно что гугль предлагает Thunderbolt Ethernet 10G, а статей про прямое соединение не особо есть, видимо действительно на уровне пресс-релизов. А я то думал у них уже все работает :)

Это мак-ту-мак, отдельная история, там и компьютер как диск можно использовать. Мне надо Windows с одной стороны. C другой - вот сейчас FreeBSD-current, работает.

Сейчас - прямой коннект, 10G, по нему ходит IP, внутри IP - iSCSI

Да, и вдогонку. Сейчас у меня два 10G-линка работают на старых и дешевых (по $90 купленных) Myricom-ах.
Но конечно это хрупко все - случись чего и замены быстро - не найти.

Буду перелезать на мейнстримный 10G, там деньги уже вполне подъемные, 2-портовую карту с SFP можно найти за 150 на ebay.