ZFS ARC-i häälestamine: piirangud, piirmäärad ja mida mõõta

11 min lugemine - 24. juuni 2026

hero section cover
Sisukord
  • Mõõtke ARC-i enne, kui midagi häälestate
  • Neli olulist ARC-seadet
  • ARC-i häälestamine töökoormuse järgi
  • Probleemide diagnoosimine ja teadmine, millal peatuda
Jaga

ZFS ARC-i häälestamine töökoormuse järgi. Millised häälestusparameetrid on olulised, kuidas seadistada zfs_arc_max Linuxis ja FreeBSD-s ning kuidas aru saada, millal oled valmis.

ZFS võtab vaikimisi oma lugemismälupuhvriks umbes poole teie süsteemi RAM-ist, ning vale tüüpi serveril tähendab see vahetusmälu kasutamist, OOM-i poolt protsesside lõpetamist või seda, et andmebaas konkureerib failisüsteemiga mälu pärast. ZFS ARC-i häälestamine seisneb selles, et otsustada, kui palju sellest RAM-ist ARC-il tegelikult lubatakse hoida ja millest te loobute, et piirangut seada. Käesolevas postituses käsitletakse seda, kuidas ARC mälu kasutab, mida tuleks mõõta enne mis tahes muudatuste tegemist, milliseid seadistusi tasub muuta ning millised on mõistlikud algseaded failiserverite, hüperviisorite, andmebaaside ja varunduskohtade jaoks. ZFS-i hetktõmmiste kohta vaadake meie ZFS-i hetktõmmiste juhendit.

Mõõtke ARC-i enne, kui midagi häälestate

Ärge muutke ühtegi seadistatavat parameetrit enne, kui teil on olemas võrdlusandmed tavalisest tippkoormuse perioodist. Vaikse perioodi hetkeolukorra andmed viivad teid valele teele. Öised varukoopiad, nädalased aruanded ja kogumitööd on tavaliselt need, kus ARC-i käitumine muutub huvitavaks, seega koguge andmeid mitme päeva jooksul.

Kolm tööriista katavad enamiku teie vajadustest:

  • arcstat 1 annab reaalajas keritava ülevaate tabamiste ja möödalaskmiste loenduritest, nõudluse ja eelvõtmise tegevusest ning praegusest ARC-suurusest. Kasutage seda koormustestide ja varundusakende ajal.
  • arc_summary trükib välja ühe hetkeolukorra ülevaate: ARC-i suurus ja sihtmärk, MFU/MRU jaotus, metaandmete suhtarvud ning aktiivsed häälestusparameetrid. Käivita arc_summary -s arc ainult ARC-osa jaoks.
  • Toored loendurid asuvad /proc/spl/kstat/zfs/arcstats Linuxis ja kstat.zfs.misc ja vfs.zfs FreeBSD-s. Koguge need andmed seireandmetest, mitte vormindatud väljundi analüüsimise teel.

Enne mis tahes muudatust on vaja salvestada järgmised loendurid:

MõõdikKust seda leidaMiks see on oluline
ARC suurus, sihtmärk, maksimaalne väärtus (size, c, c_max)arcstat, kstatNäitab, kas ARC on jõudnud oma ülempiirini või on veel kasvuruumi
Nõudluse andmed ja metaandmete tabamismääradarcstat, arc_summaryNõudluse täitmata jätmine mõjutab otseselt rakenduse latentsust
Vaba mälu ja vahetusmälu aktiivsus (si/so)free -h, vmstat 1Pidev vahetus sisse ja välja, kui ARC on suur, on kõige selgem märk mälukoormusest
Ketta teenindusaeg (await) ja kasutamineiostat -xSeostab ARC-i ebaõnnestumised tegelike salvestusruumi pudelikaeltega
memory_throttle_count/proc/spl/kstat/zfs/arcstatsArvu suurenemine kinnitab, et ZFS-i tööd piiratakse mälukoormuse tõttu

Siin tehakse sageli kahte viga. Jälgige kättesaadavat mälu, mitte vaba mälu; Linux näitab rõõmsalt madalat vaba RAM-i kui stabiilset seisundit ja see iseenesest ei ole probleem. Oluline märk on nullile lähedane kättesaadav mälu koos püsiva vahetusmälu kasutamisega (Linuxi mäluhalduse algõpetus selgitab, miks). Ja käsitle tabamismäära kui suundumust, mitte eesmärki. 99% tabamismäär vahetusmälu kasutaval süsteemil on häälestamise ebaõnnestumine, mitte edu.


 

Neli olulist ARC-seadet

Enamik tootmiskeskkonnas tehtavatest seadistustest taandub neljale parameetrile. Kohandage seadistust vastavalt baasjoones tegelikult mõõdetud koormusele. Vahetustegevus viitab zfs_arc_max. Kordusvõrgu puhastamine, mis pidevalt tühjendab aktiivset vahemälja, viitab zfs_arc_min. Aeglane kataloogide läbivaatamine viitab metandmete piirangule.

