Свежие комментарии
Title | Comment |
---|---|
1% - бессмысленно |
Не настаиваю :-), но упомяну про скрытые плюсы. Очень хорошо жмутся метаданные (пусть их объём и невелик по отношению к данным). Насколько помню, ты используешь 1MB recordsize. Если файл больше 1MB и нет сжатия, то последний блок аллоцирует на диске 1MB. Если предположить, что размеры файлов имеют случайное распределение, то в среднем на хвосте файла можно ожидать выигрыша в 0,5MB на диске и это не отражается в коэффициенте сжатия. Как оказалось, embedded-data block pointers после включения lz4 имеют ощутимую долю запросов (если где-то ещё остался счётчик могу посмотреть % от общего числа запросов в реальной эксплуатации). Ну и по умолчанию арк теперь жмёт блоки данных (lz4) и хранит их в таком виде в памяти. Экономить на процессорном времени не сильно получится :-). |
lz4 в смысле latency вовсе не бесплатный |
Если мне не изменяет память, если блок не жмётся то пишется не жатый и читается соответственно. Если удалось хоть немного сжать, то с диска будет читаться меньше секторов, что может компенсировать время затраченное на декомпрессию, поэтому с latency не всё так однозначно. |
Ну вот samba 4.6/4.7 - |
Ну вот samba 4.6/4.7 - упирается в ядро CPU, насколько я вижу. 4.3 (которая у меня была побыстрее) - в pkg нет, собирать немножко лень. С другой стороны Win10, совокуплено через асусовский свитч (но mbuffer-у свитч не мешал) |
Если затюнить |
(11.1 + samba 4.4) <-> win 10 без тюнинга на 10 гигабитах упирается в 1,18GB/s. Проверено не на одной машине. Правда процессоры помощнее. |
Спасибо за совет с lz4/нулями |
Спасибо за совет с lz4/нулями, докладываю: samba 4.8 (тот же конфиг): 800-810, может быть даже больше, smbd 130% CPU ну и видно что там worker threads запускаются. Самбы 4.9 в портах отчего-то нет, хотя уже два месяца как вышла. При этом Changelog у самбы не очень внятный, они пишут про новые features, а вот то что aio реализовали иначе в 4.8 - с большим трудом нашел. В принципе, 800+ меня устраивает. То есть конечно у меня есть программы, которые умеют читать больше (FastRawViewer, если его кормить нежатыми сонями - гигабайта полтора/сек может выжрать), но в реальности это все уже не надо. |
Достать линейку и померяться |
Достать линейку и померяться - несложно. Ну и результаты (других файлов на томе нет): 1% - бессмысленно. Скорость записи, соответственно, ну тоже не растет. При записи 600Mb/sec - 6 процессорных threads каждая жрет половинку CPU по top. |
Хрен эту самбу разберет. |
Хрен эту самбу разберет. Но блин, 4.3 уже в портах нету, и не сравнить. |
Ну считая что ядро у этого |
Ну считая что ядро у этого нового атома - в 4 раза медленнее, чем у i3/3.3Ghz, там, прикидывая хрен к носу, ~200MB/s на ядро должно получаться. Или больше гига на всех восьми. Попробую вот на тестовом томе, который 3x6Tb stripe |
Если затюнить - заставить |
Если затюнить - заставить использовать мегабайтное окно TCP и пр. |
А не возникает ли там проблем на пустом месте |
А с чего им возникнуть? Блоки по дизайну могут быть любого размера. Помнится у тебя в конфигурации raidz2 (4+2) два диска при чтении часто простаивали. А если бы блоки были разные - читалось бы со всех. Плюсов достаточно и они понятны, а из минусов на ум приходит только использование на очень медленных процессорах. |
Не хочу возиться с рамдиском |
Со стороны zfs достаточно одного hdd. Для чтения создать в датасете с lz4 большой файл забитый нулями или ещё быстрее будет читать большой sparse файл. Для записи подойдёт файл забитый нулями в датасет с lz4. На стороне win если нет быстрых nvme (или жалко) для чтения можно использовать diskspd. |
А не возникает ли там проблем |
А не возникает ли там проблем на пустом месте от небольших сжатий? Ну там блоки стали не известного размера, а переменного? |
Не хочу возиться с рамдиском, |
Не хочу возиться с рамдиском, поэтому увидим когда полноценный массив (с L2) туда приедет. Но вообще - ну скорее таки меньше. |
lz4 в смысле latency вовсе не |
lz4 в смысле latency вовсе не бесплатный - если данные не жмутся, лучше не надо |
Соответственно, zfs-компрессия не используется |
Я бы и для плохо сжимаемых данных включал lz4. Впрочем для данного процессора лучше проверить. |
виден небольшой запас, процентов 10 еще можно добавить |
mbuffer показал пропускную способность сети 1+GB/s. Думаю от самбы следует ожидать подобного результата. |
У меня данные, за редчайшими |
У меня данные, за редчайшими исключениями, плохо сжимаемые. Соответственно, zfs-компрессия не используется. |
То что в ежедневном режиме |
То что в ежедневном режиме гоняется через zfs send - оно по большей части сжатое (в смысле - сами файлы внутри сжатые/несжимаемые). Ну и на 10G, то есть гигабайт в секунду, сжимать могут не только лишь все. |
И ещё момент касательно zfs |
И ещё момент касательно zfs send и компресии: когда я развлекался с этой темой пару лет назад, zfs send --compressed ещё не существовало даже в OpenZFS, хотя уже был фичереквест. Тогда для сжатых файловых систем zfs send безусловно распаковывал данные перед отправкой, так что в обратной компрессии перед выпуском в сеть был смысл для сжимаемых данных и незанятых ядер CPU. Нынче уже есть zfs send -c и оно сжатые блоки данных посылает в сжатом виде, но вот блоки с метаданными оно AFAIK таки разжимает перед отправкой и если метаданных много... Можно потестировать. |
Теперь понятно. |
Теперь понятно. Я, кстати, сейчас припомнил, что для определенных комбинаций скорости CPU источника и приёмника и скорости сети при передаче бекапов мне неплохо помогала компрессия потока при помощи zstd (порт archivers/zstd): dump ... | nice zstd | ... На Xeon E5620 2.40GHz оно мне сжимало со скоростью 48 мегабайт в секунду и экономило 37%, сжимая 417G до 263G и время передачи с 5 до 3 часов (там был медленный приёмник). |
Я имел в виду вот что: |
Я имел в виду вот что: А если же мы к примеру запускаем как-то так (синтаксис условный, могу напутать с кавычками) То вся логика обработки ошибок, количества мест их возникновения и проч - сильно усложняется в сравнении с one-liner. А если я для сохранения 1-liner на своей стороне - на удаленную сторону привешу zfs recv в inetd.conf - то скрипты опять 1-liner, но вот обработка ошибок еще более усложняется. |
Это я понимаю. |
Это я понимаю. Я не понял, отчего вот это было сказано? "Проблема в том, что мне нужен именно remote shell, чтобы ошибки с удаленного конца ловить." Под remote shell тут понимается именно ssh? Он не имеет проблем с передачей признака ошибки, как впрочем и rsh. |
Ну подождите: zfs send | { |
Ну подождите: zfs send | { ssh remotehost zfs recv && touch $s; } Оно у меня так сейчас примерно и работает, но проблема в том, что ssh на новом ящике - медленный. |
Нет, я имел в виду именно то, |
Нет, я имел в виду именно то, что написал. Если удалённый zfs recv вернёт ошибку, то ssh её вернёт тоже и локальный touch не исполнится. И какая разница - проверять код возврата сложной команды или простого test -e localfile ? Суть одна и решение полностью корректное. |
Ну то есть наверное вы имели |
Ну то есть наверное вы имели в виду "на удаленном хвосте запустить mbuffer -I | zfs recv && touch Ну да, так можно, онанизм но можно. |
zfs recv примет данные откуда |
zfs recv примет данные откуда? C stdin? Ну вот со скоростью подачи через ssh и есть проблема. |
> Проблема в том, что мне |
> Проблема в том, что мне нужен именно remote shell, чтобы ошибки с удаленного конца ловить. Ммм, а в чём проблема с ошибками? s=/var/run/send.success |
На FreeBSD не так |
На FreeBSD не так |
У нас на линуксах в какой-то |
У нас на линуксах в какой-то момент выяснилось, что rsh теперь тот же ssh... |
Я сдался, 350Mb/sec меня, на |
Я сдался, 350Mb/sec меня, на самом деле, устраивают почти. |