ZFS ARC-i häälestamine: piirangud, piirmäärad 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, 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 1annab 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_summarytrükib välja ühe hetkeolukorra ülevaate: ARC-i suurus ja sihtmärk, MFU/MRU jaotus, metaandmete suhtarvud ning aktiivsed häälestusparameetrid. Käivitaarc_summary -s arcainult ARC-osa jaoks.- Toored loendurid asuvad
/proc/spl/kstat/zfs/arcstatsLinuxis jakstat.zfs.miscjavfs.zfsFreeBSD-s. Koguge need andmed seireandmetest, mitte 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 kasvuruumi |
| 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 vahetus sisse ja välja, 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-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 parameeter | Mida see teeb | Millal seda muuta | Risk vale seadistuse korral |
|---|---|---|---|
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, mille lühiajalised mälukasutuse tippkoormused puhastavad pidevalt 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 kulgevad aeglaselt. 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 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_maxSee 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=17179869184FreeBSD-s kasutatakse käitamisaja muudatuste jaoks sysctl:
sysctl vfs.zfs.arc_max=17179869184Sä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öö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älu (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õudluse puudujäägid |
| Varundus- / arhiivisiht | Konservatiivne piir | Ainult metaandmed | Määratud primarycache=metadata nii, et ühekordne skaneerimine ei eemaldaks 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öö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ü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 väljatõrjumine 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ä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.

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

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