LINUX.ORG.RU
ФорумTalks

Эксперимент с persistent l2arc на десктопе

 l2arc, ,


0

1

Потихоньку обновляю комп, дошли руки до новейшего изобретения отечественных учёных - persistent l2arc из zfs-2.0.0-rc1. Делюсь результатами эксперимента :)

Было - raid10 из терабайтных хардов, 8Гб памяти выделено под ARC. Стало - то же самое, плюс непропорционально много SSD-кеша.

[dan@dan-desktop ~]$ zpool list -v
NAME                                           SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zhome                                         1.81T   894G   962G        -         -    55%    48%  1.32x    ONLINE  -
  mirror                                       928G   447G   481G        -         -    55%  48.2%      -  ONLINE
    ata-WDC_WD10EFRX-68FYTN0_WD-WCC4J2YD0FDE      -      -      -        -         -      -      -      -  ONLINE
    ata-WDC_WD10EFRX-68PJCN0_WD-WCC4J5PA4PCK      -      -      -        -         -      -      -      -  ONLINE
  mirror                                       928G   447G   481G        -         -    56%  48.2%      -  ONLINE
    ata-WDC_WD10EFRX-68PJCN0_WD-WCC4J5YS0DFV      -      -      -        -         -      -      -      -  ONLINE
    ata-WDC_WD10EFRX-68PJCN0_WD-WCC4J7RHCS5S      -      -      -        -         -      -      -      -  ONLINE
cache                                             -      -      -        -         -      -      -      -  -
  nvme-ADATA_SX8200PNP_2K292LAKACN2            477G   111G   366G        -         -     0%  23.3%      -  ONLINE

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

Что получилось:

  • За несколько дней набилось 100Гб кеша
  • Потребление памяти - 200Мб
  • Типичный хитрейт на больших интервалах времени - около 50% (против 99% у ARC)
  • Чтения из l2arc происходит на порядок больше, чем записи
  • Объем записи в день можно с горкой оценить как 20Гб в день
  • Кеш не влияет на время монтирования. Впрочем, оно и без кеша занимает несколько секунд
  • Запись, разумеется, быстрее не стала, но мне особо и не надо

Субъективно очень приятная тема. Если после рестарта запустить игрушку или сделать gis status в жирной репе - практически всё чтение идёт из кеша, со скоростью 50-200Мб/с, хитрейтом больше 90%. И всякая мелочь типа браузера ощутимо быстрее открывается.

Считаю, что это работает достаточно хорошо, чтобы пользоваться. Даже не буду заморачиваться и переносить часто используемые данные на SSD. Просто как-нибудь потом куплю харды побольше, если будет необходимость. Ниже куски выхлопа arc_summary

L2ARC size (adaptive):                                         121.5 GiB
        Compressed:                                    91.5 %  111.1 GiB
        Header size:                                    0.1 %  167.4 MiB
        MFU allocated size:                            67.3 %   74.8 GiB
        MRU allocated size:                           < 0.1 %  656.0 KiB
        Prefetch allocated size:                        0.1 %  168.3 MiB
        Data (buffer content) allocated size:          96.6 %  107.3 GiB
        Metadata (buffer content) allocated size:       3.4 %    3.8 GiB

L2ARC breakdown:                                                  525.7k
        Hit ratio:                                     64.7 %     340.0k
        Miss ratio:                                    35.3 %     185.6k
        Feeds:                                                     37.5k
ARC size (current):                                    99.9 %    8.0 GiB
        Target size (adaptive):                       100.0 %    8.0 GiB
        Min size (hard limit):                        12.2 %  1001.2 MiB
        Max size (high water):                            8:1    8.0 GiB
        Most Frequently Used (MFU) cache size:         96.1 %    6.7 GiB
        Most Recently Used (MRU) cache size:            3.9 %  281.4 MiB
        Metadata cache size (hard limit):              75.0 %    6.0 GiB
        Metadata cache size (current):                 29.3 %    1.8 GiB
        Dnode cache size (hard limit):                 10.0 %  614.4 MiB
        Dnode cache size (current):                    70.0 %  429.9 MiB

ARC hash breakdown:
        Elements max:                                               2.1M
        Elements current:                             100.0 %       2.1M
        Collisions:                                                 1.1M
        Chain max:                                                     7
        Chains:                                                   393.3k

ARC misc:
        Deleted:                                                   73.1k
        Mutex misses:                                                 36
        Eviction skips:                                               12
        Eviction skips due to L2 writes:                               0
        L2 cached evictions:                                    16.4 GiB
        L2 eligible evictions:                                   3.7 GiB
        L2 eligible MFU evictions:                      2.0 %   77.2 MiB
        L2 eligible MRU evictions:                     98.0 %    3.7 GiB
        L2 ineligible evictions:                                19.4 MiB

