The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В ветку ядра Linux-next добавлена реализация ФС Bcachefs, opennews (??), 20-Сен-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


134. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 21-Сен-23, 01:47 
Еще скорость разжатия почти не меняется даже после запаковки хоть с самым высоким уровнем. Может быть актуально для внешнего диска.
Ответить | Правка | Наверх | Cообщить модератору

137. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Аноним (-), 21-Сен-23, 02:09 
> Еще скорость разжатия почти не меняется даже после запаковки хоть с самым
> высоким уровнем. Может быть актуально для внешнего диска.

У LZ-based (все три именно оно) есть довольно большая асимметрия по ресурсам на сжатие и распаковку.

В первом приближении, сжатие LZ - поиск совпадений, чем длиннее, тем лучше. Это довольно ресурсокмко, как ни крути. Особенно "чем длиннее" до упора. Чем больше ресурсов на это убито тем лучше может получиться совпадения нащупать и меньше данных на выход. С тем же самым результаом декодирования. И уровень сжатия - регулирует в общем то в какой момент matchfinder'у надоест пытаться нащупать наилучшее, и он посчитает что то что есть - "good enough", и отдаст результат.

При распаковке это фактически следование инструкциям вида "скопируй X байтов от сих до сих". Там нечему так уж тормозить. И от уровня сжатия структура этого мало зависит. Иногда даже улучшение может быть от повышения уровня - ведь с точки зрения распаковки, "на вход немного меньше, результат точно такой же" - и суммарный результат сведется к "немного разгрузили шины" т.е. даже еще и сэкономили какие-то крохи времянок.

Реальность конечно чуть сложнее - у gzip и zstd еще уровень "кодирования энтропии" поверх этого. LZ4 чистый LZ, он целиком про скорость и поэтому с кодированием энтропии там не заморачиваются (сильно скорость распаковки рушит, хоть и улучшает сжатие). Но общая идея что распаковка LZ быстрая - остается. LZ4 конечно самый быстрый на расппковку, у него нет дожатия энтропии и формат потока рыхлый, зато простой в парсинге.

Ответить | Правка | Наверх | Cообщить модератору

162. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 21-Сен-23, 11:40 
> В первом приближении, сжатие LZ - поиск совпадений, чем длиннее, тем лучше.

btrfs жмет не файл целиком, а его куски по 128 КБ, поэтому тут навряд ли количество совпадений будет сильно отличаться при разных уровнях сжатия, а решать будет скорее то, как алгоритм отрабатывает в среднем, но я не шарю. Страдают только экстенты жирных файлов - на каждый скомпрессированный кусок надо хранить метаданные, и по идее это тоже бьет по времени доступа к содержимому из-за фрагментации, но я чето уже и не помню где глянуть бенчмарки, чтобы оценить какой выигрыш дает хранение файла "сплошняком".

Ответить | Правка | Наверх | Cообщить модератору

210. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +1 +/
Сообщение от Аноним (-), 21-Сен-23, 19:49 
> btrfs жмет не файл целиком, а его куски по 128 КБ, поэтому
> тут навряд ли количество совпадений будет сильно отличаться при разных уровнях сжатия,

А таки - некая зависимость плотность сжатия vs скорость остается. Поэтому сие делают выбирабельно.

Если у вас супербыстрый SSD а проц маломощный вы наверное LZ4 на минималках хотели. А если тормозной винч, на мощном проце, вас и zstd с солидной степенью сжатия не напряжет, а IO немного убавится. Как и суммарное время операции. Ну да, может на несколько процентов.

> а решать будет скорее то, как алгоритм отрабатывает в среднем, но я не шарю.

Ну вон то и определяет что будет в среднем. Низкие уровни - вырубают matchfinder рано. Поэтому жмет заметно быстрее, хоть и хуже. А какое соотношение оптимально в конкретном случае - зависит от деталей. И может завести в довольно дальние дебри pareto frontier'а, у этих, от сжатия, свои граали тоже есть.

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

На механике фрагментация это фу. На SSD - сильно меньше фу, можно не очень париться. А большой непрерывный экстент всяко эффетивнее кучи мелочи. Вопрос в масштабе эффекта и стоит ли оно заморочек в конкретном случае.

Ответить | Правка | Наверх | Cообщить модератору

224. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 21-Сен-23, 22:02 
> Если у вас супербыстрый SSD а проц маломощный вы наверное LZ4 на минималках хотели.

Пожалуй да, хоть zstd:1 неожиданно хорошо себя показал в плане сжатия, но ради интереса перегоню на днях хомяк в lz4, не думаю, что он пожмет сильно хуже. А для раздела с играми на харде zstd:6 оказался хорошим выбором, не заметил каких-то заметных просадок в еле идущей на этом ноуте Baldur's Gate 3 (а я еще и сейвскамер).

Но я пока не могу определиься с 2-мя разделами - корень (тут у меня пока с древних времен ext4) и раздел с гит-репозиториями (а тут xfs, просто надеюсь, что она хоть что-то дедуплицирует). Корень это пожалуй рекордсмен по количеству операций чтения, и постоянное разжатие это повышенное использование процессорного времени. А репозиторий с сорцами ядра или просто папка node_modules это тонна файлов, а у btrfs как раз основная проблема, что она неадекватно распухает от метаданных. Так что в обоих случаях может оказаться, что игра не стоит свеч.

