Ladění ZFS ARC: limity, omezení a co měřit

11 min čtení - 24. června 2026

hero section cover
Obsah
  • Změřte ARC, než začnete cokoli ladit
  • Čtyři důležité nastavitelné parametry ARC
  • Nastavení ARC podle pracovního zatížení
  • Diagnostika problémů a rozpoznání, kdy přestat
Sdílet

Ladění ZFS ARC podle pracovního zatížení. Které parametry jsou důležité, jak nastavit zfs_arc_max v systémech Linux a FreeBSD a jak poznat, že je ladění hotové.

ZFS si ve výchozím nastavení tiše zabere zhruba polovinu systémové RAM pro svou čtecí cache, a na nevhodném typu serveru to znamená aktivitu swapování, ukončování procesů kvůli nedostatku paměti (OOM) nebo situaci, kdy databáze soupeří o paměť s souborovým systémem. Ladění ARC v ZFS spočívá v rozhodnutí, kolik z této RAM smí ARC skutečně zabírat a čeho se vzdáte, abyste nastavili tento limit. Tento příspěvek popisuje, jak ARC využívá paměť, co je třeba změřit, než začnete cokoli měnit, několik parametrů, které stojí za to upravit, a rozumné výchozí hodnoty pro souborové servery, hypervizory, databáze a cíle zálohování. Pokud jde o snapshoty v ZFS, podívejte se na náš průvodce po ZFS snapshotách.

Změřte ARC, než začnete cokoli ladit

Neměňte ani jeden nastavitelný parametr, dokud nebudete mít základní hodnoty z běžného období s vysokým zatížením. Snímky z období s nízkým zatížením vás nasměrují špatným směrem. Noční zálohy, týdenní zprávy a dávkové úlohy jsou obvykle oblasti, kde se chování ARC stává zajímavým, proto sbírejte data v průběhu několika dní.

Většinu toho, co potřebujete, pokryjí tři nástroje:

  • arcstat 1 poskytuje živý posuvný přehled počítadel hitů a missů, aktivity poptávky versus přednačítání a aktuální velikosti ARC. Používejte jej během zátěžových testů a zálohovacích oken.
  • arc_summary vytiskne jeden snímek: velikost ARC a cílovou hodnotu, rozdělení MFU/MRU, poměry metadat a aktivní laditelné parametry. Spusťte příkaz arc_summary -s arc pouze pro sekci ARC.
  • Surové počítadla jsou k dispozici /proc/spl/kstat/zfs/arcstats v systému Linux a pod kstat.zfs.misc a vfs.zfs stromech sysctl ve FreeBSD. Získejte je z monitorování, místo abyste parsovali formátovaný výstup.

Počítadla, která stojí za zaznamenání před jakoukoli změnou:

MetrikaKde ji najítProč je důležitá
Velikost ARC, cílová hodnota, maximum (size, c, c_max)arcstat, kstatUvádí, zda je ARC vyčerpán na maximum, nebo má ještě prostor pro růst
Míra zásahů dat a metadat na základě poptávkyarcstat, arc_summaryNesplnění poptávky se přímo promítá do latence aplikace
Dostupná paměť a aktivita swapování (si/so)free -h, vmstat 1Trvalé načítání a ukládání na odkládací paměť při velkém ARC je nejjasnějším znakem přetížení paměti
Doba obsluhy disku (await) a využitíiostat -xPropojuje selhání ARC se skutečnými úzkými místy úložiště
memory_throttle_count/proc/spl/kstat/zfs/arcstatsRostoucí počet potvrzuje, že ZFS je omezován kvůli nedostatku paměti

V této souvislosti se lidé často mýlí ve dvou věcech. Sledujte dostupnou paměť, nikoli volnou paměť; Linux bez problémů hlásí nízkou hodnotu volné RAM jako stabilní stav a to samo o sobě není problém. Důležitým signálem je dostupná paměť blížící se nule v kombinaci s trvalou aktivitou odkládacího prostoru (důvody vysvětluje úvod do správy paměti v Linuxu). A poměr zásahů berte jako trend, ne jako cíl. 99% poměr zásahů na stroji, který využívá odkládací prostor, je selháním ladění, nikoli úspěchem.


 

Čtyři důležité nastavitelné parametry ARC

Většina ladění v produkčním prostředí se omezuje na čtyři nastavení. Nastavení přizpůsobte tlaku, který jste skutečně naměřili v základní linii. Aktivity výměny poukazují na zfs_arc_max. Obnovení ztrát, které neustále vymazávají vyhřívanou mezipaměť, ukazuje na zfs_arc_min. Pomalé procházení adresářů ukazuje na limit metadat.