ARC total accesses (hits + misses):                                58.8M
        Cache hit ratio:                               99.1 %      58.2M
        Cache miss ratio:                               0.9 %     525.7k
        Actual hit ratio (MFU + MRU hits):             99.1 %      58.2M
        Data demand efficiency:                        99.2 %      39.4M
        Data prefetch efficiency:                       0.0 %        372

Cache hits by cache type:
        Most frequently used (MFU):                    96.5 %      56.2M
        Most recently used (MRU):                       3.5 %       2.0M
        Most frequently used (MFU) ghost:               0.2 %     103.8k
        Most recently used (MRU) ghost:               < 0.1 %      28.6k

Cache hits by data type:
        Demand data:                                   67.0 %      39.0M
        Demand prefetch data:                           0.0 %          0
        Demand metadata:                               33.0 %      19.2M
        Demand prefetch metadata:                       0.0 %          0

Cache misses by data type:
        Demand data:                                   60.0 %     315.5k
        Demand prefetch data:                           0.1 %        372
        Demand metadata:                               33.0 %     173.5k
        Demand prefetch metadata:                       6.9 %      36.4k      372
★★★★★

Делюсь результатами эксперимента

Спасибо, было интересно, с релизом 2.0 надо будет обновиться )

непропорционально много SSD-кеша
Запись, разумеется, быстрее не стала

Обычно для такого вроде ставят в зеркало пару SSD и туда пихают и кэш и логи.

GAMer ★★★★★
()
Ответ на: комментарий от GAMer

Обычно для такого вроде ставят в зеркало пару SSD и туда пихают и кэш и логи.

Вообще я сейчас использую sync=disabled и не парюсь. В целом, раз уж диск толком не утилизируется, можно отпилить десяток-другой гигов под ZIL. Скорости не прибавит, но станет типа надёжнее. Пущай отрабатывает стоимость!

в зеркало пару SSD

Ну это точно оверкилл для меня. Могу разве что из двух разделов зеркало сделать :D

melkor217 ★★★★★
() автор топика
Последнее исправление: melkor217 (всего исправлений: 1)
Ответ на: комментарий от GAMer

Обычно для такого вроде ставят в зеркало пару SSD и туда пихают и кэш и логи.

не ставят в зеркало, распиливают на 2 раздела, лог зеркалят, кэш нет.

Minona ★★☆
()
Ответ на: комментарий от melkor217

Вообще я сейчас использую sync=disabled и не парюсь.

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

можно отпилить десяток-другой гигов под ZIL.

ну это много, хватит 2 гиг для твоей конфы.
хотя.. и это много, ты же его отключил =)

Minona ★★☆
()
Ответ на: комментарий от Minona

этак ты вообще ZIL отключил. рискуешь потерять при факапе до 5 сек записи

Туда им и дорога, это ж по сути десктопная файлопомойка.

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

ну это много, хватит 2 гиг для твоей конфы.

Пару лет назад у меня на компе жили реплики монги и эластика. Настолько нагруженные, что всё в диски упиралось. Используемое место на SLOG выше гигабайта не поднималось при этом.

melkor217 ★★★★★
() автор топика

Что будет, если одновременно помрет один из дисков и ссд? Почему просто не купить пару копеечных 2ТБ нвме и к ним 4 штуки тоже не особо дорогих 4-6 ТБ винтов, и использовать это отдельно?

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Что будет, если одновременно помрет один из дисков и ссд?

L2ARC перестанет работать, а одно из зеркал останется без диска. Одновременно, разумеется :)

Почему просто не купить пару копеечных 2ТБ нвме и к ним 4 штуки тоже не особо дорогих 4-6 ТБ винтов, и использовать это отдельно?

Не имею ничего против, но бюджета хватило только на 400Гб нвме.

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

melkor217 ★★★★★
() автор топика
Последнее исправление: melkor217 (всего исправлений: 2)
Ответ на: комментарий от pekmop1024

cache (l2arc) не влияет на надежность, он может «исчезнуть» без последствий; другое, более распространенное, применение ssd в zfs был отдельный log, там да, рекомендуется зеркалировать.

xtouqh
()
Ответ на: комментарий от Minona

емнип, щас уже разрешается отдельному логу помирать невозбранно =)

На скорость записи вполне может повлиять, вплоть до полной остановки. Затем и зеркало. А от ошибки не спасёт - ситуация «двойной лох» всё так же возможна - байтик на диске сам собой поменялся, чексумма чудесным образом сошлась, бесценные данные потеряны :)

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

Но почему-то хардам больше доверяю

Ну такоооее ...
Себе поставил nvme ssd на 3.2ТБ (MTFDHAL3T2MCE-1AN1ZABYY), и оно просто работает. И быстро :)

