Когда в руке молоток - все кажется гвоздями
Наконец я могу, не ограничиваясь скоростью источника, померять скорость своих Samba-ящиков:
Сначала оно жрет его в ARC - и оттуда горб (1+Gb/sec) на первые гигабайт 8, потом легкий провал (сброс кэша), потом sustained на ~600.
Конфиг:
- 8x1Tb WD Re (дискам 4 года, они ~100+ со шпинделя выдают, надо будет поменять постепенно на те, которые 150+ могут, а больше и не надо уже)
- Adaptec 5805 (и он на ~7% быстрее LSI 9211-8i, померял сегодня)
- FreeBSD 12-CURRENT
- ZFS RAIDZ2
- ARC 14Gb, L2ARC выключен
- Samba 4.3 (в предыдущих экспериментах показалось что 4.4 - медленнее)
- Intel X540-T2, mtu 9000
- Сеть на FreeBSD маленько тюнил (см ниже)
- Рабочая станция на Windows 8.1
- На винде - заменил Interrupt Moderation c adaptive на low (и это заметно помогло на чтении), send/recv buffers - на максимальные значения, драйвера последней версии (но разницы с драйверами что сама винда приносит - не вижу).
Что делал с сетью на FreeBSD-стороне (оптом, каждую отдельную настройку не подбирал, скопировал чьи-то чужие настройки для 10G router):
/boot/loader.conf:
hw.ix.tx_process_limit=512
hw.ix.rx_process_limit=512
hw.ix.txd=8192
hw.ix.rxd=8192
hw.ix.enable_aim=0
# Copy-pasted, реально близко столько не надо, используются 1500 и 9000 соответственно
kern.ipc.nmbclusters="5242880"
kern.ipc.nmbjumbop="2621440"
/etc/syscttl.conf
net.inet.tcp.sendbuf_max=33554432
net.inet.tcp.recvbuf_max=33554432
smb4.conf:
read raw = yes
write raw = yes
max xmit = 65536
socket options = TCP_NODELAY SO_RCVBUF=655360 SO_SNDBUF=655360
#aio - пробовал, выключено
#use sendfile - пробовал, выключено
#large readwrite - пробовал, тоже закомментарено
log level = 0
Могу еще попробовать чего, если интересно.
Comments
Алексей, меня ваша картинка
Алексей, меня ваша картинка просто убила на повал. На моём ноутбуке (основной комп) Lenovo Y460 копирование с диска Seagate ST9750420AS (7200, NTFS, второй раздел из двух) на Seagate ST9320325AS (5400, вставлен вместо DVD, FAT32, раздел в конце диска) даёт около 55 Мбайт/сек, со всплеском до 60 Мбайт/сек. При копировании с первого на Seagate BlackArmorDAS35 (1 Тб, 7200, eSATA, NTFS, один раздел) скорость плавает 60-70 Мбайт/сек. У вас - в десять раз быстре. Ух. Некисло наверное ваш конфиг стоит, плюс, сколько потрачено времени на его настройку и выбор.
Ну давайте посчитаем, сколько
Ну давайте посчитаем, сколько оно стоит:
Свой старый i7-2600 (без дисков и видеокарты) я продал в мае за $100. Это было очень дешево (зато забрали сразу).
Собрать новое по порядку величины стоит $300 (это 20 тыс, по 5 тыс.р. за материнку, процессор, память и корпус - более-менее вписываемся же).
Возьмем более-менее аналог, WD10EFRX. 8 штук при покупке тут обойдутся по сегодняшнему курсу в $573
Получается, соответственно, $500 за минимальный ящик с 10G + 10G карта в рабочую станцию (без дисков), $700 - за ящик с двухпортовыми 10G картами. Плюс диски. С терабайтниками - ящик стоит "как диски" (плюс-минус), с трех-терабайтниками (по $150 за диск) - ящик будет 1/3 от всего решения.
Соответственно, почему люди мучаются с домашними NAS с гигабитными сетями - ну не знаю.
Да, время на настройку всего этого нужно. Но мне - прикольно.
UPD: с ноутбуком, конечно, ничего сделать не получится, 10G туда не воткнуть, значит предел - 120Mb/sec по гигабиту. Ну если только вот какой-то Thunderbolt, да.
UPD2: ближайший аналог, как я прикинул, DS2015xs, всего-то на $1000 дороже и без такой гибкости (там просто 8x3.5, а у меня еще 6x2.5 в том же корпусе). Зато хот-свап и очень компактный корпус.
Время на настройку нужно
Время на настройку нужно только первопроходимцам :) Остальным достаточно просто почитать этот блог или хобот. Я вот так 10G карты купил, узнав отсюда, что в Китае всё есть, и даже работает.
Ну, нет.
Ну, нет.
Бывают же странности "гигабитный порт работает на половине скорости" (более того, я примерно с этого и начинал лет уже 12 назад). С одной стороны - информации много, с другой - она же наслаивается и устаревает. Все приходится самому.
Да, не так дорого. Люди думаю
Да, не так дорого. Люди думаю в массе используют готовые NASы, т.к. всё равно подключаются по WiFi. А если учесть всякие затраты на решение проблем при апгрейдах софта, то без необходимости или желания все берут Synology, но те модельки, что попроше.
Сколько у вас итоговый объём с учётом зеркалирования, 1 Тб? На какое расстояние такое соединение позволяет вынести коробку?
С ноутом да, мне и такой необходимости нет. Но удивился, что аж в 10 раз медленее! До чего технология дошла в обычный дом :)
Ради интереса глянул, сколько будет стоит такое чудо техники для Маков: $700 оптика http://www.bhphotovideo.com/c/product/1132027-REG/promise_technology_sle... и $500 витая пара. Но зато по целых две пары портов в адаптерах.
8 дисков в raidz2 (два любых
8 дисков в raidz2 (два любых можно сломать одновременно), то есть ~6Tb места. Чуть меньше, потому что у ZFS побольше потери, ну и последние ~10% лучше не занимать, проще считать что 5Tb.
Расстояние для Cat 6a - вроде 100 метров.
Вдогонку.
Вдогонку.
для маков, в теории, можно гонять бешеные гигабиты прямо по thunderbolt. Метров, поди, на пять.
В практике не разбирался, у меня только в ноутбуке такой порт есть, а одного мало.
по идее хоть на километр -
по идее хоть на километр - если найти мифический оптический кабель тандерболта.
вроде на 100 метров.
вроде на 100 метров.
Но я вот прочитал это вот: http://appleinsider.com/articles/14/02/16/review-cornings-thunderbolt-op...
и не понял.
В разъеме макбука - медь. Получается, этот кабель - это там внутри, в разъеме, медиаконвертор?
Получается, да: https://www
Получается, да: https://www.corning.com/microsites/coc/ocbc/Documents/CNT-076-AEN.pdf
С ума сойти!
извращенцы, угу.
извращенцы, угу.
> Ух.
> Ух.
а вам зачем больше-то ? автор поди тестирует очень часто всякое на туевой хуче raw ... поставьте себе SSD внутрь lenovo уже хорошо будет, 1TB < ~$300
Z / V
Мне действительно не к чему.
Мне действительно не к чему. Я просто удивляюсь прогрессу и сравнительно небольшой цене таких скоростей (в 10 раз). 512 SSD стоит как мой ноут, через годик его просто полностью сменю.
Ну счастье - в 10Gbit.
Ну счастье - в 10Gbit.
Кои стали доступными минимум 4 года назад, первые дешевые ($23 за штуку) карточки у меня завелись дома в октябре 12-го года: http://blog.lexa.ru/2012/02/10/10g_doma_pervye_uspekhi.html
Первые 8G в ARC - это
Первые 8G в ARC - это интересно, у меня скорость падает намного раньше, где-то на втором гигабайте. Виртуальному NAS отдано 16G, но там ещё живет torrent, docker...
Это был свежезагруженный NAS,
Это был свежезагруженный NAS, ARC - пустой. Может быть дело в этом.
> Наконец я могу, не
> Наконец я могу, не ограничиваясь скоростью источника,
это все потому что памяти на ram disk не хватило ... надо иметь типа 128+Gb RAM !
Z / V
Не встаеть. 32 - максимум на
Не встаеть. 32 - максимум на этой архитектуре
(а на более других горшках - другие приколы)
> Не встаеть. 32 - максимум
> Не встаеть. 32 - максимум на этой архитектуре
ждем 47 годовщину !
Z / V
128Gb через год не будет, уже
128Gb через год не будет, уже известно.
Даже в новом EP? У меня в
Даже в новом EP? У меня в простой i7-6700K вроде как 64 встаёт (я поставил 32 потому что там цена вовсе не в два раза в этом месте возрастает), но это же не топовая плафторма.
Ну так новый EP - Broadwell,
Ну так новый EP - Broadwell, только вот вышел.
Не хочу!
Я Skylake уже не хочу, i7-7xxx жду.
Так то да, в 2011-м сокете памяти можно
А чо обещают? :)
А чо обещают? :)
Ну таки да.
Ну таки да.
Но с 2016Q3 обманут, похоже (только ноуты), я думаю что реально 2017Q2 (или Q1)
Я имею ввиду — что там
Я имею ввиду — что там хорошего будет?
Ну вот Support for Intel Optane Technology вижу, но непонятно что вообще под этим скрывается.
3-й thunderbolt
3-й thunderbolt
поддержка optane - да, непонятно что это
+4 линии PCIe в чипсете
Ну и я надеюсь на еще более лучшее энергоуправление, потому что вот в скайлейке хорошо но недоделано (и проблемы реально даже у интела и MS), тут наверное сделают работу над ошибками.
Да на десктопе можно
Да на десктопе можно выключить почти всю энергосберегайку :)
Я вот гоняю много бенчмарков, так и турбобуст вырубил, а то мешает.
меня вот 20Wt в idle (по core
меня вот 20Wt в idle (по core temp) раздражают невероятно.
20 должна вся система в простое потреблять.
Интересно посмотреть на
Интересно посмотреть на картинку чтения. Особенно в сравнении с записью. А ведь наверняка картинка есть :-).
Чтение без L2Arc - примерно
Чтение без L2Arc - примерно на 100Mb/s медленнее в среднем и близко не такое ровное.
Но тестировать чтение неприятно "SSD запиливается"
А ведь скорость чтения и
А ведь скорость чтения и записи у hhd дисков условно равны :-).
Между тем диском и этим
Между тем диском и этим диском - еще samba (довольно загадочная) ну и клиент, который этой самбе что-то транслирует.
И во что оно упирается (latency? неверный readahead?) - хер пойми.
Вот при записи видно, что сетевая часть - не (сильно) ограничивает. По тому самому горбу в 1+gb/s в начале.
При чтении - чтобы диск не запиливать надо свой софт какой-то понятный-вменяемый делать (или осваивать всякие готовые), а лень.
Я думаю самба в данном случае
Я думаю самба в данном случае не является ограничением.
Чтоб не пилить ssd в Windows в Cygwin64Terminal (ставиться на раз) набираем dd if=/cygdrive/t/test of/dev/zero ... ну в общем всё как во FreeBSD.
И попадаем еще на
И попадаем еще на дополнительный emulation layer.
У меня где-то в закромах был варез, который писал большие (и маленькие и всякие) файлы, я его в прошлый заход, когда iSCSI vs SRP мерял написал, вот помню что написал.
Поищу.
Но на самом деле интерес довольно условный уже, в интересном мне паттерне (просмотр/редактирование большого набора raw-файлов) я вижу скорости на интерфейсе "под 400" (раньше было скорее "под 250" и то не каждый раз) и еще я вижу, как оно постепенно (довольно медленно, что обидно, надо пожалуй поменьше recordsize попробовать) ложится на ssd-кэш и мне хорошо - вся эта йэбля была не зря.
(а еще я бэкапный раздел унес на отдельный пул - и у меня основной не встает колом когда оно бэкапится)
>> И попадаем еще на
>> И попадаем еще на дополнительный emulation layer.
Ну так легко же проверить :-). Загнать небольшой файл (6-8GB) в ARC и проверить самбу и слой эмуляции.
>> еще я вижу, как оно постепенно (довольно медленно, что обидно, надо пожалуй поменьше recordsize попробовать) ложится на ssd-кэш
Нижнюю планку скорости записи проверял? Ещё бы до конца понять что делают .l2arc_norw и .l2arc_noprefetch :-). Какое у тебя сложилось мнение/понимание?
Ну вот я и проверил (файл был
Ну вот я и проверил (файл был на 80, но читал я оттуда 10), см ниже.
Планка записи у меня поднята до небес, буду еще играться с recordsize (похоже что 1M именно для L2ARC не сильно оптимально), но наверное уже ближе к сентябрю, дела все забросил с этим NAS.
>> Планка записи у меня
>> Планка записи у меня поднята до небес
Я имел ввиду скорость записи на заполненные ssd, входящие в кэш.
>> буду еще играться с recordsize
Recordsize - это наверено вообще для любой поставленной задачи "главная" тема. И наверно довольно сложная :-).
Ну я понимаю какой паттерн
Ну я понимаю какой паттерн мне интересен и что мерять, дальше можно уже тестовый стенд делать
На страйп пишется - ну вот 400Mb/s видел по zpool iostat. Разрешено 900.
>> Ну я понимаю какой паттерн
>> Ну я понимаю какой паттерн мне интересен и что мерять, дальше можно уже тестовый стенд делать
Я немного не об этом. Файловая система читает допустим блоками в 1MB. Самба запрашивает блоки по 64K. Допустим в ARC кэшируется всё ... и понеслась :-). Для примера: разреши в ARC кэшировать только метаданные. Затем прочитай по самбе большой файл с recordsize 1MB. Затем такой же по размеру файл с recordsize 64kB. Сравни :-).
iostat это немного не то :-). Но если оттолкнуться от 400MB/s записи в кэш и 500-600MB/s чтения из пула hdd, то фраза "как оно постепенно (довольно медленно, что обидно," становится как бы понятной, даже без учёта всех остальных настроек :-).
К этому прилагается еще ж
К этому прилагается еще ж паттерн доступа. В интересном мне случае
- файлы 30-80Mb (с запасом)
- читаются или "мегабайт-два" (JPEG-превьюшки; у Sony кажется поменьше они) - но сразу у десятков файлов
- или файлы целиком (один или несколько).
- или только EXIF метадата (десятки килобайт) - у всех файлов каталога
Веса непонятны, оверхед L2ARC понятен (то ли 200, то ли 400 байт на record), тестовых наборов с разным recordsize сделать нетрудно, остается "достать линейку", потратить три дня (вряд-ли меньше) и померять.
Всё-таки попробуй, что я
Всё-таки попробуй, что я написал выше и ты удивишься результату. Я не про паттерны, а про согласование размеров блоков (recordsize) при передачи из одной "среды" в другую. А когда станут понятны механизмы взаимодействия "сред" и что на что влияет, тогда подобрать параметры под нужные паттерны станет делом техники.
PS. Заинтригую. Решил ещё раз проверить, что написал. У меня правда на тестовой машинке FreeBSD 10.1, поэтому сравнивал recordsize 64k и 128к(максимальный размер). primarycache=metadata. Дальше dd ... Выиграл 64k. Если сравнить 64k с 1M, то разрыв будет ещё больше (боюсь даже предположить :-)). Конечно primarycache=all всё нивелирует, но заставляет задуматься :-).
dd по сети или локально?
dd по сети или локально?
Локально на другой машине (10.3, 6 дисков, raidz1) - чем больше блок (при БОЛЬШОМ блоке у dd) тем толще партизаны.
dd для создания файла
dd для создания файла локально. По сети только чтение с windows клиента.
Ну вот да, я буду тестировать
Ну вот да, я буду тестировать именно что "чтение с windows клиента", но там же еще
- настройки самбы
- настройки сетевой карты
Это не на полчаса развлечение, а значит ближе к сентябрю.
На гигабите то у меня проблем не было (последние пару лет что я был на гигабите т.е. 2010-12), насытить его даже с тройки "архивных" медленных дисков получалось.
Но тем не менее - попробовал,
Но тем не менее - попробовал, один и тот же файл, пришлось его уложить в L2ARC чтобы не отключать, ну значит 10G ресурса кэша запилили.
Локально, на сервере (из ARC, понятно):
[lexa@iscsi ~]$ cd /zdata/test/
[lexa@iscsi /zdata/test]$ dd if=file of=/dev/null bs=10M count=1000
1000+0 records in
1000+0 records out
10485760000 bytes transferred in 1.448997 secs (7236566569 bytes/sec)
Через cygwin/mingw (который пришел мне вместе с git-msys, может не очень кошерный):
lexa@ganzer970 MINGW64 /t
$ dd if=file of=/dev/null bs=10M count=1000
1000+0 records in
1000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 36.1993 s, 290 MB/s
Вдогонку: это, естественно,
Вдогонку: это, естественно, не первая попытка. А сначала 3 по сети, потом локальная (зачетная), потом по сети зачетная.
dd не торт, но вообще вот варез который просто читает файлы большими блоками через Win32 - надо освежить.
Ну тогда можно разочек и на
Ну тогда можно разочек и на ssd, что бы снять сомнения с самбы :-).
Нет сомнений в самбе. md5deep
Нет сомнений в самбе. md5deep (первое что попалось под руку что много читает) в один процесс читает с ssd-шки 500+ (и упирается в CPU), а с сети - 200-280.
В два процесса - 990 и те же
В два процесса - 990 и те же 200-280.
>> Чтение без L2Arc -
>> Чтение без L2Arc - примерно на 100Mb/s медленнее в среднем и близко не такое ровное.
>> Нет сомнений в самбе. ... , а с сети - 200-280. ... В два процесса - 990 и те же 200-280.
В одном случае 500MB в другом 200-280MB. Что-то здесь не пляшет :-).
Решил проверить сам. Правда у меня нет 10 гигабитной сети :-). Нашел подходящий файл на шаре (в моём случае 9,2GB, можно взять поменьше, нужно только чтобы он полностью влез в ARC). Начал читать его локально dd. У меня первое чтение 162MB/s. Четвертое чтение 8409MB/s. Проверил чтение идёт только из памяти. На стороне windows клиента прочитал этот файл. Проверил чтение было только из RAM, то есть претензий к источнику нет. Скорость 112MB/s :-). Если есть 10 гигабит и быстрый ssd на стороне windows, то можно попробовать оценить и 10 гигабит.