Nastavovací parametrCo děláKdy jej změnitRiziko v případě nesprávného nastavení
zfs_arc_maxPevná horní hranice využití paměti ARC RAMSdílené hostování databází nebo virtuálních strojů, které vyžadují vyhrazenou RAMPříliš nízká hodnota: vyšší zatížení disku a latence. Příliš vysoká hodnota: tlak na odkládací prostor nebo nedostatek paměti (OOM).
zfs_arc_minMinimální hodnota, která zabrání agresivnímu zmenšování ARCPracovní zátěže s krátkými výkyvy paměti, které neustále vymazávají mezipaměťPříliš vysoká: omezuje výkon aplikací při skutečném nedostatku paměti
zfs_arc_meta_limit_percentPodíl ARC dostupný pro metadata (nahrazuje starší zfs_arc_meta_limit)Miliony malých souborů, hluboké adresářové stromy, pomalé ls/findPříliš nízká: vyhledávání v adresářích se zpomaluje. Příliš vysoká: omezuje ukládání dat do mezipaměti.
zfs_arc_free_targetKolik volné systémové paměti se ZFS snaží udržet k dispoziciServery s náhlými velkými návaly alokací (spouštění virtuálních strojů, rozsáhlé dotazové plány)Příliš vysoká hodnota: ARC zůstává malý, i když je k dispozici RAM

Začněte s nejmenší změnou, která vyřeší tlak, který pozorujete. zfs_arc_max, správná horní hranice závisí na pracovním zatížení (to bude popsáno v následující části). Pro zfs_arc_minje dolní hranice 25 % až 50 % zfs_arc_max je rozumným výchozím bodem, pokud vůbec nějaký potřebujete. U metadat již nejnovější výchozí nastavení OpenZFS přiděluje metadatům 75 % ARC prostřednictvím zfs_arc_meta_limit_percent, což je pro většinu pracovních zátěží dostatek; tuto hodnotu upravujte pouze tehdy, jsou-li v arcstat.

Aplikace změn v systémech Linux a FreeBSD

V systému Linux otestujte změnu za běhu zápisem do parametrického souboru sysfs. Není třeba restartovat:

echo 17179869184 > /sys/module/zfs/parameters/zfs_arc_max

Tím se zfs_arc_max hodnotu na 16 GiB. Aby změna přetrvala i po restartu, přidejte ji do /etc/modprobe.d/zfs.conf:

options zfs zfs_arc_max=17179869184

Ve FreeBSD se pro změny za běhu používá sysctl:

sysctl vfs.zfs.arc_max=17179869184

Uchovejte stejnou hodnotu v /boot/loader.conf:

vfs.zfs.arc_max="17179869184"

Měňte vždy jen jedno nastavení, v malých krocích o velikosti přibližně 10 % celkové RAM. Sledujte okno s problémy. Změnu ponechte pouze v případě, že swap zůstane na nule a latence je stabilní. Změnu uložte trvale až po úspěšném absolvování testu za běhu.

Nastavení ARC podle pracovního zatížení

Celková velikost RAM není správným výchozím bodem. Dimenzování ARC by mělo vycházet ze skladby pracovních zátěží na daném zařízení.

Pracovní zátěžPočáteční zfs_arc_maxPriorita ARCPoznámkyKlíčová metrika
Vyhrazený souborový server / NAS75 % až 80 % paměti RAMData a metadataPřednačítání zapnuto. Klíčem je agresivní cache.Celková úspěšnost
Hostitel virtualizace30 % až 40 % paměti RAMVyváženéNechte rezervu pro RAM hosta a úlohy hostitele. Jakákoli hodnota odlišná od nuly si/so znamená další omezení.Swap hostitele (si/so)
Databázový server25 % až 50 % paměti RAMS důrazem na metadataNejprve vyhraďte paměť pro databázový engine. Nastavte primarycache=metadata , pokud engine spravuje vlastní vyrovnávací paměť.Nedostatek paměti při požadavcích
Cíl zálohování / archivaceKonzervativní limitPouze metadataNastaveno primarycache=metadata tak, aby skenování v jednom průchodu nevymazalo užitečné bloky.Počet chyb přednačítání, míra úspěšnosti metadat
Analýza / opakované čteníVyšší limit po rezervaci pro ostatní mezipamětiS vysokým počtem MFUL2ARC na NVMe dokáže udržet často používanou sadu dat během provádění dotazů.Neshoda při vyžádání

Host virtuálních strojů musí sdílet paměť se svými hosty, takže limit 30 % až 40 % je bezpečným výchozím nastavením a 50 % je u většiny sestavení již příliš vysoké. Databáze jako PostgreSQL a MySQL spravují své vlastní vyrovnávací paměti, takže nejprve rezervujete paměť pro engine a ARC necháte to, co zbývá. Cíle zálohování z toho těží primarycache=metadata protože načtená data se zřídka znovu potřebují a nechcete, aby noční záloha procházela celý pool a přitom vyprázdňovala zbytek mezipaměti. U všech typů zátěže platí, že pokud je aktivita swapování při fixaci ARC na zfs_arc_max znamená, že limit je příliš vysoký; toto pravidlo se nemění.

Diagnostika problémů a rozpoznání, kdy přestat

Příliš malá velikost ARC se projevuje vysokým počtem IOPS při čtení, nízkou mírou úspěšnosti požadavků a pomalým procházením adresářů, zatímco systém má stále volnou RAM. Příliš velká velikost ARC je méně zřejmá. Míra úspěšnosti vypadá v pořádku, ale systém začne swapovat, průměrné zatížení stoupá, procesy se blokují ve D stavu, zatímco jádro uvolňuje stránky ARC na vyžádání, a v nejhorším případě začne OOM killer vybírat oběti. Cache vypadá v pořádku, ale server funguje příšerně.

Tlak na metadata se projeví, když demand_metadata_bytes je výrazně vyšší než demand_data_bytes v arc_summary. To znamená, že metadata soupeří s daty o místo, a v takovém případě se vyplatí zvýšit procentuální limit pro metadata.

Porovnejte to, co vidíte, s prvním nastavením, které je třeba zkontrolovat:

PříznakPravděpodobná příčinaPrvní nastavitelný parametr, který je třeba zkontrolovatDalší krok
Vysoká await s vysokým počtem chyb při požadavcíchPracovní sada překračuje ARCzfs_arc_maxPřidejte RAM nebo L2ARC
Aktivita swapování při velkém ARCARC omezuje operační systém nebo aplikacezfs_arc_maxSnižte limit
Výkon klesá po výkyvech pamětiAgresivní uvolňování paměti během reclaimuzfs_arc_minNastavte dolní hranici na 25 % až 50 % arc_max
pomalých ls, findoperací s malými souboryNedostatek mezipaměti pro metadatazfs_arc_meta_limit_percentZvyšte procentuální podíl metadat
Rostoucí memory_throttle_countTlak na paměť v celém systémuzfs_arc_maxSnižte limit; zkontrolujte, zda nedochází k nadměrnému nárůstu indexu L2ARC

L2ARC není bez nákladů. Index pro položky L2ARC je uložen v primárním ARC a pokud tato režie překročí přibližně třetinu celkové kapacity ARC, sekundární mezipaměť přináší více škody než užitku. Používejte L2ARC pouze tehdy, když je pracovní sada větší než RAM, ale stále se vejde na rychlé zařízení NVMe, a pouze tehdy, když je poměr zásahů v primární ARC již v pořádku.

Správný čas na ukončení ladění nastává, když se latence ustálí, swap zůstává na nule i během stejného období vysokého zatížení, které původně způsobilo problém, a další změny již nic nezlepšují. Vysoká úspěšnost přístupů k ARC nemá žádný význam, pokud server provádí swapování. Po dosažení tohoto bodu přestaňte upravovat nastavení a vraťte se k nim pouze v případě, že se stejný problém znovu objeví při stejném pracovním zatížení.

Pokud potřebujete server s dostatečnou rezervou RAM, aby systém ZFS běžel správně, aniž by se o paměť musel přetahovat s vašimi virtuálními stroji nebo databázemi (nejprve si přečtěte, kolik RAM vlastně potřebujete), podívejte se na dedikované servery FDC.

Blog

Tento týden byly představeny

Další články
Digitální únava očí: Jak chránit svůj zrak ve světě, kde trávíme mnoho času před obrazovkami

Digitální únava očí: Jak chránit svůj zrak ve světě, kde trávíme mnoho času před obrazovkami

Celý den zíráte do obrazovky? Naučte se, jak snížit digitální únavu očí pomocí osvědčených technik a nástrojů. Tento průvodce je nepostradatelný pro pracovníky na dálku, vývojáře a všechny, kdo se pohybují v oblasti technologií.

4 min čtení - 21. května 2025

Proč je důležité mít výkonný VPS s neomezeným datovým přenosem

8 min čtení - 9. května 2025

Další články
background image

Máte dotazy nebo potřebujete vlastní řešení?

icon

Flexibilní možnosti

icon

Globální dosah

icon

Okamžité nasazení

icon

Flexibilní možnosti

icon

Globální dosah

icon

Okamžité nasazení