10G дома: Myricom + Samba

Продолжаем развлекаться с 10G. Сначала картинка, чтобы было веселее. Это копирование с локального диска на "NAS"

Под катом - как она получена (и почему NAS в кавычках)

Рассказываю по порядку.

У меня в NAS стоит 4 штуки медленных WD Caviar Green в RAIDZ (и еще парочка - в другом массиве), ожидать от них, что они смогут насытить 10G или, хотя бы, близко подойти к какому-то ограничению на десятке - смешно. Удвоение скорости на практике меня временно устроит, потом подгоним еще дисков и все переразметим, но тестировать хочется в более санитарных условиях.

Начальный сетап

А значит беру линуксовую машину (i7-920, 12GB RAM), диски там еще медленнее, но можно сделать рамдиск на 8GB. Делаю, mkfs.ext4, раздаю его самбой и получаю такое (естественно, со второго раза, чтобы источник оказался в кэше):

Уже неплохо, на длинных транзакциях это чуть быстрее чем мой локальный массив о шести терабайтниках 7200rpm в RAID6.

С копированием кучки мелких файлов (исходники Qt) все грустнее, причем даже просто на взгляд.

Atto Disk Benchmark показывает такую вот картинку:

что подтверждает идею, что с мелкими транзакциями все печально.

Для сравнения, вот так ведет себя локальный массив:

На транзакциях до 32k локальный массив быстрее, дальше чуть медленнее.

Настройки самбы

Увидев у Самбы провал после 32k, бью себя по лбу и донастраиваю самбу:
[global]
read raw = yes
read size = 65536
socket options = TCP_NODELAY SO_RCVBUF=262144 SO_SNDBUF=262144
Буфера можно было и побольше нарисовать, но поленился. После этого ATTO показывает уже такое

На больших блоках (начиная с 32k) все улучшилось, на мелких - ничего не изменилось. А простое копирование большого файла - дает картинку с которой начался пост. Она, конечно, лукавая, 800+ там сначала, а сходится все в районе 600Mb/sec, но и это очень неплохо.

Что делать с мелкими файлами - непонятно, все упирается, очевидно, в RTT. Каких-то разумных вариантов с самбой не вижу, дальше буду пробовать iSCSI.

P.S. MTU у карты 9000, других настроек не делал, хотя их там довольно много.

Comments

упирается, разумеется, не только в rtt, но и в fsync (или fclose).

rsync попробуй забавы ради.

Ну ты понимаешь, на ramdrive fsync происходит за какое-то исчезающее время. А вот сообщить что он прошел - требует RTT.

Да, про mfs я забыл.

Тем более попробуй rsync -- вроде как с третьего протокола flush/close у него async

У меня в виндовом rsync трапается ssh.exe.

Понятно, можно кабеля перекинуть в юниксную машину, или как тут советуют, live ubuntu, и посмотреть. Но это даст мне скоростя Unix-Unix.

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

Да, некрасивенько. Попробуй ещё iSCSI с глубиной очереди 16-32, но не факт что будет лучше.

А NFS не вариант?

По моим детским впечатлениям, NFS медленнее самбы. Попробую, конечно, в Win7 (для которой мне все и надо) клиент есть в комплекте.

У меня на десятке NFS из коробки был быстрее самбы и намного. Потом я как-то долго самбу пилил и таки допилил. У меня правда кругом были линуксы кроме нескольких виндовых клиентов.

У меня виндовый клиент. По атто - получается раза в 4 медленнее (я знаю, что атто - плохая бенчмарка), по копированию больших файлов - тоже, на мелких файлах - примерно как самба, на глазок (при том что по ATTO мелкие файлы тоже медленнее, ну да бенчмарка так себе)

Но я совершенно не умею готовить NFS, вообще никак. Ну то есть rsize=32 wsize=32 (в винде в килобайтах задается) nolock, а на сервере rw,async. Больше ничего придумать не сумел.

Winda это винда, Linux это линукс. Все может оказаться по разному.

Из интереса померил прокачку большого файла у себя Linux -- Linux.

Ничего не тюнил, все с одного пинка из коробки как завелось, так и использую.

scp - 19.4 Mb/сек
samba - 22.4 Mb/сек
nfs - 49.3 Mb/сек

Ну у меня то с самбы (FreeBSD) на винду - больше 100. Тоже по гигабиту. И туда и сюда - в обе стороны насыщается ether.

Да, NFS tuning, увы, сильно зависит от совокупности клиент-сервер.

Хуже всего с ESXi client, он принудительно синхронный, скотина :(

Ну на практике у меня же будет виндовый клиент основной. Значит им и надо тестировать.

можно ещё попробовать передать файл по netcat'у, просто для интереса.

Интересно, что я про ATTO никогда не слышал... Ну там Areca, LSI, HighPoint -- а про ATTO -- нет... К чему бы это?

У меня был такой контроллер: http://blog.lexa.ru/2008/11/30/atto_vs_areca.html

И справлялся он неплохо, особенно с учетом цены. Но в какой-то момент он сдох и выяснилось, что купить замену в Мск можно только "под заказ, поставка два месяца (или один, не суть".

После чего я купил Адаптек, ибо для них замена покупается в тот же день (а держать запасной для дома - ну как-то перебор)

Хм. А мне этот бенчмарк не даёт выбрать сетевой диск :-[ ]

Может от версии зависит? У меня 2.34, все смонтированные буквы дисков - видит. И NFS и SMB.

Ну, я пошёл на сайт и скачал -- дали мне 2.47. Видит только NTFS и даже CD-ROM (Никак не уберу его из системника), на смонтированные X, Y, Z не видит...
Не выложишь свою?

Покопался в download history. Я вчера взял отсюда вот: http://sburke.eu/blog/wp-content/uploads/2011/04/bench32.exe

По ссылке отсюда: http://sburke.eu/blog/2011/04/quick-disk-benchmark-for-windows/
Но прямо в эту секунду они лежать изволят.

Уже не лежат. Результаты, прямо скажем, на столько удивительные, что я им не верю: ATTO Bench results

Бенчмарка кривая, но при этом популярная.

Надо понимать что она делает - она создает файл в 256M (или сколько попросишь) и разной длиной блока по нему елозит.

И это отражает что-то. И как-то.

Вот в том-то и дело, что что-то и как-то. Например, там есть галка Direct I/O, но в 7-ой винде так перепахали многоуровневое кеширование файлов, что не факт, что программа 2006 года справилась всё отключить.

Т.е. очень хочется кричать ``ура'' b что у меня насыщен гигабит -- но, во-первых, его реально из-за кривости контроллеров на обоих концах (Intel LOM на сервере и вообще Atheros на клиенте) не насыщает даже iperf, а, во-вторых, ГДЕ ЭТА СКОРОСТЬ В РЕАЛЬНОЙ ЖИЗНИ?!

В моей реальной жизни - как видишь по картинкам в посте - оно врет ну процентов на 10-20.

А что у тебя реальная жизнь? У меня типичная задача, в которой видно скорость -- это копировать туда-сюда файлы. И там получается вдвое медленней (30-45Mb/s).

Скорость открытия файлов фотошопом прямо с сети оценить сложно, он и на локальном диске иногда тупит.

У меня реальная жизнь вчера - по показаниям винды - 600+ Mb/sec копирования одного большого файла по самбе. А бенчмарка эта намеряла ~700-780 на запись.
А пока самбу не потюнил - файл копировался со скоростью ~400 и бенчмарка показывала столько же.
А мелкие файлы - едут медленно (винда скорость не показала, но Qt покопировался несколько минут и я это безобразие прервал, а там всего-то гигов 5 т.е. должно было мухой пролететь).
И то же самое показывает бенчмарка.

Не, она может врать в деталях, но порядок величины там разумный.

Копировать же виндой ужасно неудобно! :))))
Дело вкуса, конечно...

Виндой неудобно, а Far-ом - медленно. Заметно медленнее (и всякие Advanced copy на сети не спасают).
Поэтому если немножко - то Far, а если вдруг что-то большое, то винда.

В таких случаях, бывает неплохо FARу поставить галку
Use system copy routine

Второй запуск в тех же условиях:

В общем, кажется, этот бенчмарк почти ни о чём на высоких скоростях. А Intel NAS Test toolkit не работает на 64-х битных OS, а I/O Mark или как его там не бывает под FreeBSD и вообще он шибко умный какой-то и я в нём не разобрался.

Ну то есть надо понимать, что это гигабитаня сеть. И 111848MB/s -- это как-то немножко черезчур, как мне кажется.

А где у тебя Mb/s? Я вижу там Kb/s, а мегабайт, соответственно, 111.

Да, это я просто описался -- конечно, 111MB/s. Но всё равно это как-то больше чем должно быть на гигабите, нет?

А MTU какое?
Оверхед TCP+Ether - байтов ну допустим 60 или 80, я забыл уже сколько.
Это, соответственно, меньше 1% для MTU 9000 и ~4% для MTU 1500.
1Gbit/s - это 125 десятичных мегабайт в секунду, после вычитания оверхеда остается 120.

а у тебя ~112000 по 1024 т.е. чуть меньше 115 десятичных мб/с

MTU1500, так как у Atheros максимум 7Kb, и ладно бы 7Kb, но после нескольких часов работы в таком режиме ему отрывает крышу и он начинает дропать половину фреймов.

А какие там мегабайты -- десятичные или нет -- не ясно ;-)

Ну 111700 - это килобайты, туда-сюда 2.5%.

Очень интересно, как заработает iSCSI. И правильно ли я понял, что IB интереснее относительно Myricom? Т.к. имеет меньшее время отклика, и, соответственно, быстрее на мелких блоках?

iSCSI на Myrinet заработал неплохо, сегодня будет отчет.

Отчет про IB будет позднее (у меня дефицит слотов, поэтому надо одни карты вынимать, другие вставлять...)