Может быть даже есть смысл вместо btrfs смотреть в сторону zfs, ведь по идее ноутбучная DDR память довольно энергоэффективная, а сама zfs более продвинута в плане размещения данных на диске.

Ответить | Правка | Наверх | Cообщить модератору

230. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Аноним (-), 22-Сен-23, 02:41 
> Пожалуй да, хоть zstd:1 неожиданно хорошо себя показал в плане сжатия,

Zstd делал тот же кодер что LZ4, это творение Cyan'а. Технически это "что-то типа LZ4" но - мощнее, жирнее и с entropy coder за ним, на основе новомодного ANS от Jarek Duda.

По своему забавное комбо. Потому что как минимум точно может по степени сжатия дать мастеркласс gzip'у, на топовых уровнях почти садясь на хвост грандам типа LZMA (который слоупок) и Brotli (этот читерит, и "в чистом виде" не так уж крут) - но при этом даже быстрее в распаковке. Смысл брать gzip при существовании zstd минимальный, но видимо уже были тома с вот этим, не обламывать же их?!

LZ4 технически в общем случае быстрее за счет отсутствивя entropy coding за ним. Но и жмет он хуже в результате. Так что оптимальность штука многогранная.

Уровень сжатия zstd актуален если много ЗАПИСЫВАТЬ и быстро: на высоких уровнях да с хилым процом это может в проц упереться, недогрузив девайс на ЗАПИСЬ. Распаковка в разы быстрее и ее скорость не сильно зависит от поюзаного уровня.

Врядли baldurs gate много ЗАПИСЫВАЕТ. Зачем гамесе много записывать? А на распаковку - там еще зависит жатые ли у него ресурсы или нет. Некоторые гамесы сами сжатые типа-архивы юзают, им с сжатия в ФС мало что перепадет. А если ассеты не сжатые тогда сжатие что-то отыграет.

Что до XFS сам по себе ничего не дедуплицирует. Но с неких пор его таки научили в рефлинки. И можно сделать "thin" копию которая изначально ссылается на блоки оригинала а дальше по мере расхождения обеспечивает абстракцию что это независимые файлы. Изначально фокус btrfs, но XFS а недавно наконец и ZFS этому научили. Сабж тоже это вероятно или умеет или скоро будет уметь, куда оно денется, для cow стыдно такую семантику не уметь. В btrfs также можно и оффлайн-дедупнуть идентичные файлы тулсами типа jdupes. Хз, может уже и на XFS работает если оно заимплементило "same extent ioctl", для XFS я это не проверял. После их демарша с выносом v4 в obsolete без путя конверсии в v5 я их разобрал и btrfs'ом сделал, коли уж крушить так пусть тогда и cow полноценный и управление местом по первому классу. Они вон scrub и автопочинку до сих пор осилить не могут, да и многодевайсность там это боль.

> zstd:6 оказался хорошим выбором, не заметил каких-то заметных просадок в еле
> идущей на этом ноуте Baldur's Gate 3 (а я еще и сейвскамер).

Да я и сам zstd местми юзаю на btrfs. Главное /boot в zstd не сжать случайно если grub старый и без поддержки zstd, а то тот очень обижается на "unknown compression algo". Каким-то дистрам актуально у каких-то он уже zstd умеет.

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

XFS вообще довольно интенсивная по метаданным штука и идея разложить на него пачку репов git как по мне довольно спорная. У меня такое ощущение что даже btrfs его заметно делает на таких нагрузках. При том умея кучу продвинутостей.

> проблема, что она неадекватно распухает от метаданных. Так что в обоих
> случаях может оказаться, что игра не стоит свеч.

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

> Может быть даже есть смысл вместо btrfs смотреть в сторону zfs, ведь
> по идее ноутбучная DDR память довольно энергоэффективная, а сама zfs более
> продвинута в плане размещения данных на диске.

ZFS был самым первым - с фига ему эффективным быть? Это даже еще не экстентный аллокатор, какой-то недопилок с "блоками переменных размеров" как максимум. Поэтому и затыкают его скорость работы гигазами рамы, рамдиски то быстрые. Но с подпором ...цать гиг опертивы что угодно - быстрое. Я называю его "первый блин комом". На уровне структур ЭТОМУ нет причин быть быстрым.

Btrfs появился позже и их поэтому хватило на нормальные экстенты, tail packing, хранение мелких файлов сразу в деревьях (что быстрее, особенно на механике, не надо головы гонять хз куда, данные сразу доступны). Ессно свои проблемы тоже есть. Но актуальны больше на многодисковых конфигах и особенно желающим продвинутостей типа RAID5/6 и проч. На самом деле крутой и фичастый дизайн, но это же и усложняет доведение до ума в мелких деталях. Самый заметный минус - не делался под "низкий оверхед" с самого начала, на суперскоростных SSD все же заметно.

Сабж - дизайнился еще позже. И потому пытается вобрать лучшие черты всех предшественников. Обойдя их недостатки. Серебряных пуль - не бывает. Но в целом - ключевые решения btrfs напоминают но с вниманием к оверхеду и скорости, и вот еще иерархические хранилки, это конечно не для тех кто на разделы что-то нарезает, а для тех кто несколько девайсов хочет, сочетая сильные стороны разнородных устройств. Есть скажем гибриды SSD+HDD где SSD буферизует запись, а потом неспешно сливается на HDD. Сабж делает сие уже софтварно - из того что есть - и подконтрольно владельцу, не требуя гибридных устройств и давая больше контроля над этим аспектом. По своему круто. Если есть HDD и SSD можно получить почти скорость SSD и емкость HDD. Если правильно нарулить вон то. Нюансы конечно будут. Но все же.

