George
в критике фороникса вроде писал за что их критиковал
ArtAnt
ну и нет "правильных тестов", есть тесты на конкретный профиль нагрузки
тогда в чем он был неправ автор на phoronix. Никаких конкретных замечаний в комментариях я не нашел.
ArtAnt
ну и нет "правильных тестов", есть тесты на конкретный профиль нагрузки
тесты по хорошему должны быть стандартизированы, я не нашел ничего на этот счет. Ни какие инструменты, ни какие параметры.
George
тесты по хорошему должны быть стандартизированы, я не нашел ничего на этот счет. Ни какие инструменты, ни какие параметры.
вообще ничего не нашли?) хорошей базой везде считается использование fio, дальше по профилю нагрузки подбирается
George
вот для начала пачка конфигов fio https://github.com/openzfs/zfs/tree/master/tests/zfs-tests/tests/perf/fio
ArtAnt
вообще ничего не нашли?) хорошей базой везде считается использование fio, дальше по профилю нагрузки подбирается
везде разные варианты, часто не указано почему использовались те или иные ключи
George
везде разные варианты, часто не указано почему использовались те или иные ключи
ну не касаемо zfs стоит изучать как fio используют, под рукой нет инструкции всеобъясняющей, стоит смотреть примеры и читать доку про параметры, там кучу вариантов нагрузки можно замерить. а касаемо zfs стандартные нюансы: - xattrs - compression - recordsize - ashift в контексте raidz - время тестирования должно учитывать свободное место в пуле и фрагментацию, заполненность zvol ну и касаемо ssd/nvme: - время тестирования должно учитывать деградацию производительности носителя при заполнении
George
это из головы первое
ArtAnt
ну не касаемо zfs стоит изучать как fio используют, под рукой нет инструкции всеобъясняющей, стоит смотреть примеры и читать доку про параметры, там кучу вариантов нагрузки можно замерить. а касаемо zfs стандартные нюансы: - xattrs - compression - recordsize - ashift в контексте raidz - время тестирования должно учитывать свободное место в пуле и фрагментацию, заполненность zvol ну и касаемо ssd/nvme: - время тестирования должно учитывать деградацию производительности носителя при заполнении
Я думаю правильно тестировать на разных пулах в составе которых будет по одному vdev на базе разных типов носителей, обязательно пустых. Тогда получится таргетное тестирование конкретных опций относящихся к модулю, а не все возможные варианты рейдов и их конфигураций дополнительно влияющих на производительность. Опции эти относятся и применяются конкретно к vdev-ам значит в тесте нужно работать именно с vdev-ми.
George
только если на кейс со special vdev посмотреть, но это отдельный случай
ArtAnt
пока не понимаю зачем в такой конфигурации тестить, ни два ни полтора. В пулах обычно не делают микс из разных типов устройств
опции эти применяются к vdev-ам , а не к пулам, неважно в каком типе пула состоит vdev количество очередей направленный в его сторону будет таким какое указано в параметрах модуля zfs. Подмешивать сюда влияние конфигураций пулов никакого смысла нет, если задача стоит протестировать именно влияние zfs_vdev_sync_read_max_active zfs_vdev_sync_write_max_active и тому подобных параметров модуля. Результаты можно интерполировать уже на пулы на разных носителях (vdev-ах), где добавятся влияние их конфигураций.
ArtAnt
а насколько удалось ускорить/оптимизировать производительность пула на ссд через выкручивание этого параметра?
пока я только планирую провести измерения, выше я высказал теоретическое предположение и почему считаю, что эти параметры могут быть настроены только под определенные типы носителей, а если у вас на хосте используются разные типы, то максимально возможной производительности добиться для них для всех одновременно в рамках одного хоста невозможно.
George
если хотите адекватных цифр, пригодных для обсуждения в тикетах - тестите пулы с дисками одного типа
George
просто если явно выявите лучшие параметры для ssd пула, то это будет почвой для разговора об изменениях
ArtAnt
на vdevs то распространяется это понятно, но вы не можете читать/писать только на один vdev в пуле, гарантировать 100% равномерную нагрузку по vdevs тоже нельзя = результаты теста однозначно интерпретировать нельзя
такое ощущение что вы не хотите меня слышать или делайте вид что не понимаете о чем идет речь. Еще раз, не важно, как работает vdev в пуле в котором он один или их восемь таких же как он, если нагрузка на любого из них в пуле в какой-то момент времени будет равномерная или неравномерная это ничего не решат с точки зрения определения влияния этих параметров. для чего вы пытаетесь подмешать сюда толи общую производительность пула, толи чего... Когда на vdev который в пуле из многих ему подобных или нет, выстроиться очередь в 100 определенная параметром например zfs_vdev_sync_write_max_active, а он при этом HDD то производительность его существенно просядет, а если он nvme то легко справиться, если задать очередь в 10-ть то и HDD отработает относительно неплохо, а для nvme это уже будет неэффективно. Для чего вы мешаете сюда пулы, если речь идет про работу с конкретным vdev-ом неважно в одиночку он работает или нет, все равно очередь на него не будет больше чем она будет задана в параметрах модуля.
George
такое ощущение что вы не хотите меня слышать или делайте вид что не понимаете о чем идет речь. Еще раз, не важно, как работает vdev в пуле в котором он один или их восемь таких же как он, если нагрузка на любого из них в пуле в какой-то момент времени будет равномерная или неравномерная это ничего не решат с точки зрения определения влияния этих параметров. для чего вы пытаетесь подмешать сюда толи общую производительность пула, толи чего... Когда на vdev который в пуле из многих ему подобных или нет, выстроиться очередь в 100 определенная параметром например zfs_vdev_sync_write_max_active, а он при этом HDD то производительность его существенно просядет, а если он nvme то легко справиться, если задать очередь в 10-ть то и HDD отработает относительно неплохо, а для nvme это уже будет неэффективно. Для чего вы мешаете сюда пулы, если речь идет про работу с конкретным vdev-ом неважно в одиночку он работает или нет, все равно очередь на него не будет больше чем она будет задана в параметрах модуля.
ну проще всего тестировать vdev когда он один в пуле, например, я про это
George
ну и я то же об этом
ну и отлично)
Fedor
А как лучше зфс профилировать? Есть какие-нибудь практики на этот счёт?
Fedor
Дтрейс какой-нибудь?
ArtAnt
@gmelikov Георгий, в подкасте вы говорите что ECC для ZFS на столько же важна, насколько и для других ФС, ведь на деле это не так, ZFS рискует больше по-моему, например при том же resilvering-е пул скорее всего тут же развалиться в случае наличия битой памяти.
nikolay
А как лучше зфс профилировать? Есть какие-нибудь практики на этот счёт?
под solaris и клонами а-ля smart os dtrace. а вот под Linux не знаю... вроде был какой-то проект dtrace, но его судьба мне не известна. возможно что blktrace что-то умеет..
Fedor
У меня омниос/солярис как раз
Krey
Все примеры с битой памятью что мне попадались на форумах были про останавливающийся скруб по причине too many errors
Krey
Но их не так уж и много было
Krey
А вот например storage spaces убил пул лично у меня в первый год его использования
Krey
И это кажется допустимым?
в смысле? Каждый сам для себя решает ставить ECC или нет
Fedor
в смысле? Каждый сам для себя решает ставить ECC или нет
Я о наличии самого факта поврежденных данных
Krey
Я о наличии самого факта поврежденных данных
это неизбежно. Какую бы хорошую вы программу не написали вы не можете гарантировать ее правильную работу, если ее код считывается неправильно - это будет уже другая программа
ArtAnt
Все примеры с битой памятью что мне попадались на форумах были про останавливающийся скруб по причине too many errors
И это ситуации когда память вышала из строя аппаратно, а может быть ситуация, когда значение в ячейке меняется под воздействием внешних факторов и такое изменение не может быть выявлено если нет ECC (silent data corruption). Чем меньше техпроцесс тем меньше энергии нужно чтобы изменить состояние бита. Интересно как люди не использующие ECC в продакшен могут спокойно спать.
George
@gmelikov Георгий, в подкасте вы говорите что ECC для ZFS на столько же важна, насколько и для других ФС, ведь на деле это не так, ZFS рискует больше по-моему, например при том же resilvering-е пул скорее всего тут же развалиться в случае наличия битой памяти.
- во первых обычный resilver тоже проверяет чексуммы и у него хотя бы есть шанс поймать проблемы и остановиться раньше чем "всё пропало" - во вторых resilver нужно сравнивать с mdraid и миррором, они беззвучно превратят массив в кашу и радостно отдадут кашу как ни в чём не бывало
George
наличие чексумм только улучшает для zfs ситуацию, а не ухудшает при отсутствии ecc
George
если вообще можно говорить об "что лучше хуже" при каше в ОЗУ
Alex
авоткстати я ведь правильно понимаю что у DDR5 ECC является дефолтной частью стандарта?
George
уже писал когда-то, повторюсь - я развлекался и андервольтингом ЦПУ и разгоном ОЗУ, и как чексуммы работали и помогали, так и были кейсы когда до zfs уже битое долетало и чексуммы в нём сходились, но данные были уже битые
George
тогда в чем он был неправ автор на phoronix. Никаких конкретных замечаний в комментариях я не нашел.
вот пример комментов адекватных о форониксе https://www.phoronix.com/forums/forum/software/bsd-mac-os-x-hurd-others/1067255-freebsd-zfs-vs-linux-ext4-btrfs-raid-with-twenty-ssds/page2 , ryao - один из контрибьюторов, можно его комменты по статье искать
George
там упоминается что Michael оч странные выводы делает даже не изучая что как устроено
George
“With the basic SQLite embedded database benchmark, ZFS on FreeBSD 12 was faster than Linux with either EXT4 or Btrfs. Btrfs with its default copy-on-write behavior led to noticeably slower performance.” Michael Are you trying to say that ZFS is not Copy on Write? ZFS is only copy on write. There is no option to turn it off.
George
According to the ZFS rule of thumb of providing 1GB of RAM for every 1TB of disk, that petabyte array should be used with a system that has 1,000 gigabytes of RAM?!?! Majority of server motherboards I have worked with top out around below a fifth of that! Every word of this is false. There is no such rule. I could have 1EB of storage on ZFS under on a RPi and it would work just about as well as you can imagine it would with any filesystem. There is no penalty for having less memory as cache (and ZFS does release memory as the kernel requests it). Also, many enterprise CPUs are limited to 256GB of RAM, which is 1/4 of 1TB. By the way, for postgresql, set primarycache=metadata if you want ZFS’ cache to get out of your way. Also, set the recordsize to 8KB to avoid read-modify-write and put the PostgreSQL transaction log on its own dataset. Also, add a small SLOG device. That will make it perform really well.
George
т.е. как в примере выше, запускать pgbench без минимум изменения recordsize = получить результаты по умолчанию хуже.
Krey
» 1GB of RAM for every 1TB of disk О мы на форуме насостроителей докапались до первоисточника этого типа правила. Там речь шла о DDT
central
» 1GB of RAM for every 1TB of disk О мы на форуме насостроителей докапались до первоисточника этого типа правила. Там речь шла о DDT
не так давно читал статью про zfs и там это было написано практически прямым текстом
Krey
ddt - до 320байт на 1 блок (recordsize), вот правило
да, но в источнике ереси говорилось именно о дедупе. Возможно там рекордсайз был 64к, это я не помню. Теперь то надо докапыватся до наших раскопок что бы это найти :)
George
да это везде пропихивают, замучался спорить
+1, в своих статьях так не пишу😁
Krey
не про фороникс. Вообще про историю возникновения этого "эмпирического" правила
Krey
мы откопали его первое упоминание
Krey
а дальше просто испорченный телефон сработал и его везде стали повторять уже забыв и про дедуп и про рекордсайз, т.е. область его применимости уже никого не интересовала
Krey
с тех пор так и повелось - мол зфс прожорливая ей нужен гиг на тэр
nagual
И это ситуации когда память вышала из строя аппаратно, а может быть ситуация, когда значение в ячейке меняется под воздействием внешних факторов и такое изменение не может быть выявлено если нет ECC (silent data corruption). Чем меньше техпроцесс тем меньше энергии нужно чтобы изменить состояние бита. Интересно как люди не использующие ECC в продакшен могут спокойно спать.
Есть большое колличество оверклокеров у которых память работает в предельных а ещё чаще запредельных режима, они регулярно ловят бсоды и по теории их ntfs должен падать каждый день, но в реальности этого не случается, падения есть но их так мало что тема гонева даже не ассоциируется с факапами.
nagual
ну да, и ось каждый месяц переставлять норма, кек
Что то не замечал, даже те кто подаёт на память 2в и охлаждает её водой.
Krey
а нтфс не умеет данные проверять.
Krey
зато потом, когда нить, кода им понадобится что то из своего архива, их ждет немало сюрпризов
Krey
пример из жизни (не оверклок, просто память сдохла). Записал образ винды на сидюк, ставлю на новый комп, в процессе сетапа то виснет, то бсод скачал другой образ, записал, тоже самое через часа 4-ре разных опытов догадался проверить мд5 пофайлово в образе и записи, профит - оно различалось. Запустил мемтест, увидел ошибки и вытащил один модуль памяти
edo1
задача: кэш нжинкса. нужно держать 50мб/с с одного hdd. чтение/запись примерно 4:1. в компе 4 hdd и 1 ssd файлы двух типов: относительно крупные (средний размер свыше 20Мб) и мелкие (их много, но общий размер меньше 100ГБ). что хочу сделать: сделать на SSD 4 раздела (по разделу на каждый HDD) по 200ГБ. собрать на каждом HDD отдельный zfs со своим special. поставить recodsize 4МБ, в special класть записи меньше 2МБ (прикинул, должно хватить) рассуждал так: отдача в основном линейная, но многопоточная (много одновременных запросов от разных клиентов). выгоднее читать в память относительно большими кусками и отдавать уже из памяти (чтобы снизить iops на hdd) ну и метаданные/мелкие файлы лучше размещать на ssd покритикуйте, плиз
nagual
Зачем ZFS под кеш ?
nagual
Там ufs
edo1
затем, что она умеет размещать метаданные и мелкие файлы на ssd
edo1
не совсем