ZFS ARC-i häälestamine: ülempiirid, piirangud ja mida mõõta
11 min lugemine - 24. juuni 2026

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 1annab 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_summarytrükib välja ühe hetkeolukorra ülevaate: ARC-i suurus ja sihtmärk, MFU/MRU jaotus, metaandmete suhtarvud ning aktiivsed häälestusparameetrid. Käivitagearc_summary -s arcainult ARC-osa jaoks.- Toored loendurid asuvad
/proc/spl/kstat/zfs/arcstatsLinuxis jakstat.zfs.miscjavfs.zfssysctl puudes. Koguge need andmed pigem seireandmetest kui vormindatud väljundi analüüsimise teel.
Enne mis tahes muudatust on vaja salvestada järgmised loendurid:
| Mõõdik | Kust seda leida | Miks see on oluline |
|---|---|---|
ARC suurus, sihtmärk, maksimaalne väärtus (size, c, c_max) | arcstat, kstat | Näitab, kas ARC on jõudnud oma ülempiirini või on veel ruumi kasvuks |
| Nõudluse andmed ja metaandmete tabamismäärad | arcstat, arc_summary | Nõudluse täitmata jätmine mõjutab otseselt rakenduse latentsust |
Vaba mälu ja vahetusmälu aktiivsus (si/so) | free -h, vmstat 1 | Pidev vahetusmälu sisse- ja väljalülitamine, kui ARC on suur, on kõige selgem märk mälukoormusest |
Ketta teenindusaeg (await) ja kasutamine | iostat -x | Seostab ARC-i ebaõnnestumised tegelike salvestusruumi pudelikaeltega |
memory_throttle_count | /proc/spl/kstat/zfs/arcstats | Arvu 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 parameeter | Mida see teeb | Millal seda muuta | Risk, kui valesti seadistatud |
|---|---|---|---|
zfs_arc_max | ARC-RAM-i kasutamise range ülempiir | Reserveeritud RAM-i vajavate andmebaaside või virtuaalmasinate ühishostimine | Liiga madal: rohkem kettaseadme sisend-väljundoperatsioone ja viivitust. Liiga kõrge: vahetusmälusurve või OOM. |
zfs_arc_min | Alampiir, mis takistab ARC-i agressiivset kahanemist | Töökoormused, millel esinevad lühiajalised mälukasutuse tippkoormused, mis pidevalt puhastavad vahemälu | Liiga kõrge: põhjustab rakenduste ressursipuudust tõelise mälukoormuse korral |
zfs_arc_meta_limit_percent | Metandmetele kättesaadav ARC-osa (asendab vanema zfs_arc_meta_limit) | Miljonid väikesed failid, sügavad kataloogipuud, aeglane ls/find | Liiga madal: kataloogide otsingud venivad. Liiga kõrge: pärsib andmete vahemällu salvestamist. |
zfs_arc_free_target | Kui palju vaba süsteemimälu ZFS püüab vabana hoida | Serverid, 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_maxSee 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=17179869184FreeBSD-s kasutatakse käitamisaja muudatuste jaoks sysctl:
sysctl vfs.zfs.arc_max=17179869184Sama 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öökoormus | Alustamine zfs_arc_max | ARC-i prioriteet | Märkused | Peamine näitaja |
|---|---|---|---|---|
| Pühendatud failiserver / NAS | 75% kuni 80% RAM-ist | Andmed ja metaandmed | Eelvärvimine sisse lülitatud. Oluline on agressiivne vahemälu. | Üldine tabamismäär |
| Virtualiseerimise host | 30% kuni 40% RAM-ist | Tasakaalustatud | Jä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 server | 25% kuni 50% RAM-ist | Metandmetele orienteeritud | Reserveerige mälu esmalt andmebaasi mootorile. Määrake primarycache=metadata kui mootor haldab ise oma puhvripuhvrit. | Nõudlusest tulenevad puudujäägid |
| Varundus- / arhiivisiht | Konservatiivne piir | Ainult metaandmed | Määratud primarycache=metadata nii, et ühe läbivaatuse käigus ei eemaldataks kasulikke plokke. | Eelvärvutamise ebaõnnestumised, metaandmete tabamismäär |
| Analüütika / korduv lugemine | Kõrgem ülempiir pärast teiste vahemälude reserveerimist | MFU-mahukas | NVMe-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ümptom | Tõenäoline põhjus | Esimene kontrollitav seade | Järgmine samm |
|---|---|---|---|
Suur await suure nõudlusega puudujäägid | Töömälu ületab ARC-i | zfs_arc_max | Lisage RAM-i või L2ARC-i |
| Vahetusmälu kasutamine, kui ARC on suur | ARC piirab operatsioonisüsteemi või rakenduste tööd | zfs_arc_max | Vähendage piirmäära |
| Jõudlus langeb pärast mälu koormuse tipphetki | Agressiivne andmete eemaldamine vabastamise ajal | zfs_arc_min | Määra alampiir 25%–50% arc_max |
Aeglane ls, find, väikeste failide operatsioonid | Metadata vahemälu puudus | zfs_arc_meta_limit_percent | Suurendage metandmete protsenti |
Tõusev memory_throttle_count | Süsteemiülene mälukoormus | zfs_arc_max | Vä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.

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
Linuxi serverite töökoormuse optimeerimiseks häälestatud profiilid
16 min lugemine - 9. juuni 2026

Kas teil on küsimusi või vajate kohandatud lahendust?
Paindlikud võimalused
Ülemaailmne haare
Kohene kasutuselevõtt
Paindlikud võimalused
Ülemaailmne haare
Kohene kasutuselevõtt