Ответить | Правка | Наверх | Cообщить модератору

240. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 22-Сен-23, 13:33 
Вчера таки еще разок заглянул на страничку Compression в доке btrfs, и оказывается lz4 у них нема, только lzo, так что кажется я вспомнил, почему именно выбрал zstd:1.

А так по методам сжатия полностью согласен, для меня есть только lz4, zstd и понемногу уходящий старичок gzip, а всякие xz, bzip2, brotli слишком медленные даже на разжатие. Причем даже zip архивы удобнее, DEFLATE все-таки хорошие цифры показывает.

> Зачем гамесе много записывать?

F5 - и пошла запись, правда это обычно объемы небольшие, но в процессе игры.

> А на распаковку - там еще зависит жатые ли у него ресурсы или нет.

На самом деле многие файлы btrfs не трогал, а игру я уже удалил и точно не помню, как она разместилась, вроде игра похудела на 12 ГБ, т.е. почти на 10%. А так, многие игры перестали жать ресурсы и постоянно подгружают какие-нибудь текстуры с диска, и я видел игры, которые даже не тромбуют ресурсы в архив типа tar, а тупо держат каждую текстурочку в виде отдельного файла - интересно как такие пациенты себя поведут. Но игры обычно упираются в GPU, а в CPU по идее должно оставаться немного "воздуха" на незатратное разжатие, так что игоры я буду жмать.

> XFS вообще довольно интенсивная по метаданным штука и идея разложить на него пачку репов git как по мне довольно спорная.

Ну тут просто надо остановиться на чем-то одном, а xfs (v5) вроде пободрее мейнтейнят и inode он выделяет динамически, значит по идее не должны внезапно закончиться. С дедупликацией только я так и не поигрался, но как-нибудь создам 2 раздела с xfs и btrfs, гляну чего можно добиться для тех же исходников ядра. Особенно интересно, можно ли добиться online дедупликации на моменте git clone.

> ZFS был самым первым - с фига ему эффективным быть?
> Я называю его "первый блин комом". На уровне структур ЭТОМУ нет причин быть быстрым.

Вот этого не знал, я думал это btrfs долгое время был вообще непригодным к использованию и до сих пор легко ломается, а zfs сразу бодро встал и пошел за счет удачного дизайна.

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

Ответить | Правка | Наверх | Cообщить модератору

262. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +1 +/
Сообщение от Аноним (-), 23-Сен-23, 02:35 
> Вчера таки еще разок заглянул на страничку Compression в доке btrfs, и
> оказывается lz4 у них нема, только lzo, так что кажется я
> вспомнил, почему именно выбрал zstd:1.

LZO по смыслу похож на LZ4, тоже скоростной 1-компонентный алгоритм, с прицелом на скорость распаковки. LZ4 не стали встраивать потому что слишком похожие по свойствам алго, и ради чего возиться тогда?! На момент дизайна btrfs LZ4 в ядре еще не было, взяли похожий LZO.

Более новые дизайны берут LZ4 т.к. он немного резвее, а степень сжатия при желании скорости все же вторична. Но в целом сравнимые алго подвида "simple LZ".

> А так по методам сжатия полностью согласен, для меня есть только lz4,
> zstd и понемногу уходящий старичок gzip, а всякие xz, bzip2, brotli
> слишком медленные даже на разжатие.

Ну дык. Xz это LZMA на стероидах. Жмет круто, но даже скорость распаковки - в разы хуже. Им пользуются когда надо до последнего байта экономить. Как вон тот uboot с вебмордой для для TPLink-ов. Там оно либо втиснется в 64 кил регион со ВСЕМ, либо нет, а больше некуда. Вот и приходится хардкорить, даже если и дольше стартует это лучше чем никак. В менее радикальных случаях скорость его распаковки так себе, даже на initrd - от него заметная на глаз задержка при старте на распаковку, например.

А бротли сильно оптимизирован на вебпаги, мухлюя с встроенным предзагруженным словарем. Улучшает сжатие вебпаг - ценой хранения надерганого из них словаря 120 кило в либе. Так что можно сразу ссылаться на совпадения еще не вгрузив данных. А если не вебпага, тогда фокус может и не прокатить и сам по себе он "чуть помедленнее и чуть хуже жмет чем zstd". Поэтому кроме браузеров и вебсерверов мало кем используется.

> Причем даже zip архивы удобнее, DEFLATE все-таки хорошие цифры показывает.

У deflate словарик склерозный, 32 кило. На больших повторяющихся файлах он не увидит совпадение через мегабайт - и может основательно проиграть на этой почве. По скорости распаковки хуже в основном за счет Huffman vs ANS в второй части. ANS это более забористая абстракция, сочетающая плюсы arithmetic coding в сжатии с скоростью даже лучше huffman, за что и используется в новых кодеках. Эпл что-то тоже делал и сорц даже публиковал, но zstd мастеркласс им дал, потому что Cyan (автор LZ4) и Jarek Duda (создатель ANS) в 1 команде могут порвать на пару много кого, ну zstd и зарулил много кого. Facebook кроме этих 2 и еще пару приличных алгоритмистов нанял, уделать такую тиму нелегко.

> F5 - и пошла запись, правда это обычно объемы небольшие, но в
> процессе игры.

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