Reguleeritav parameeterMida see teebMillal seda muutaRisk vale seadistuse korral
zfs_arc_maxARC-RAM-i kasutamise range ülempiirReserveeritud RAM-i vajavate andmebaaside või virtuaalmasinate ühishostimineLiiga madal: rohkem kettaseadme sisend-väljundoperatsioone ja viivitust. Liiga kõrge: vahetusmälusurve või OOM.
zfs_arc_minAlampiir, mis takistab ARC-i agressiivset kahanemistTöökoormused, mille lühiajalised mälukasutuse tippkoormused puhastavad pidevalt vahemäluLiiga kõrge: põhjustab rakenduste ressursipuudust tõelise mälukoormuse korral
zfs_arc_meta_limit_percentMetandmetele kättesaadav ARC-osa (asendab vanema zfs_arc_meta_limit)Miljonid väikesed failid, sügavad kataloogipuud, aeglane ls/findLiiga madal: kataloogide otsingud kulgevad aeglaselt. Liiga kõrge: pärsib andmete vahemällu salvestamist.
zfs_arc_free_targetKui palju vaba süsteemimälu ZFS püüab vabana hoidaServerid, kus esinevad ootamatud suured mälueraldused (virtuaalmasinate käivitamine, suured päringukavad)Liiga kõrge: ARC jääb väikeseks isegi siis, kui RAM-mälu on saadaval

Alusta väikseimast muudatusest, mis leevendab nähtavat koormust. zfs_arc_maxõige ülempiir sõltub töökoormusest (seda käsitletakse järgmises jaotises). zfs_arc_minon alampiiriks 25–50% zfs_arc_max on mõistlik lähtepunkt, kui seda üldse vaja on. Metadata puhul eraldavad hiljutised OpenZFS-i vaikimisi seaded metadatale juba 75% ARC-st zfs_arc_meta_limit_percent, mis on enamiku töökoormuste puhul küllaldane; muutke seda vaid siis, kui metandmete puudumised on selgelt nähtavad arcstat.

Muudatuste rakendamine Linuxis ja FreeBSD-s

Linuxis saate muudatust tööaja jooksul testida, kirjutades sysfs-i parameetrifaili. Taaskäivitamist ei ole vaja:

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

See seab zfs_arc_max väärtuseks kohe 16 GiB. Et muudatus püsiks ka pärast taaskäivitamist, lisage see faili /etc/modprobe.d/zfs.conf:

options zfs zfs_arc_max=17179869184

FreeBSD-s kasutatakse käitamisaja muudatuste jaoks sysctl:

sysctl vfs.zfs.arc_max=17179869184

Säilita sama väärtus failis /boot/loader.conf:

vfs.zfs.arc_max="17179869184"

Muutke ühte seadet korraga, väikeste sammudega, mis moodustavad umbes 10% kogu RAM-ist. Jälgige probleemide akent. Säilitage muudatus ainult juhul, kui vahemälu jääb nulliks ja latentsus on stabiilne. Säilitage muudatus alles pärast seda, kui käitamisaja test on edukalt läbitud.

ARC-i häälestamine töökoormuse järgi

Kogu RAM-mälu ei ole õige koht, kust alustada. ARC-i suuruse määramisel tuleks lähtuda seadmes oleva töökoormuse koostisest.

TöökoormusAlustamine zfs_arc_maxARC-i prioriteetMärkusedPeamine näitaja
Pühendatud failiserver / NAS75% kuni 80% RAM-istAndmed ja metaandmedEelvärvimine sisse lülitatud. Oluline on agressiivne vahemälu.Üldine tabamismäär
Virtualiseerimise host30% kuni 40% RAM-istTasakaalustatudJäta varu külalissüsteemi RAM-ile ja hosti ülesannetele. Iga nullist erinev si/so tähendab, et piirangut tuleb veelgi suurendada.Hosti vahetusmälu (si/so)
Andmebaasi server25% kuni 50% RAM-istMetandmetele orienteeritudReserveerige mälu esmalt andmebaasi mootorile. Määrake primarycache=metadata kui mootor haldab ise oma puhvripuhvrit.Nõudluse puudujäägid
Varundus- / arhiivisihtKonservatiivne piirAinult metaandmedMääratud primarycache=metadata nii, et ühekordne skaneerimine ei eemaldaks kasulikke plokke.Eelvärvutamise ebaõnnestumised, metaandmete tabamismäär
Analüütika / korduv lugemineKõrgem ülempiir pärast teiste vahemälude reserveerimistMFU-mahukasNVMe-l asuv L2ARC suudab hoida aktiivset töökomplekti päringute käigus.Nõudlusest tulenevad möödalasked

VM-host peab jagama mälu oma külalistega, seega on 30–40% piirang ohutu vaikimisi seadistus ja 50% on enamiku koosseisude puhul juba liiga kõrge. Andmebaasid nagu PostgreSQL ja MySQL haldavad oma puhvrivahendeid ise, seega reserveerite mälu esmalt mootorile ja jätate ARC-le allesjäänu. Varundus sihtmärkidele on kasulik primarycache=metadata sest loetavaid andmeid vajatakse harva uuesti ning te ei soovi, et öine varundus käiks läbi kogu mälupooli ja tühjendaks seejuures ülejäänud vahemälu. Kõigi töökoormuste puhul tähendab vahetusmälu kasutamine, kui ARC on fikseeritud tasemele zfs_arc_max , tähendab see, et piirang on liiga kõrge; see reegel ei muutu.

Probleemide diagnoosimine ja teadmine, millal peatuda

Liiga väike ARC avaldub kõrge lugemis-IOPS-i, madala nõudluse tabamismäära ja aeglase kataloogide sirvimise näol, kuigi süsteemis on veel vaba RAM-i. Liiga suur ARC on vähem silmatorkav. Tabamismäär näib korras olevat, kuid seade hakkab vahetama, koormuse keskmised näitajad tõusevad, protsessid blokeeruvad D seisundisse, samal ajal kui tuum vabastab ARC-lehti vastavalt vajadusele, ning halvimal juhul hakkab OOM-killer ohvreid valima. Vahemälu näib korras olevat, kuid serveri töö on kohutav.

Metandmete koormus ilmneb siis, kui demand_metadata_bytes on palju kõrgem kui demand_data_bytes väärtusest arc_summary. See tähendab, et metadandid võitlevad andmetega ruumi pärast ning metadandite protsendilist piirmäära tasub tõsta.

Võrdle seda, mida näed, esimese kontrollitava seadistusega:

SümptomTõenäoline põhjusEsimene kontrollitav seadeJärgmine samm
Suur await suure nõudlusega puudujäägidTöömälu ületab ARC-izfs_arc_maxLisage RAM-i või L2ARC-i
Vahetusmälu kasutamine, kui ARC on suurARC piirab operatsioonisüsteemi või rakenduste töödzfs_arc_maxVähendage piirmäära
Jõudlus langeb pärast mälu koormuse tipphetkiAgressiivne väljatõrjumine vabastamise ajalzfs_arc_minMäära alampiir 25%–50% arc_max
Aeglane ls, find, väikeste failide operatsioonidMetadata vahemälu puuduszfs_arc_meta_limit_percentSuurendage metandmete protsenti
Tõusev memory_throttle_countSüsteemiülene mälukoormuszfs_arc_maxVähendage piirmäära; kontrollige L2ARC-indeksi paisumist

L2ARC ei ole tasuta. L2ARC-kirjete indeks asub esmases ARC-is ja kui selle koormus ületab umbes kolmandiku ARC-i kogumahust, teeb sekundaarne vahemälu rohkem kahju kui kasu. Kasutage L2ARC-i ainult siis, kui töökogum on suurem kui RAM, kuid mahub ikkagi kiirele NVMe-seadmele, ja ainult siis, kui esmase ARC-i tabamismäär on juba hea.

Õige aeg häälestamise lõpetamiseks on siis, kui latentsus on stabiilne, vahetusmälu jääb nullini samas koormusperioodis, mis algse probleemi põhjustas, ning edasised muudatused enam midagi ei paranda. Kõrge tabamismäär ei tähenda midagi, kui server kasutab vahetusmälu. Selle punkti ületamisel lõpetage seadete kohandamine ja vaadake neid uuesti üle ainult siis, kui sama probleem sama töökoormuse juures uuesti esile kerkib.

Kui vajate serverit, millel on piisavalt RAM-mälu, et ZFS-i korralikult käitada ilma, et peaksite virtuaalmasinate või andmebaasidega mälu pärast võitlema (esmalt tasub lugeda, kui palju RAM-mälu te tegelikult vajate), vaadake FDC pühendatud servereid.

Blogi

Sel nädalal esile tõstetud

Rohkem artikleid
Digitaalne silmade väsimus: kuidas kaitsta oma nägemist ekraanidest tulvil maailmas

Digitaalne silmade väsimus: kuidas kaitsta oma nägemist ekraanidest tulvil maailmas

Vaadate kogu päeva ekraani? Õppige, kuidas vähendada digitaalset silmade väsimust tõestatud meetodite ja vahenditega. See juhend on hädavajalik kaugtöötajatele, arendajatele ja kõigile tehnoloogia valdkonnas tegutsejatele.

4 min lugemine - 21. mai 2025

Miks on oluline omada võimsat ja piiramatu andmeside mahuga VPS-i

8 min lugemine - 9. mai 2025

Rohkem artikleid
background image

Kas teil on küsimusi või vajate kohandatud lahendust?

icon

Paindlikud võimalused

icon

Ülemaailmne haare

icon

Kohene kasutuselevõtt

icon

Paindlikud võimalused

icon

Ülemaailmne haare

icon

Kohene kasutuselevõtt