#server-performance

ZFS ARC-i häälestamine: ülempiirid, piirangud ja mida mõõta

11 min lugemine - 24. juuni 2026

hero section cover

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, ja 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 lähtepunktid 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 hetkeseisud 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 tegevuse võrdlusest 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äivitage arc_summary -s arc ainult ARC-osa jaoks.
  • Toored loendurid asuvad /proc/spl/kstat/zfs/arcstats Linuxis ja kstat.zfs.misc ja vfs.zfs sysctl puudes. Koguge need andmed pigem seireandmetest kui 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 ruumi kasvuks
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 vahetusmälu sisse- ja väljalülitamine, 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-i seadistust

Enamik tootmiskeskkonna häälestamist taandub neljale seadistusele. Kohandage seadistus vastavalt baasjoones tegelikult mõõdetud koormusele. Vahetustegevus viitab zfs_arc_max. Kordusvõrgu puhastamine, mis pidevalt tühistab kuuma vahemälu, viitab zfs_arc_min. Aeglane kataloogide läbivaatamine viitab metandmete piirangule.

Reguleeritav parameeterMida see teebMillal seda muutaRisk, kui valesti seadistatud
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, millel esinevad lühiajalised mälukasutuse tippkoormused, mis pidevalt puhastavad 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 venivad. 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 kaudu zfs_arc_meta_limit_percent, mis on enamiku töökoormuste jaoks 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 jääks kehtima 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

Sama väärtus säilitatakse failis /boot/loader.conf:

vfs.zfs.arc_max="17179869184"

Muuda ühte seadet korraga, väikeste sammudena, mis moodustavad umbes 10% kogu RAM-ist. Jälgi probleemide akent. Säilita muudatus ainult siis, kui vahetusruumi maht jääb nulliks ja latentsus on stabiilne. Säilita 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älumaht (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õudlusest tulenevad puudujäägid
Varundus- / arhiivisihtKonservatiivne piirAinult metaandmedMääratud primarycache=metadata nii, et ühe läbivaatuse käigus ei eemaldataks 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öödalaskmised

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 puhvrivälimälusid 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 läbiks 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 tasemel 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 süsteem 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 in 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 andmete eemaldamine 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ähenda piirmäära; kontrolli, kas L2ARC-indeks on paisunud

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 siiski 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 ilmub uuesti sama töökoormuse juures.

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
iperf3 juhend: võrgu kiiruse testimine Linuxis ja Windowsis
#bandwidth#server-performance

iperf3 juhend: võrgu kiiruse testimine Linuxis ja Windowsis

Paigaldage iperf3, viige läbi ribalaiuse testid ja häälestage TCP-puhvrid, et saada täpseid tulemusi Linuxis ja Windowsis. Hõlmab UDP-, kahesuunalisi ja 10GbE+ teste

10 min lugemine - 7. mai 2026

#server-performance

Linuxi serverite töökoormuse optimeerimiseks häälestatud profiilid

16 min lugemine - 9. juuni 2026

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