> на 12 ГБ, т.е. почти на 10%. А так, многие игры
> перестали жать ресурсы и постоянно подгружают какие-нибудь текстуры с диска,

Ну тут все зависит от конкретики. Бывает и так что ассеты 50/50, т.е. часть сжатые, скажем PNG какой или текстуры пакованые, а часть - жмется.

> tar, а тупо держат каждую текстурочку в виде отдельного файла -
> интересно как такие пациенты себя поведут.

Им в целом перфоманс файлухи актуален. В этом смысле - я бы их на XFS складывать не стал, тот с кучей файлов работает "не очень". А в остальном EXT4/btrfs/f2fs/....  в принципе не особо тормозят с разлапистыми иерархиями.

> Но игры обычно упираются в GPU, а в CPU по идее должно оставаться немного "воздуха" на
> незатратное разжатие, так что игоры я буду жмать.

Ну да. Особенно с крутыми настройками и солидным двиглом, если GPU не самый топовый. Хотя на сильно крутом GPU при заурядном проце может и проца не хватать для прогрузки GPU в каких-то случаях. Но это относительно экзотичный сценарий. Фороникс изредка натыкался и на такое.

> Ну тут просто надо остановиться на чем-то одном, а xfs (v5) вроде
> пободрее мейнтейнят и inode он выделяет динамически, значит по идее не
> должны внезапно закончиться. С дедупликацией только я так и не поигрался,
> но как-нибудь создам 2 раздела с xfs и btrfs, гляну чего
> можно добиться для тех же исходников ядра. Особенно интересно, можно ли
> добиться online дедупликации на моменте git clone.

Совсем онлайн нету - и большой вопрос хотите ли вы именно это, именно так. На энтерпрайз файлопомойке то претендентов на RAM и CPU нет, можно все сожрать. А на более обычном компе... ближайшее к этому наверное прога "bees". Некая приблуда строящая базу потенциальных дупов, в том числе и инкрементально могет если в фоне держать. Изначально для btrfs делано но может и с XFS работает, если уж оно рефлинки научилось то может и в "same extent" смогет. Лично для XFS не проверял.

>> Я называю его "первый блин комом". На уровне структур ЭТОМУ нет причин быть быстрым.
> Вот этого не знал, я думал это btrfs долгое время был вообще
> непригодным к использованию и до сих пор легко ломается,

Ну как, btrfs это довольно большой и сложный дизайн. Его отладка заняла время. И до сих пор RAID5/6 имеет свои нюансы. Для RAID5 частично починеные, 6 еще нет. Если они нужны, читать мануал и думать окей ли оно вот так. И метаданные в RAID1 лучше. Сильно безопаснее. Но он технически более поздний чем ZFS и сделан с оглядкой на него - и попытками обойти неудобные места. Более прозаичные кейсы типа RAID1 вполне юзабельны как по мне. И в целом у дизайна больше задел на будущее. Разопрется ли кто когда ВСЕ его возможности раскрыть - вопрос номер два. Скажем теоретически на btrfs можно разным файлам разную схему хранения давать. Не все файлы одинаково ценны. Практически - ну там и без этого наворотов хватает и слабых мест.

> а zfs сразу бодро встал и пошел за счет удачного дизайна.

Ага, конечно. Его тоже так то отлаживали дофига, своих грабель у него тоже есть, scope у него изначально меньше - энтерпрайзные файлохранилки, btrfs более универсальный. А технологии тогда были менее развиты. Так что максимум на что их хватило это блоки переменного размера, сильно меньше нормальных экстентов, значит оверхеда в метаданных больше. С чего этому быстрому быть только фаны марки и знают. А с десятками гиг буферов что угодно "быстрое".

> Надо пожалуй будет матчасть таки прочитать, потому что рассматривание бенчмарков себя не
> оправдало - по-прежнему многие места не понятны, да и милисекунды -
> хреновая метрика, как и синтетические случаи, в которых можно израсходовать все
> место на разделе c btrfs.

Бенчмарки бывает довольно сложно интерпретировать - да и насколько оно похоже на то что вон там актуально - как повезет. Самое очевидное - cow'ать большие нагруженные базы неважная идея. Но это надо не всем и не всегда, а btrfs умеет для этого no-cow, становясь чем-то типа EXT4 для таких файлов. Но и все плюсы cow типа снапшотов и чексум при этом в ауте. Zfs и это не умеет и постепенно может зафрагментиться в хлам. А дефрагера у него как я помню совсем нет.

На самом деле лучше всего попробовать самому и что понравится и пойдет под требования то и оставить. Бенчи это прекрасно а юзать все же не автору бенчмарков.

Вот сабж - обещает быть интересным и крутым. Но опять же - он даже еще не в основном майнлайне, и пока из него лажу вытряхнут - ну это будет вовсе не моментально. И займет сколько-то лет, вероятно. А Кент узнает много нового о том что его файлуха может отколоть, как фэйлят девайсы у юзеров, ... :) но это будет интересная дорога в будушее.

Ответить | Правка | Наверх | Cообщить модератору

268. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 23-Сен-23, 15:17 
> LZO по смыслу похож на LZ4
> Более новые дизайны берут LZ4 т.к. он немного резвее, а степень сжатия при желании скорости все же вторична.

Я смотрю в первую очередь на скорость разжатия, все-таки данные пишутся один раз, а читаются потом всегда. А разжатие у lz4 заметно быстрее, чуть ли не в 1.5-2 раза. Я в основном тут смотрю цифры http://quixdb.github.io/squash-benchmark, странно правда, что там zstd только с 1 уровнем, но зато наглядно. В частности на графиках Ratio / Decompression видно, что lzo и lz4 вообще в разных областях располагаются, а zstd по скорости разжатия рядом с lzo, вот только он еще и жмет.

Я правда из датасетов там только enwiki и mozilla глядел, может для обычного десктопа оно и нерелевантно, да и gcc и дистры какие-то старые, может есть смысл на локалхосте погонять. Хотел тогда на раздел с /home lz4 с высоким уровнем, но подумал, что и zstd:1 пойдет, а lzo - точно мимо.

> Совсем онлайн нету - и большой вопрос хотите ли вы именно это, именно так.

Вроде на бумаге задача решаемая, пусть и с небольшим количеством приседаний. Если git clone делать в tmpfs или ramfs достаточного размера, тут уже ФС сможет оценить все, что будет писать на диск, и решить как это лучше всего разместить, в т.ч. и с онлайн дедупликацией. Выигрыш может будет и сомнительный, но если есть на это ресурсы - почему бы так не делать?

> ближайшее к этому наверное прога "bees"

Это я так понял демон, который всю ФС смотрит, и опять же это оффлайн. А хотелось бы сразу скинуть на диск дедупнутую директорию. Да и обычно пользователю виднее, где могут быть потенциальные дубликаты, и проще "дедупликатор" ручками натравлять, чем мониторить диск 24/7.

> лучше всего попробовать самому и что понравится и пойдет под требования то и оставить

Да на самом деле все ФС нормально работают и не требуют к себе повышенного внимания, особенно при обычной десктопной нагрузке. Вопрос скорее в том, что из ФС можно выжать и какой ценой.

Ответить | Правка | Наверх | Cообщить модератору

286. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Аноним (-), 25-Сен-23, 16:04 
> Я смотрю в первую очередь на скорость разжатия, все-таки данные пишутся один
> раз, а читаются потом всегда. А разжатие у lz4 заметно быстрее,
> чуть ли не в 1.5-2 раза.

Ну как бы в итоге все состоит из времени чтения + времени распаковки, и оптимальность сочетаний не константа и варьируется в зависимости от кучи факторов. В целом LZO относится к примерно тому же классу алгоритмов (скоростные "простые LZ") и профит от +1 алго по мнению девов btrfs в их кейсе умеренный. А вот например пожмешь /boot LZ4 а загрузчик и скажет "unknown compression", +1 алго в ФС не так уж безобидно.

> Я в основном тут смотрю цифры http://quixdb.github.io/squash-benchmark,

На самом деле это очень многофакторное и зависит от ряда соотношений (например мощь CPU и скорость RAM vs IO) и по факту лучше бенчить именно у себя на именно интересных кейсах. А чужие тесты в лучшем случае позволят ожидаемые соотношения прикинуть. Если понимать на что смотреть.

> странно правда, что там zstd только с 1 уровнем, но зато наглядно.

Ну как бы на более высоких уровнях жать будет медленнее. Распаковка примерно так же останется. Зависимость уровень vs скорость распаковки бывает, но слабая.

> В частности на графиках Ratio / Decompression видно, что lzo и lz4 вообще
> в разных областях располагаются, а zstd по скорости разжатия рядом с lzo,
> вот только он еще и жмет.

ИМХО LZO в целом поплотнее LZ4, а в ФС с требованием на рандомный seek и потому лимитом на размер блока zstd  негде на полную разогнаться. И таки LZO побыстрее zstd во многих случаях и инициализация дешевле: поток LZ4 и LZO можно распаковывать с места в карьер, zstd и zlib в этом более навернуты и надо состояние entropy coder еще инитить.

> Я правда из датасетов там только enwiki и mozilla глядел, может для
> обычного десктопа оно и нерелевантно,

Учитывая что у ФС требование на рандомный доступ и потому лимит на размер блока - соотношения несколько изменятся. Сетап распаковки роялить больше будет.

> с /home lz4 с высоким уровнем, но подумал, что и zstd:1
> пойдет, а lzo - точно мимо.

Lzo имхо будет быстрее хоть какого zstd в тех случаях (на распаковку). У него фора есть, это "простой LZ" с довольно тривиальным потоком, как и LZ4, можно с места в карьер его распаковывать, даже без аллокаций памяти не говоря про инит кодера энтропии. А zstd куда навернутее, и такая развлекуха на каждый блок отольется по идее...

>> Совсем онлайн нету - и большой вопрос хотите ли вы именно это, именно так.
> Вроде на бумаге задача решаемая, пусть и с небольшим количеством приседаний.

Да и на практике решаемая, только это как компрессия с супер-большим словарем и потому оперативы немеряно жрет и CPU грузит весьма прилично. И хотите ли вы это все вот именно в момент записи - очень отдельный вопрос. Офлайн дедупы позволяют выбрать момент когда ресурсы тратить более контролируемо, отложенно. А штуки типа bees могут и околореалтаймно пахать, сканируя дельту относительно прошлого забега и дедупая только это. Но и так можно себе "windows vista" организовать, когда оно все время что-то делает и грузит систему.

> Если git clone делать в tmpfs или ramfs достаточного размера, тут уже
> ФС сможет оценить все, что будет писать на диск,

Проблема в том что для более-менее быстрого поиска дупов в RAM надо держать немеряную хештаблицу всех кандидатов, иначе скорость операции будет совсем печальной. Требует дофига рам, пропорционально объему стоража. Офлайн дедупалки могут пытаться какой-то компромисс с хранением индекса кандидатов в базе, так медленнее но снижает аппетиты к RAM. Которые могут начать измеряться десятками гигов на большом стораже.

> и решить как это лучше всего разместить, в т.ч. и с онлайн дедупликацией.

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

> Выигрыш может будет и сомнительный, но если есть на это ресурсы
> - почему бы так не делать?

Ну вот поэтому ZFS с онлайн дедупом только на файлопомойках с кучей ресурса и юзают, там все равно CPU и RAM может быть некуда деть. А если это не выделенная файлопомойка то на проц и раму и другие претенденты есть.

> Это я так понял демон, который всю ФС смотрит, и опять же это оффлайн.

Это примерно на границе миров. Поскольку именно демон, и может процессить именно дельту, мониторя изменения, это начинает напоминать онлайн. А совсем оффлайн - это именно прога, не демон, пинаемая мануально по усмотрению юзера. Например jdupes или duperemove. Они ресурсы сами по себе не жрут совсем.

> А хотелось бы сразу скинуть на диск дедупнутую директорию.

В конечном итоге что так будет эн референсов на 1 экстент из метаданных что сяк. Отличия будут только на интервале пока дуп не отпроцессили. В ZFS это настолько ресурсоемко вышло что пользуется этим довольно мало кто в именно таком виде. Это вот реально для энтерпрайзных файлопомоек выделенных под задачу, на жирной машине.

> Да и обычно пользователю виднее, где могут быть потенциальные дубликаты, и
> проще "дедупликатор" ручками натравлять, чем мониторить диск 24/7.

Ну я как-то так и предпочитаю, чтобы вместо виндоус висты концентрированный жор ресурсов когда мне точно пофиг, скажем пока я сплю. Вон парочка примеров этсамого.

>> лучше всего попробовать самому и что понравится и пойдет под требования то и оставить
> Да на самом деле все ФС нормально работают и не требуют к
> себе повышенного внимания, особенно при обычной десктопной нагрузке. Вопрос скорее в
> том, что из ФС можно выжать и какой ценой.

Ну я вот из btrfs выжал нехилое улучшение надежности моих систем за счет парирования единичных бэдов, вплоть до того что на сыпучей флехе можно стало таскать файло. EXT* там за месяц в хлам разваливается, а btrfs живет уже пару лет с схемой DUP - чтобы выбило обе копии блока в разных физических смещениях я должен нехилый такой джекпот у теорвера сорвать. С законами природы не стоит спорить, гораздо лучше ими пользоваться себе во благо :). Или снапшоты. Почти как виртуалка. Не понравился результат апдейтов операционки? Снес полхомяка? Автор лох и сделал "rm /usr /bin/..." как в bumblebee? Ну ок, я откачусь на снапшот в котором все было ЗБС. Ведь сделать его моментально, второй раз хранится только "дельта", а в результате управление почти как в виртуалках. Удобно. Но при этом лучше понимать как работает гипердрайв этого крейсра, в частности cow vs снапшоты vs "хранение дельты". Иначе будут вопросы куда место делось. На виртуалках все то же самое.

Ответить | Правка | Наверх | Cообщить модератору

288. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 25-Сен-23, 20:49 
> Ну как бы в итоге все состоит из времени чтения + времени распаковки, и оптимальность сочетаний не константа и варьируется в зависимости от кучи факторов.

Мне лично задержки не критичны и большая часть пользовательских данных мне видится похожей на man'ы, которые в .gz и в основном пылятся. А LZ-алгоритмы это для чего-то типа zswap, траффика и динамичных игр, т.е. где в идеале никакой компрессии нет, но нужно как-то обойти ограничения по объему или пропускной способности. И вот в таких сценариях логичнее было бы брать начиная с самого быстрого, то бишь lz4, а если затык останется, то пробовать шаманить с уровнями сжатия или брать lzo.

> На самом деле это очень многофакторное и зависит от ряда соотношений (например мощь CPU и скорость RAM vs IO) и по факту лучше бенчить именно у себя на именно интересных кейсах.

Подход а-ля Gentoo конечно дает плоды, и при желании можно заморочиться, но бенчить все подряд времени не хватит, а качественных и актуальных замеров очень мало. А так, если есть результаты на разном железе и для разных данных, как на том же Squash Compression Benchmark, то по ним вполне можно делать выводы. Хотя я уже понемногу пилю свои бенчмарки, с упором на то, что лежит в /usr - шрифты, иконки, маны, бинарники и т.д..

> ИМХО LZO в целом поплотнее LZ4, а в ФС с требованием на рандомный seek и потому лимитом на размер блока zstd  негде на полную разогнаться.

128 КБ это не такой уж и маленький блок, я пощелкал графики и для файлов даже поменьше этого блока - в принципе динамика не сильно отличается.

> И таки LZO побыстрее zstd во многих случаях и инициализация дешевле: поток LZ4 и LZO можно распаковывать с места в карьер, zstd и zlib в этом более навернуты и надо состояние entropy coder еще инитить.

Ну да, это разные весовые категории, но zstd в своей лидер, а lzo - середнячок.

> Да и на практике решаемая, только это как компрессия с супер-большим словарем и потому оперативы немеряно жрет и CPU грузит весьма прилично. И хотите ли вы это все вот именно в момент записи - очень отдельный вопрос.

Вот клонирование жирной монорепы - это тот случай, когда придется ждать, а потом еще и скорее всего npm install делать. RAM и CPU в это время прохлаждаются - любимый VS Code или IntelliJ Idea еще не запущены, а Dota 2 не может загрузить все ваши 32 ГБ оперативы и 16 ядер Threadripper'а. Так что вот он момент, чтобы отжать кусок RAM'ы и начать онлайн-дедупить.

> Ну я вот из btrfs выжал нехилое улучшение надежности моих систем за счет парирования единичных бэдов, вплоть до того что на сыпучей флехе можно стало таскать файло.

Флешки к сожалению приходится держать в exfat / ntfs, а btrfs даже Ventoy не понимает. И как же я пожалел, что давно создал exfat раздел на ЖД под файлопомойку - прав доступа нет, преаллокации нет, уменьшить - хрен. Лучше уж ntfs, если нужен доступ из под винды и линукса. А теперь и вовсе может быть, что btrfs на эту роль подходит лучше, т.к. под винду есть драйвер, который ставится в пару кликов.

> Или снапшоты. Почти как виртуалка.

Мне бы их лет 15 назад, когда я обвешивал модами Обливион без всяких мод-менеджеров.

Ответить | Правка | Наверх | Cообщить модератору

291. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Аноним (-), 26-Сен-23, 19:48 
> Мне лично задержки не критичны и большая часть пользовательских данных мне видится
> похожей на man'ы, которые в .gz и в основном пылятся.

Ну как, в случае быстрой SSD'хи на умеренном проце скорость записи zstd может заметно обвалить. А там еще чексумы считать надо, том тоже на скорость. В этом месте LZ4 и LZO деланные под "реалтаймное сжатие" получают пойнт.

> А LZ-алгоритмы это для чего-то типа zswap, траффика и динамичных игр,

Ну вообще я zram и с LZ4 или ща LZO+RLE модно у них стало. Довольно хорошее, кстати, комбо. RLE уменьшает тупняки на сжатие избыточных последовательностей коих в раме есть, в паре с LZO довольно хорошо жмет, там вопрос в том что либо сожмется минимум в 2 раза, и тогда профит, или нет - тогда зря сожрали ресурсы: там округление до страницы ради скорости. Можно 2 в 1 паковать. Или опциональный 3 в 1 (если данные позволили, конечно). Там рыхлость LZ4 икается больше: если 2x сжатие не вышло, проц тратили вообще зря.

...и в результате OOM с таким "свопом" без выгрузки в файлы/разделы - это секунд 5 просадки перфоманса, а потом OOM killer вынесет обжору. И никаких тупняков минутами как с свопом на дисках.

> т.е. где в идеале никакой компрессии нет, но нужно как-то обойти ограничения
> по объему или пропускной способности.

Я в случае zram ничего не обхожу - я неспешно и в фоне оффлоажу оперативу от "cold" данных в их сжатый вариант, ну оно и выигрывает 2-3x от размера выделенного на zram региона. Даже мелкороутеру нормально - и будучи ram2ram сильно меньше причин тормозить. Если сжатие быстрое.

> И вот в таких сценариях логичнее было бы брать начиная с самого быстрого, то бишь lz4,
> а если затык останется, то пробовать шаманить с уровнями сжатия или брать lzo.

На момент дизайна btrfs в ядре lz4 еще не было. А потом... см. про бутлоадер например. Хотя вон у кента, да и btrfs zlib так то тоже есть, не прокатывать же обладателей томов.

> Подход а-ля Gentoo конечно дает плоды, и при желании можно заморочиться, но
> бенчить все подряд времени не хватит, а качественных и актуальных замеров
> очень мало.

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

> по ним вполне можно делать выводы. Хотя я уже понемногу пилю
> свои бенчмарки, с упором на то, что лежит в /usr - шрифты, иконки, маны, бинарники и т.д..

Хе, забавно. Ну и да, вот что-то такое неплохо жмется так то.

> 128 КБ это не такой уж и маленький блок, я пощелкал графики
> и для файлов даже поменьше этого блока - в принципе динамика не сильно отличается.

Ну и не такой уж большой - на более жирных блоках скажем zstd vs zlib будет сильнее в пользу zstd. А на файлухе это менее выражено, 32 кил словарь не такая уж трабла если максимум 128К на все.

И да, лидеры и аутсайдеры могут меняться от задачи. Я лю с simple LZ развлекаться. Скажем то что рулит на мелких блоках не обязано на бошьших рулить. И наоборот. Многое зависит от деталей формата потока vs макс словарь vs как оно match(offset, len) кодирует и есть ли у формата бонусы. У LZ4 неудачное (по степени сжатия) кодирование больших чисел, на хорошо жмущихся данных он заметно проигрывает хоть тому же LZO, у коего более продвинутый и компактный формат, в LZ4 в угоду скорости в жертву принесено вообще совсем все. Он вообще сильно плотно жать не может даже если данные хорошо жмутся, формат потока лимитирует. Длинный match или match на большом смещении требует куда больше байтов на кодирование чем в даже большинстве иных "simple LZ". За это ratio временами таки хромает.

> Ну да, это разные весовые категории, но zstd в своей лидер, а
> lzo - середнячок.

А LZ4 это довольно экстремальный случай где ради скорости даже формат потока довольно дурной и в плотное сжатие он за это совсем не умеет, на уровне формата потока прямо. Так что есть ряд не очень известных перепевок где народ пытается жать поплотнее, не пролюбив особо скорость распаковки. Некоторые штуки при том на именно мелкие блоки специализируются. Их характерных представителей - lzsa, zx0 и тому подобное. Они не на это ориенитированы но с учетом ориентации на мелкие блоки возможно это не так уж плохо и для ФС было бы.

> Вот клонирование жирной монорепы - это тот случай, когда придется ждать, а
> потом еще и скорее всего npm install делать. RAM и CPU
> в это время прохлаждаются - любимый VS Code или IntelliJ Idea
> еще не запущены, а Dota 2 не может загрузить все ваши
> 32 ГБ оперативы и 16 ядер Threadripper'а. Так что вот он
> момент, чтобы отжать кусок RAM'ы и начать онлайн-дедупить.

Ну тогда в случае какихнить bees и пустить их в "околореалтаймном" варианте, там наверное нормально. И это... т.к. файлуха всегда активна, она это все время хочет жрать.

> Флешки к сожалению приходится держать в exfat / ntfs, а btrfs даже Ventoy не понимает.

Ну мне на ventoy пофиг, для загрузочной флехи я делаю условно "инсталл моего десктопа на флеху". А если занесло на совсем чужой комп, есть стебная штука - WinBTRFS :). Не буду настаивать что это всегда и для всех, но...

> И как же я пожалел, что давно создал exfat раздел на ЖД под файлопомойку - прав
> доступа нет, преаллокации нет, уменьшить - хрен.

Последний писк 90х прошлого века...

> Лучше уж ntfs, если нужен доступ из под винды и линукса.
> А теперь и вовсе может быть, что btrfs на эту роль подходит лучше, т.к.
> под винду есть драйвер, который ставится в пару кликов.

Ну да. WinBTRFS называется. И NTFS лично меня вымораживает скоростью работы с большими иерархиями. Если туда расжать что-то размером с линукскернел... ммм... не сильно то оно лучше ExFAt'а ощущается.

>> Или снапшоты. Почти как виртуалка.
> Мне бы их лет 15 назад, когда я обвешивал модами Обливион без
> всяких мод-менеджеров.

Да я бы тоже не отказался так то - чтобы cp --reflink'ать например образа винчей с которых файло восстанавливаю. Ну тут уж упс. Даже, вот, прикольные алгоритмы сжатия для мелочи появились - тадам - сильно опосля того как они были сильнее всего нужны.

"Опыт это такая штука которая у вас появляется сразу после того как он был нужен" :)

Ответить | Правка | К родителю #288 | Наверх | Cообщить модератору

226. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 21-Сен-23, 22:23 
> А соотношение оптимально в конкретном случае - зависит от деталей. И может завести в довольно дальние дебри pareto frontier'а, у этих, от сжатия, свои граали тоже есть.

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

Ответить | Правка | К родителю #210 | Наверх | Cообщить модератору

232. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Аноним (-), 22-Сен-23, 03:19 
> Кстати раз уж btrfs выбрали жать фиксированные куски, то может когда-нибудь они
> вкорячат что-то по типу радужных таблиц для хеш-функций, и будет какой-нибудь
> вариант с зарезервированной таблицей, где какие-то блоки заранее просчитаны с самыми
> лучшими параметрами.

Боюсь вам ОЧЕНЬ не понравится размер таких таблиц. Для них даже ZFS с его зеттабайтами маловато будет. Просто для понимания, всего 16 байтов уже 2^128 вариантов значений, комбинаторика штука злая.

Ответить | Правка | Наверх | Cообщить модератору

241. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от fumanchez (ok), 22-Сен-23, 13:38 
Ну да, тут херню сказанул, да и таблицы для паролей еще и под укороченный алфавит делаются. И какие-то словари уже запихнуты в сам алгоритм. Хотя наверное можно что-то придумать, как-то подшаманить алгоритм под задачу сжатия фиксированных блоков.
Ответить | Правка | Наверх | Cообщить модератору

297. "В ветку ядра Linux-next добавлена реализация ФС Bcachefs"  +/
Сообщение от Kuromi (ok), 27-Сен-23, 16:35 
> На механике фрагментация это фу. На SSD - сильно меньше фу, можно
> не очень париться. А большой непрерывный экстент всяко эффетивнее кучи мелочи.
> Вопрос в масштабе эффекта и стоит ли оно заморочек в конкретном
> случае.

Меньше, конечно, но не настолько уж и сильно меньше фу. Мелкоблочное чтение даже на быстрых NVME НАМНОГО медленнее линейного и большого прогресса тут не видно (как минимум пока не откажутся от трансляции, что опять же потребует новых ФС и механизмов выравнивания). А распространение безбуферных дисков эту проблемку еще и усиливает - невозможность разместить всю таблицу трансляции в набортном RAM осложняет скачкообразное чтение по всему диску. В том же Линуксе безбуферники берут от системной памяти 128 (хотя кое где говорят что 256) мегабайт, а обычное соотношение RAM к NAND - 1 мегабайт на 1 гигабайт, т.е. 1 гигабайт буфера под 1 терабайт диска. Жить можно, но становится понятно почему вендоры так любят выпячивать именно линейную скорость.

Ответить | Правка | К родителю #210 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру