Ρύθμιση ZFS ARC: Ανώτατα όρια, περιορισμοί και τι πρέπει να μετρηθεί

11 λεπτά ανάγνωσης - 24 Ιουνίου 2026

hero section cover
Πίνακας περιεχομένων
  • Μετρήστε το ARC πριν ρυθμίσετε οτιδήποτε
  • Οι τέσσερις ρυθμίσεις ARC που έχουν σημασία
  • Προσαρμογή του ARC ανάλογα με το φορτίο εργασίας
  • Διάγνωση προβλημάτων και γνώση του πότε πρέπει να σταματήσουμε
Κοινοποίηση

Ρύθμιση του ZFS ARC ανάλογα με το φόρτο εργασίας. Ποια παραμέτρους ρύθμισης πρέπει να λάβετε υπόψη, πώς να ρυθμίσετε το zfs_arc_max σε Linux και FreeBSD, και πώς να καταλάβετε πότε έχετε ολοκληρώσει τη διαδικασία.

Το ZFS θα καταλάβει σιωπηλά περίπου το μισό της μνήμης RAM του συστήματός σας για την προσωρινή μνήμη ανάγνωσης (read cache) από προεπιλογή, και σε ακατάλληλο τύπο διακομιστή αυτό σημαίνει δραστηριότητα swap, τερματισμό διεργασιών λόγω έλλειψης μνήμης (OOM) ή μια βάση δεδομένων που ανταγωνίζεται το σύστημα αρχείων για μνήμη. Η ρύθμιση του ARC του ZFS αφορά τον καθορισμό του πόσο από αυτή τη μνήμη RAM επιτρέπεται πραγματικά να διατηρήσει το ARC και τι θα θυσιάσετε για να ορίσετε το όριο. Αυτή η ανάρτηση καλύπτει τον τρόπο με τον οποίο το ARC χρησιμοποιεί τη μνήμη, τι πρέπει να μετρήσετε πριν κάνετε οποιαδήποτε αλλαγή, τις λίγες παραμέτρους ρύθμισης που αξίζει να αλλάξετε, καθώς και λογικά σημεία εκκίνησης για διακομιστές αρχείων, υπερ-επιτηρητές, βάσεις δεδομένων και προορισμούς δημιουργίας αντιγράφων ασφαλείας. Όσον αφορά τα στιγμιότυπα του ZFS, ανατρέξτε στον οδηγό μας για τα στιγμιότυπα ZFS.

Μετρήστε το ARC πριν ρυθμίσετε οτιδήποτε

Μην αλλάξετε ούτε μία ρυθμιζόμενη παράμετρο μέχρι να έχετε τα βασικά στοιχεία από μια κανονική περίοδο αιχμής. Τα στιγμιότυπα από περιόδους χαμηλής κίνησης θα σας οδηγήσουν σε λάθος κατεύθυνση. Τα νυχτερινά αντίγραφα ασφαλείας, οι εβδομαδιαίες αναφορές και οι εργασίες μαζικής επεξεργασίας είναι συνήθως οι περιπτώσεις όπου η συμπεριφορά του ARC γίνεται ενδιαφέρουσα, οπότε συλλέξτε δεδομένα για αρκετές ημέρες.

Τρία εργαλεία καλύπτουν το μεγαλύτερο μέρος των αναγκών σας:

  • arcstat 1 Παρέχει μια ζωντανή προβολή με κύλιση των μετρητών επιτυχιών και αποτυχιών, της δραστηριότητας ζήτησης έναντι της δραστηριότητας προφόρτωσης, καθώς και του τρέχοντος μεγέθους του ARC. Χρησιμοποιήστε το κατά τη διάρκεια δοκιμών φόρτωσης και παραθύρων δημιουργίας αντιγράφων ασφαλείας.
  • arc_summary εκτυπώνει ένα μεμονωμένο στιγμιότυπο: το μέγεθος και τον στόχο του ARC, την κατανομή MFU/MRU, τις αναλογίες μεταδεδομένων και τις ενεργές ρυθμίσεις. Εκτελέστε arc_summary -s arc μόνο για την ενότητα ARC.
  • Οι ακατέργαστοι μετρητές βρίσκονται /proc/spl/kstat/zfs/arcstats στο Linux και κάτω από το kstat.zfs.misc και vfs.zfs sysctl στο FreeBSD. Συλλέξτε τα από το σύστημα παρακολούθησης αντί να αναλύετε μορφοποιημένη έξοδο.

Οι μετρητές που αξίζει να καταγράψετε πριν από οποιαδήποτε αλλαγή:

ΜέτρησηΠού να τη βρείτεΓιατί είναι σημαντική
Μέγεθος ARC, στόχος, μέγιστο (size, c, c_max)arcstat, kstatΣας δείχνει αν το ARC έχει φτάσει στο ανώτατο όριό του ή αν υπάρχει ακόμα περιθώριο για αύξηση
Ποσοστά επιτυχίας δεδομένων και μεταδεδομένωνarcstat, arc_summaryΟι αποτυχίες κάλυψης της ζήτησης μεταφράζονται άμεσα σε καθυστέρηση της εφαρμογής
Διαθέσιμη μνήμη και δραστηριότητα ανταλλαγής (si/so)free -h, vmstat 1Η συνεχής εισαγωγή/εξαγωγή από το swap ενώ το ARC είναι μεγάλο αποτελεί το πιο σαφές σημάδι πίεσης στη μνήμη
Χρόνος εξυπηρέτησης δίσκου (await) και χρησιμοποίησή τηςiostat -xΣυνδέει τις αποτυχίες ARC με πραγματικά σημεία συμφόρησης αποθήκευσης
memory_throttle_count/proc/spl/kstat/zfs/arcstatsΟ αυξανόμενος αριθμός επιβεβαιώνει ότι το ZFS περιορίζεται λόγω πίεσης στη μνήμη

Δύο πράγματα που οι χρήστες συχνά παρερμηνεύουν εδώ. Παρακολουθήστε τη διαθέσιμη μνήμη, όχι την ελεύθερη μνήμη· το Linux αναφέρει χωρίς πρόβλημα χαμηλή ελεύθερη RAM ως σταθερή κατάσταση και αυτό από μόνο του δεν αποτελεί πρόβλημα. Το σημαντικό σημάδι είναι η διαθέσιμη μνήμη κοντά στο μηδέν σε συνδυασμό με συνεχή δραστηριότητα swap (το εγχειρίδιο διαχείρισης μνήμης του Linux εξηγεί το γιατί). Και αντιμετωπίστε το ποσοστό επιτυχίας (hit ratio) ως τάση, όχι ως στόχο. Ένα ποσοστό επιτυχίας 99% σε ένα σύστημα που χρησιμοποιεί swap αποτελεί αποτυχία στη ρύθμιση, όχι επιτυχία.


 

Οι τέσσερις ρυθμίσεις ARC που έχουν σημασία

Οι περισσότερες ρυθμίσεις σε περιβάλλον παραγωγής συνοψίζονται σε τέσσερις παραμέτρους. Προσαρμόστε τη ρύθμιση στην πίεση που μετρήσατε πραγματικά στη γραμμή βάσης. Η δραστηριότητα ανταλλαγής υποδεικνύει zfs_arc_max. Η ανάκτηση των αποτυχιών που συνεχίζουν να καθαρίζουν μια ενεργή κρυφή μνήμη υποδεικνύει zfs_arc_min. Η αργή περιήγηση στους καταλόγους υποδεικνύει το όριο των μεταδεδομένων.

Παράμετρος ρύθμισηςΤι κάνειΠότε να το αλλάξετεΚίνδυνος σε περίπτωση λανθασμένης ρύθμισης
zfs_arc_maxΣκληρό ανώτατο όριο στη χρήση μνήμης RAM ARCΣυν-φιλοξενία βάσεων δεδομένων ή VM που χρειάζονται δεσμευμένη μνήμη RAMΠολύ χαμηλή τιμή: αυξημένες εισόδους-εξόδους δίσκου και καθυστέρηση. Πολύ υψηλή τιμή: πίεση στο swap ή OOM.
zfs_arc_minΚάτω όριο που εμποδίζει την υπερβολική συρρίκνωση της ARCΦορτία εργασίας με σύντομες αιχμές μνήμης που συνεχώς εκκαθαρίζουν την προσωρινή μνήμηΠολύ υψηλό: στερεί πόρους από τις εφαρμογές κατά τη διάρκεια πραγματικής πίεσης στη μνήμη
zfs_arc_meta_limit_percentΠοσοστό ARC διαθέσιμο για μεταδεδομένα (αντικαθιστά το παλαιότερο zfs_arc_meta_limit)Εκατομμύρια μικρά αρχεία, βαθιά δέντρα καταλόγων, αργή ls/findΠολύ χαμηλό: οι αναζητήσεις σε καταλόγους γίνονται με ρυθμό χελώνας. Πολύ υψηλό: στερεί την προσωρινή αποθήκευση δεδομένων.
zfs_arc_free_targetΠόση ελεύθερη μνήμη συστήματος προσπαθεί να διατηρεί διαθέσιμη το ZFSΔιακομιστές με ξαφνικές μεγάλες εκρήξεις κατανομής (εκκίνηση VM, μεγάλα σχέδια ερωτημάτων)Πολύ υψηλό: το ARC παραμένει μικρό ακόμα και όταν υπάρχει διαθέσιμη μνήμη RAM

Ξεκινήστε με τη μικρότερη αλλαγή που αντιμετωπίζει την πίεση που παρατηρείτε. Για zfs_arc_max, το σωστό ανώτατο όριο εξαρτάται από το φόρτο εργασίας (αναλύεται στην επόμενη ενότητα). Για zfs_arc_min, ένα κατώτατο όριο από 25% έως 50% του zfs_arc_max αποτελεί ένα λογικό σημείο εκκίνησης, αν χρειαστεί να ορίσετε κάποιο. Όσον αφορά τα μεταδεδομένα, οι πρόσφατες προεπιλογές του OpenZFS ήδη διαθέτουν στα μεταδεδομένα το 75% του ARC μέσω zfs_arc_meta_limit_percent, κάτι που είναι γενναιόδωρο για τους περισσότερους φόρτους εργασίας· προχωρήστε σε αλλαγή μόνο όταν οι απώλειες μεταδεδομένων είναι σαφώς ορατές στο arcstat.

Εφαρμογή αλλαγών σε Linux και FreeBSD

Στο Linux, δοκιμάστε μια αλλαγή κατά τη διάρκεια της εκτέλεσης γράφοντας στο αρχείο παραμέτρων του sysfs. Δεν απαιτείται επανεκκίνηση:

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

Αυτό ορίζει zfs_arc_max αμέσως σε 16 GiB. Για να διατηρηθεί η αλλαγή μετά την επανεκκίνηση, προσθέστε την στο /etc/modprobe.d/zfs.conf:

options zfs zfs_arc_max=17179869184

Στο FreeBSD, οι αλλαγές κατά τη διάρκεια της εκτέλεσης χρησιμοποιούν sysctl:

sysctl vfs.zfs.arc_max=17179869184

Διατηρήστε την ίδια τιμή στο /boot/loader.conf:

vfs.zfs.arc_max="17179869184"

Αλλάξτε μία ρύθμιση κάθε φορά, σε μικρά βήματα περίπου 10% της συνολικής μνήμης RAM. Παρακολουθήστε το παράθυρο προβλημάτων. Διατηρήστε την αλλαγή μόνο αν η swap παραμείνει στο μηδέν και η καθυστέρηση είναι σταθερή. Διατηρήστε την αλλαγή μόνο αφού περάσει η δοκιμή κατά την εκτέλεση.

Προσαρμογή του ARC ανάλογα με το φορτίο εργασίας

Η συνολική μνήμη RAM δεν είναι το σωστό σημείο εκκίνησης. Ο προσδιορισμός του μεγέθους του ARC πρέπει να βασίζεται στο μείγμα φόρτου εργασίας του συστήματος.

