Samba 10G Performance
Картинка для привлечения внимания. Сервер FreeBSD+Samba, клиент: Windows 8.1 ,
Есть у меня FreeBSD-шный бокс с ZFS к которому я хожу по Samba по 10G-линку. И до вчерашнего дня производительность не радовала, 200Mb/sec получались только изредка, а вообще типичная скорость была лишь немногим выше гигабита. При этом
- MTU 9000 на этом линке - глючило (временами отваливалась сеть)
- А практически такой же бокс (сторадж - просто RAID6 на адаптеке) на iSCSI по такому же линку - свои 400-500-600 (и 700 в тестах) мегабайт в секунду на больших файлах спокойно отдает.
Я грешил на тормоза ZFS (в частности, на фрагментацию), но с подачи комментаторов померял скорость со стандартным размером записи и с мегабайтным увидел скорости в 450 и 500-510Mb/sec (при создании файла из /dev/zero с выключенной компрессией) и стал решать проблему системно: все порубать топором и начать с чистого листа.
Настройки
1. MTU 9000
списал строчку со второго ящика, где никаких проблем не было, списал виндовые настройки со второго интерфейса (но там тоже только MTU):
ifconfig mxge0 ipaddr mtu 9000 lro
Второй день работает нормально.
2. Другие настройки сети FreeBSD
У меня там было наворочено еще от 8.3 (и от какой-то презентации Сысоева "как настраивать FreeBSD для 10 гигабит). Я на это посмотрел - и /etc/sysctl.conf обнулил в сетевой части, решил что потом буду по одному добавлять.
Таким образом, настройки стандартные.
3. Samba: 3.6->4.3
Давно пытался обновить, всякий раз начинал читать про доменные контроллеры и AD и ломался. В этот раз дочитал до "простой парольной авторизации" и осилил.
Написал в smb.conf:
server role = standalone server
Правда не знаю, влияет ли это на что-то, но мои несколько shares с парольной авторизацией - работают.
4. Настройка Samba
Вот такая, скопирована из 3.6, добавил read raw/write raw:
read raw = yes
write raw = yes
read size = 65536
max xmit = 65536
socket options = TCP_NODELAY SO_RCVBUF=655360 SO_SNDBUF=655360
Результат
Вот, например, такой:
При более детальном рассмотрении, выяснилось, что ~450Mb/s - это и скорость источника (SSD) и примерно та скорость, с которой Samba+ZFS жрут данные (точнее, сервер может жрать чуть быстрее, см. ниже), случайно так совпало.
Если копировать тестовый второй раз, так что он лежит в кэше на рабочей станции, то картинка совсем другая первые пару гигабайт:
Оно вполне уверенно выжирает ~8 гигабит до тех пор, пока их с той стороны готовы жрать (то есть пока кэш ZFS не наполнится). А потом - sustained примерно на скорости ZFS, ~500Mb/sec, 450 - это ограничение источника.
И это не какая-то хитрожопость винды, чуть больше гигабайта в секунду честно прилетает в интерфейс (понятно что over 1Gbyte/s надо ловить, чтобы начало передачи не попало в серединку секунды):
lexa@home-gw:/home/lexa# netstat -I mxge0 1
input mxge0 output
packets errs idrops bytes packets errs bytes colls
0 0 0 0 0 0 0 0
2 0 0 132 2 0 108 0
119196 0 0 1074512860 60482 0 3351540 0
59322 0 0 505632650 30233 0 1675086 0
64256 0 0 552026374 32962 0 1826064 0
62976 0 0 597133764 32300 0 1789476 0
58867 0 0 532466126 30205 0 1673322 0
Итого
- Я не знаю, что дало наибольший эффект: смена MTU или апгрейд самбы. Скорее второе (SMB3, то-се).
- Это не настройки FreeBSD: я для пробы вернул старый sysctl.conf, ничего не изменилось.
- Скорости, ограниченные только реальными ограничениями дисков - возможны. Были бы диски быстрее - ну может не уперся бы в теоретические сетевые ограничения, но 8Gbit/s которые я вижу на бурсте - это уже хорошо.
- Надо ZIL/L2ARC на SSD прикручивать на эту самбу.
Comments
Я вот тут прикрутил 80Gb
Я вот тут прикрутил 80Gb L2ARC на 5x3Tb raidz1 пул. Ну, купил 120G SSD'шку, поставил систему в начало, а хвост отдал под L2ARC. Hit rate 10%. Т.е. мог и не париться.
А вообще, надо уже перейти на самбу 4.3, да.
Ну вот у меня каждый день -
Ну вот у меня каждый день - пара десятков (а бывает и пара сотен) гигабайт бэкапа.
Понятно что это - любой L2ARC убьет насмерть.
То есть отдельные пулы и все вот такое вот....
> Понятно что это - любой
> Понятно что это - любой L2ARC убьет насмерть.
ниразу не эксперт - а не продают ли устройств которые просто представляют из себя много-много слотов для DRAM модулей подешевле, а снаружи они видны как диск ?
Z / V
Были такие. С интерфейсом
Были такие. С интерфейсом SATA (причем как бы не 1.5gbit). SSD-шки их съели.
Но в случае ZFS - можно системную память использовать под ARC
у меня до сих пор такой на
у меня до сих пор такой на 4Гб стоит в компе на DDR-1 от Gigabyte
Осталось только понять -
Осталось только понять - зачем?
ну хбз - работает
ну хбз - работает
викинуть жалко
у меня там примари скрач фотошоповский живёт ;)
Ну там 150Mb/sec (реально
Ну там 150Mb/sec (реально скорее 120), а на SSD поди 400+. Скратч будет быстрее на SSD, ему нужна линейная запись/чтение, не random
130/110
130/110
хоть у меня на материнке и нет SATA-3 (P6T WS PRO)
убедил - выкину! ;)
Я вот сегодня приценивался к
Я вот сегодня приценивался к LSI-9211 HBA.
8-портовый - 99 баксов у китацев (интересно насколько подделка, конечно). Можно и сделать себе SATA3 за такие деньги.
На авите такое регулярно
На авите такое регулярно бывает, по крайней мере в Питере. Ну да, не новое. Но с проверкой.
Ну вот приедет сейчас 10G
Ну вот приедет сейчас 10G intel - посмотрим какие они китайские контроллеры.
Ну, я читал всякое, что это
Ну, я читал всякое, что это отбраковка. И поэтому как повезёт. Может автоконтроль чипа и ошибся и всё будет работать. А может не ошибся и там будет каждый 1000-ый пакет битый. или не тысячный. И гарантии нет, потому что по серийному номеру такое никогда не было продано.
Ну посмотрим, интересно.
Ну посмотрим, интересно.
Мирикомовские толстые и короткие кабеля мне уже поперек горла, хочу тонких и длинных
Я тут опять смотрел на 10G
Я тут опять смотрел на 10G мне рассказали лайфхак: карты без модулей, и медные провода с SFP+ разъёмами. До 10 метров оказывается бывают, стоят дёшево. Ну, по сравнению с SFP+ модулями.
Ну есть такое, да.
Ну есть такое, да.
Но если дешево, то это опять мелланоксы или мирикомы, я первых уже наелся (снятие с поддержки, драйверов для свежей винды йок), а у вторых - цена за порт уже как у двухпортовых китайских интелов примерно.
А RJ-45/10G уже onboard стали появляться и цена за порт вменяемая.
А покажи? Я искал — не нашёл.
А покажи? Я искал — не нашёл.
Myricom: http://www.ebay.com
Myricom: http://www.ebay.com/itm/Myricom-10G-PCIE-8AL-R-XFP-PCIeX8-Network-Adapte...
Mellanox: http://www.ebay.com/itm/Mellanox-ConnectX-2-Single-Port-SFP-10GBE-P-N-Ne...
Так и искал: Mellanox 10G SFP
Не, мирикомы и, особенно,
Не, мирикомы и, особенно, мелланоксы я находил. Я про те, что не они :)
Китайский intel X540?
Китайский intel X540?
Так и ищи Intel X540, выбирай по from China
$150/штука, не так и дёшево :
$150/штука, не так и дёшево :)
Смешно, что дуалпорты не принципиально дороже.
Ну вот я таки хочу RJ45, если
Ну вот я таки хочу RJ45, если заработают и несколько месяцев нормально проживут - мирикомы пропью.
Расскажешь! (отдельная
Расскажешь! (отдельная ненависть к стоимость портов на свиче, тащить отдельный провод P2P это какое-то ивзращение!)
У меня три ящика, считая WS,
У меня три ящика, считая WS, свитч не нужен.
Каждый с каждым? :)
Каждый с каждым? :)
Ну, интернет же ещё приходит в дом, такое. Т.е. две подсети на ящике, брр. Неудобно, как по мне.
У меня на ящике, в который
У меня на ящике, в который приходит интернет в дом
- отдельная подсеть для Wifi
- отдельная подсеть для родных и близких
- отдельная для меня (1Gbit)
- отдельная 10G
- два аплинка.
И еще есть отдельная 10G для того стораджа, который раньше был infiniband.
Хм. И в Москве есть.
Хм. И в Москве есть.
а как ZIL должен помочь?
а как ZIL должен помочь? samba любит sync(2) ?
Насколько я себе понимаю, SMB
Насколько я себе понимаю, SMB должен синки из приложений транслировать туды, дальше?
должен. какое-то неправильно
должен. какое-то неправильно приложение! :) если fsync() в каком-то виде есть, то нужен ZIL, конечно. в zfs коммит ну ооооочень дорогой, да еще и в значительной части однопоточный.
Ну я вот тут втихаря ваяю
Ну я вот тут втихаря ваяю приложение для копирования фоточек с флеш-карточки/камеры.
И таки да, призадумался - и если стоит галка "удалить с источника", то буду делать fsync(), потому что потеря таких данных - это бывает очень больно и дорого.
ну тогда имеет смысл
ну тогда имеет смысл ограничиться одним fsync(2) между копированием и удалением? мне кажется конкретно в этом случае ZIL погоды не сделает - в худшем случае + несколько секунд. ZIL хорош когда fsync(2) сравнительно часто используется. иначе получится, что есть постоянный overhead, а выхлоп неочевиден.
Ну я ж должен каждый файл
Ну я ж должен каждый файл скопированный fsync-ать.
А источник, если это XQD, способен 300-400Mb/sec выдать.
Можно начать sync-ать после
Можно начать sync-ать после того как все файлы скопировались, вроде должно быть лучше.
fsync(2) будет синкать только
fsync(2) будет синкать только один файл. дальше вопрос можно-ли через самбу протащить fs-wide sync
Стандартное значение strict
Стандартное значение strict sync = no у самбы. То есть даже fsync (ну, виндовый аналог) не проскочит
тогда нужна какая-то педаль с
тогда нужна какая-то педаль с ssh sync :) дергать zil на каждый write(2) из самбы - это как-то неправильно, кмк. особенно на общем dataset - оно же все несвязанные метаданные сливает в том числе.
ZIL на работает для zraidX,
ZIL на работает для zraidX, обрати внимание.
как не работает? почему у
как не работает? почему у меня работает? (на линуксе)
Да, это, кажется, я какую-то
Да, это, кажется, я какую-то фигню сказал. Вот 100% уверен был, что где-то читал, но теперь никаких следов не могу найти.
Я с SSD-шными хренями - буду
Я с SSD-шными хренями - буду в любом случае пересобирать на mirror-ы.
C RAID-ами этими - ебатория одна, а 2.5" можно много набить в micro-ATX ящик.
Но все это - не раньше августа. Монголия зовет. И Карелия.
Ну, ты богатый :) А я бедный
Ну, ты богатый :) А я бедный :)
Ну вот ящик который чешется
Ну вот ящик который чешется поапгрейдить - там диски 5-летний гарантийный срок выработали уже.
Обычно это звоночек.
У меня так только что
У меня так только что заменены 2TB Green на 3TB Thoshiba P300. Потому что грины посыпались разом (несмертельно, прочлись без проблем, но пошли релокейшены и решил, что пора). По 41 тысяче часов наработали. Но позволить себе потерять половину оплаченного места при ныншней цене на винты я не могу.
Вот я затрудняюсь пока с.
Вот я затрудняюсь пока с.
То есть raidz2 переживает крах двух любых дисков.
Набранный из зеркал ZFS - очевидно что крах любых двух - не переживает.
resilver - будет идти, по идее, сходное время (нужно заполнить один новый диск).
Перформанс на чтение: пофиг, добъем для активного сабсета l2arc-ом.
Перформанс на запись: по идее, если CPU достаточно, то raidz2 быстрее в однопоточном режиме т.к. один (большой) файл будет размазан по всем дискам?
https://github.com/zfsonlinux
https://github.com/zfsonlinux/zfs/issues/3497 - ускорит восстановление в разы (пропорционально шпинделям)
Надеюсь, оно будет в OpenZFS
Надеюсь, оно будет в OpenZFS а не только в ZOL.
Но всё равно ZFS не умеет решейпить vdev, так что когда оно будет переехать на это можно будет только бэкапои-и-рестором.
будет.. общался с delphix -
будет.. общался с delphix - им это интересно, они патчи инспектируют..
Если ты можешь себе позволить
Если ты можешь себе позволить (по портам и прочему месту) иметь сразу старые диски и новые какое-то время, то я бы померял :)
У меня просто железка больше дисков не вмещает, поэтому мой единственный путь — это заменять диски в raidz1 по одному.
С UFS на ZFS я переезжал взяв два четырёхтерабайтника в аренду и вставив ещё двухпортовый контроллер за 600 рублей :)
У меня в смысле "прочего
У меня в смысле "прочего места" - свободны два 5" отсека. Туда влезут 8 штук 2.5" (почему я и фапаю на этот размер). И портов 5 саташных свободны.
То есть в каких-то вменяемых размерах - можно экспериментировать.
Но. Это рабочий бокс, просто диски из (бывшего раньше) Full Tower убраны в шкаф, ибо я задолбался иметь их под столом.
То есть надо и данные не потерять (ну спишу, да, на дискетки) и времени на это больше пары дней не могу тратить.
Если SSD (или диски тонкие),
Если SSD (или диски тонкие), то в два 5.25 и 12-16 дисков влезут :) Искать Icy Dock MB996SP-6SB и Icy Dock ToughArmor M998SP-B
А ты 8-дисковый этот вживую
А ты 8-дисковый этот вживую использовал? Что там с шумом (два вентилятора ж) и перегревом (8 дисков ж)
нужно всю систему выносить в
нужно всю систему выносить в вентиляционный стояк.. при правильном положении в пространстве и кулеры не нужны ;)
До тех пор, пока у какого-то
До тех пор, пока у какого-то соседа выше вентиляционный стояк не совместится с канализационным.
надо как кондиционер в сплит
надо как кондиционер в сплит системе... вентиляторы наружи, фреон по трубкам внутрь дома и дуть холодным на них.
Z / V
кхм, зачем фрион? обычную
кхм, зачем фрион? обычную воду или антифриз.. а на балконе радиатор от жигулей.
Не, у меня только 4-х и 6-ти
Не, у меня только 4-х и 6-ти дисковые есть. В 4-х медленные терабайтники, поэтому не греются, в 6-ти только 3 SSD, тоже полет нормальный.
А вентиляторы я оторвал - жужжит (не то, чтобы сильно, но меня не устраивает).