joy4eg ★★★★★
()
Ответ на: комментарий от melkor217

На скорость записи вполне может повлиять

только синхронной.

вплоть до полной остановки

с чего бы? это раньше вылет внешнего лога приводил пулл в состояние нестояния, ща всё окей.

Minona ★★☆
()
Ответ на: комментарий от Minona

только синхронной.

При sync=always вроде как вся запись через slog прогоняется

с чего бы? это раньше вылет внешнего лога приводил пулл в состояние нестояния, ща всё окей.

Ну представь ситуацию, устройство на месте, на ATA команды отвечает, только очень долго и через раз. Номинально всё работает, но весь массив упирается в один проблемный диск.

Впрочем, я именно за SSD таких фокусов не замечал.

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

При sync=always вроде как вся запись через slog прогоняется

ну да, она вся становится синхронной. нафиг так делать =)
обычно делают наоборот sync=disable и интервал транзакций в 1с вместо 5 дефолтных.
но тут и лог нафиг не нужон

Minona ★★☆
()
Последнее исправление: Minona (всего исправлений: 1)
Ответ на: комментарий от Minona

ну да, она вся становится синхронной. нафиг так делать =)

В общем случае так делать, по идее, не надо. Можно надумать пару юзкейсов, но тьфу-тьфу.

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

кстати, я перепутал, log отключается пер датасет не параметром sync=disable, а logbias=throughput.

Minona ★★☆
()

У меня несколько вопросов:

  • зачем юзать ZFS на линуксе ? EXT4 ведь точно быстрее будет

  • сравнивали результаты с bcache ? мне кажется, что он побыстрее будет. у меня, например, samsung 970 pro на 512 гигов, выдаёт скорости стабильно выше полугигабайта в секунду на рандомных запросах, эффективно превращая raid5 массив на 12 Тб в гигантскую флешку (пока также как и у вас только на чтение, запись не кешируется)

DawnCaster ★★
()

все это очень хорошо, но почему лично мне не хочется ZFS домой: у нее же производительность сильно проседает при полном заполнении дисков. то есть при твоих (и моих, у меня такой же объем на одном из томов) 1.8Тб должны оставаться свободными 20%, т.е. 360 Гб. Выше даункастер правильно сказал. Уж лучше тогда ext4 (я считаю, что XFS, но не суть важно).

crypt ★★★★★
()
Ответ на: комментарий от crypt

Сдохнет что ? ОДИН SSD или сразу весь рейд-массив из HDD ? А ведь за ту-же цену одного SSD можно купить диски ещё и под бекап, и переключить bcache в режим writeback - тогда уж точно получится сравнимо с SSD по скоростям.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от crypt

Я нагуглил самое дешевое предложение без «запросить цену у менеджера» - получилось 980$. При этом всего за 250 баксов можно купить Patriot VPN100 на 2Тб.

UPD: 980 баксов - возможно что это уже Б/У. Новых нигде нет в наличии а цена на них была > 2000$ за штуку, и это при оптовом заказе.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 3)
Ответ на: комментарий от crypt

Наверняка.

Не в курсе, кстати, какие ещё есть штуки для SSD-кеширования медленных дисков ? Я вот пока знаю только 3: bcache, flashcache\enhanceio (которые нынче совсем заброшены), и вот ZFS умеет (да ещё и под линуксом).

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 2)
Ответ на: комментарий от DawnCaster

я с осени прошлого года в вынужденном отпуске. сейчас особо IT не занимаюсь и не в курсе новинок. я обычно подбираю решение, когда все лоровцы уже по 100 раз на грабли наступили. так что я бы сделал на LVM с официальной поддержкой RH для Linux (это какой-то поглощенный продукт, возможно, bcache, но я не помню). и ZFS на FreeBSD (Solaris). нет, вру. из-за миграции FreeBSD 13 на ZoL, я еще бы пропустил пяток их минорных релизов для отладки. (дома у меня hardware raid потому что с батарейкой).

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от DawnCaster

это выше, если в серверной. а дома я полгода назад искал замену RHEL6 и выяснил, что FreeBSD можно приспособить UFS + прослойку для снапшотов и получится полный аналог LVM + снапшоты. поскольку это на hardware raid, то SSD cache там тоже возможен (помимо встроенного DDR3 кеша).

так что дома оптимальнее всего по производительности hardware raid + hot (т.е. на работающей системе) software snapshots.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от crypt

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

DawnCaster ★★
()
Ответ на: комментарий от crypt

Ага, это интересно, спасибо. Может даже натыкался пару раз на эти названия, но думал что это не к SSD кешированию относится.

DawnCaster ★★
()
Ответ на: комментарий от DawnCaster

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

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от crypt

Ну, попытка не пытка, посмотрю как там и что ) С тем-же bcache’ем тоже не всё идеально и без подвохов - его вот тоже ломали то-ли год то-ли два назад так что скорости на многих конфигурациях падали в разы.

DawnCaster ★★
()
Ответ на: комментарий от DawnCaster

зачем юзать ZFS на линуксе ? EXT4 ведь точно быстрее будет

Если по кускам сравнивать со стеком типа mdraid+lvm+luks+ext4+bcache, то набежит довольно много отличий, но незначительных.

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

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

Ну, насчёт NAS - я соглашусь, там производительность уже ограничена сетью. Но вот насчёт гипервизоров - не уверен. Домашне-рабочая виртуалка с последней Windows 10 на libvirt\kvm на сетапе с bcache и raid массиве - просто летает. Стартует быстрее чем на реальном железе, и это только во write-through режиме.

Против ZFS я ничего не имею, но для меня на линуксе он оказался слишком тормозным, наверное кеш позволит исправить ситуацию. Но мне кажется что bcache будет слегка быстрее.

DawnCaster ★★
()
10 августа 2021 г.

Привет! Как гарантированно убедиться что persistant l2arc работает наглядно?

После reboot, команда zpool list -v

Покажет занятое место в кеше, просто?

Не хочется проводить дико сложные тесты на чтение…

DALDON ★★★★★
()
Последнее исправление: DALDON (всего исправлений: 1)

Для теста на тестовом стенде сделал вот так:

Убедился что у меня версия 2.0.x

Затем:

root@bve-02:~# cat /etc/modprobe.d/zfs.conf 

# we can cache any seq data in ssd
options zfs l2arc_noprefetch=0

vfs.zfs.l2arc.rebuild_enabled=1

Далее запустил dd,

root@bve-02:~# dd if=/dev/urandom of=/tank/sample.txt bs=100M count=100 iflag=fullblock

Делаем reboot, и заветные циферки сохраняются!


root@bve-02:~# zpool list -v
NAME                                                    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
tank                                                   3.63T  9.77G  3.62T        -         -     0%     0%  1.00x    ONLINE  -
  mirror                                               3.62T  9.77G  3.62T        -         -     0%  0.26%      -  ONLINE  
    ata-WDC_WD4000FYYZ-01UL1B2_WD-WMC130EA0NNS             -      -      -        -         -      -      -      -  ONLINE  
    ata-WDC_WD4000FYYZ-01UL1B3_WD-WMC130F3ADL6             -      -      -        -         -      -      -      -  ONLINE  
dedup                                                      -      -      -        -         -      -      -      -  -
  mirror                                               1.88G      0  1.88G        -         -     0%  0.00%      -  ONLINE  
    ata-KINGSTON_SKC400S37128G_50026B72730471C5-part6      -      -      -        -         -      -      -      -  ONLINE  
    ata-KINGSTON_SKC400S37128G_50026B72730471FB-part6      -      -      -        -         -      -      -      -  ONLINE  
logs                                                       -      -      -        -         -      -      -      -  -
  mirror                                               4.50G     4K  4.50G        -         -     0%  0.00%      -  ONLINE  
    ata-KINGSTON_SKC400S37128G_50026B72730471C5-part4      -      -      -        -         -      -      -      -  ONLINE  
    ata-KINGSTON_SKC400S37128G_50026B72730471FB-part4      -      -      -        -         -      -      -      -  ONLINE  
cache                                                      -      -      -        -         -      -      -      -  -
  ata-KINGSTON_SKC400S37128G_50026B72730471C5-part5    20.0G  2.49G  17.5G        -         -     0%  12.4%      -  ONLINE  
  ata-KINGSTON_SKC400S37128G_50026B72730471FB-part5    20.0G  2.61G  17.4G        -         -     0%  13.1%      -  ONLINE 

DALDON ★★★★★
()
Ответ на: комментарий от darkenshvein

Ничего хитрого, zpool add cache sda123. А ещё флажок, чтобы кеш стал персистентным.

На 32Гб ARC нарезал ~400Гб L2ARC, ещё пару недель кеш набивался.

Брат жив, игори стали грузиться быстрее, но скорость чтения даже при хитрейте 95% в пару раз хуже, чем было бы на голом SSD.

melkor217 ★★★★★
() автор топика
Ответ на: комментарий от melkor217

А ещё флажок, чтобы кеш стал персистентным.

какой флажок? это же консоль

Брат жив, игори стали грузиться быстрее,

вчера тестировал это обалдение, gta5 на медленном ноутучном винте через ysb3 стала загружаться за минуту, вместо 2:14

darkenshvein ★★★★★
()
Ответ на: комментарий от darkenshvein

Как я понял, всё уже решилось обновлением zfs до 2.x

melkor217 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.