Φόρτος εργασίαςΑρχική zfs_arc_maxΠροτεραιότητα ARCΣημειώσειςΒασικός δείκτης
Αποκλειστικός διακομιστής αρχείων / NAS75% έως 80% της μνήμης RAMΔεδομένα και μεταδεδομέναΕνεργοποιημένη η προφόρτωση. Το κλειδί είναι η επιθετική χρήση της κρυφής μνήμης.Συνολικός λόγος επιτυχίας
Κεντρικός υπολογιστής εικονικοποίησης30% έως 40% της μνήμης RAMΙσορροπημένηΑφήστε περιθώριο για τη μνήμη RAM του επισκέπτη και τις εργασίες του κεντρικού υπολογιστή. Οποιοδήποτε μη μηδενικό si/so σημαίνει περαιτέρω περιορισμό.Χώρος ανταλλαγής κεντρικού υπολογιστή (si/so)
Διακομιστής βάσης δεδομένων25% έως 50% της μνήμης RAMΜε έμφαση στα μεταδεδομέναΚρατήστε πρώτα μνήμη για τον κινητήρα της βάσης δεδομένων. Ρυθμίστε primarycache=metadata αν ο κινητήρας διαχειρίζεται τη δική του προσωρινή μνήμη buffer.Αποτυχίες ζήτησης
Προορισμός αντιγράφου ασφαλείας / αρχειοθέτησηςΣυντηρητικό όριοΜόνο μεταδεδομέναΟρισμός primarycache=metadata έτσι ώστε οι σαρώσεις ενός περάσματος να μην απομακρύνουν χρήσιμα μπλοκ.Αποτυχίες προφόρτωσης, ποσοστό επιτυχίας μεταδεδομένων
Ανάλυση / επαναλαμβανόμενη ανάγνωσηΥψηλότερο ανώτατο όριο μετά την κράτηση χώρου από άλλες κρυφές μνήμεςΥψηλή χρήση MFUΤο L2ARC σε NVMe μπορεί να διατηρήσει το «hot working set» κατά τη διάρκεια των εκτελέσεων ερωτημάτων.Αποτυχίες ζήτησης

Ένας κεντρικός υπολογιστής VM πρέπει να μοιράζεται τη μνήμη με τους επισκέπτες του, οπότε ένα όριο 30% έως 40% αποτελεί μια ασφαλή προεπιλογή, ενώ το 50% είναι ήδη πολύ υψηλό στις περισσότερες εκδόσεις. Βάσεις δεδομένων όπως το PostgreSQL και το MySQL διαχειρίζονται τις δικές τους προσωρινές μνήμες buffer, οπότε πρέπει πρώτα να δεσμεύσετε μνήμη για τον κινητήρα και να αφήσετε στο ARC ό,τι απομένει. Οι προορισμοί αντιγράφων ασφαλείας επωφελούνται από primarycache=metadata επειδή τα δεδομένα που διαβάζονται σπάνια χρειάζονται ξανά, και δεν θέλετε μια νυχτερινή δημιουργία αντιγράφων ασφαλείας να διατρέχει ολόκληρο το pool και να εκκαθαρίζει το υπόλοιπο της προσωρινής μνήμης καθώς προχωρά. Σε κάθε φόρτο εργασίας, η δραστηριότητα ανταλλαγής ενώ το ARC είναι καρφωμένο στο zfs_arc_max σημαίνει ότι το ανώτατο όριο είναι πολύ υψηλό· αυτός ο κανόνας δεν αλλάζει.

Διάγνωση προβλημάτων και γνώση του πότε πρέπει να σταματήσουμε

Ένα ARC ανεπαρκούς μεγέθους εμφανίζεται ως υψηλές τιμές IOPS ανάγνωσης, χαμηλά ποσοστά επιτυχίας στις αιτήσεις και αργή περιήγηση στους καταλόγους, ενώ το σύστημα διαθέτει ακόμα ελεύθερη μνήμη RAM. Ένα ARC υπερβολικού μεγέθους είναι λιγότερο προφανές. Το ποσοστό επιτυχίας φαίνεται εντάξει, αλλά ο υπολογιστής αρχίζει να χρησιμοποιεί την ανταλλαγή μνήμης, οι μέσοι όροι φόρτου αυξάνονται, οι διεργασίες μπλοκάρονται σε D κατάσταση, ενώ ο πυρήνας ανακτά σελίδες ARC κατά ζήτηση, και στη χειρότερη περίπτωση το OOM killer αρχίζει να επιλέγει θύματα. Η κρυφή μνήμη φαίνεται υγιής, αλλά ο διακομιστής λειτουργεί άσχημα.

Η πίεση στα μεταδεδομένα γίνεται εμφανής όταν demand_metadata_bytes είναι πολύ υψηλότερη από demand_data_bytes σε arc_summary. Αυτό συμβαίνει όταν τα μεταδεδομένα ανταγωνίζονται τα δεδομένα για χώρο, και αξίζει να αυξηθεί το όριο του ποσοστού των μεταδεδομένων.

Αντιστοιχίστε αυτό που βλέπετε με την πρώτη ρύθμιση που πρέπει να ελέγξετε:

ΣύμπτωμαΠιθανή αιτίαΠρώτη ρύθμιση που πρέπει να ελέγξετεΕπόμενο βήμα
Υψηλή await με υψηλή ζήτηση και αστοχίεςΤο working set υπερβαίνει το ARCzfs_arc_maxΠροσθέστε RAM ή προσθέστε L2ARC
Δραστηριότητα ανταλλαγής ενώ το ARC είναι μεγάλοΤο ARC στερεί πόρους από το λειτουργικό σύστημα ή τις εφαρμογέςzfs_arc_maxΜειώστε το όριο
Η απόδοση πέφτει μετά από απότομες αυξήσεις στη μνήμηΕπιθετική εκδίωξη κατά την ανάκτηση χώρουzfs_arc_minΟρίστε ένα κατώτατο όριο στο 25% έως 50% του arc_max
αργών ls, find, λειτουργίες μικρών αρχείωνΕξάντληση της προσωρινής μνήμης μεταδεδομένωνzfs_arc_meta_limit_percentΑυξήστε το ποσοστό των μεταδεδομένων
Αυξανόμενη memory_throttle_countΠίεση μνήμης σε όλο το σύστημαzfs_arc_maxΜειώστε το ανώτατο όριο· ελέγξτε για διόγκωση του ευρετηρίου L2ARC

Το L2ARC δεν είναι δωρεάν. Ο δείκτης για τις καταχωρήσεις L2ARC βρίσκεται στο πρωτεύον ARC και, εάν αυτό το επιπλέον φορτίο ξεπεράσει περίπου το ένα τρίτο της συνολικής χωρητικότητας του ARC, η δευτερεύουσα κρυφή μνήμη προκαλεί περισσότερο κακό παρά καλό. Χρησιμοποιήστε το L2ARC μόνο όταν το working set είναι μεγαλύτερο από τη μνήμη RAM αλλά εξακολουθεί να χωράει σε μια γρήγορη συσκευή NVMe, και μόνο όταν ο λόγος επιτυχίας του πρωτεύοντος ARC είναι ήδη ικανοποιητικός.

Η κατάλληλη στιγμή για να σταματήσετε τη ρύθμιση είναι όταν η καθυστέρηση παραμένει σταθερή, η χρήση του swap παραμένει στο μηδέν κατά τη διάρκεια του ίδιου περιόδου υψηλού φόρτου που προκάλεσε το αρχικό πρόβλημα, και περαιτέρω αλλαγές δεν βελτιώνουν πλέον τίποτα. Ένας υψηλός δείκτης επιτυχίας δεν σημαίνει τίποτα αν ο διακομιστής χρησιμοποιεί swap. Πέρα από αυτό το σημείο, σταματήστε να προσαρμόζετε τις ρυθμίσεις και επανεξετάστε τις μόνο αν το ίδιο πρόβλημα επανεμφανιστεί υπό τον ίδιο φόρτο εργασίας.

Αν χρειάζεστε έναν διακομιστή με επαρκή ελεύθερο χώρο στη μνήμη RAM για να εκτελείτε σωστά το ZFS χωρίς να ανταγωνίζεστε τις εικονικές μηχανές ή τις βάσεις δεδομένων σας για μνήμη (αξίζει να διαβάσετε πρώτα το άρθρο «Πόση μνήμη RAM χρειάζεστε πραγματικά;»), ρίξτε μια ματιά στους αποκλειστικούς διακομιστές της FDC.

Blog

Προτεινόμενα αυτή την εβδομάδα

Περισσότερα άρθρα
Ψηφιακή κόπωση των ματιών: Πώς να προστατεύσετε την όρασή σας σε έναν κόσμο όπου η χρήση οθονών είναι έντονη

Ψηφιακή κόπωση των ματιών: Πώς να προστατεύσετε την όρασή σας σε έναν κόσμο όπου η χρήση οθονών είναι έντονη

Κοιτάζετε οθόνες όλη μέρα; Μάθετε πώς να μειώσετε την ψηφιακή κόπωση των ματιών με αποδεδειγμένες τεχνικές και εργαλεία. Αυτός ο οδηγός είναι απαραίτητος για τους τηλεργαζόμενους, τους προγραμματιστές και όσους ασχολούνται με την τεχνολογία.

4 λεπτά ανάγνωσης - 21 Μαΐου 2025

Γιατί είναι σημαντικό να διαθέτετε ένα ισχυρό VPS χωρίς περιορισμούς

8 λεπτά ανάγνωσης - 9 Μαΐου 2025

Περισσότερα άρθρα
background image

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη