Η νέα έκδοση σταθεροποιεί την εφαρμογή της αποθήκευσης "
Το Extstore σάς επιτρέπει να χρησιμοποιείτε μονάδες SSD/Flash για να επεκτείνετε το μέγεθος της προσωρινής μνήμης. Όπως και με τη μνήμη RAM, ο χώρος αποθήκευσης Flash δεν είναι μόνιμος και επαναφέρεται κατά την επανεκκίνηση. Ο σκοπός της νέας λειτουργίας είναι να διασφαλίσει αποτελεσματική προσωρινή αποθήκευση μεγάλων δεδομένων. Όταν χρησιμοποιείτε το "extstore", τα κλειδιά και τα μεταδεδομένα αποθηκεύονται, όπως και πριν, μόνο στη μνήμη RAM, αλλά μεγάλα δεδομένα που σχετίζονται με κλειδιά, το μέγεθος των οποίων υπερβαίνει ένα καθορισμένο όριο, αποθηκεύονται σε εξωτερικό χώρο αποθήκευσης και μόνο ο δείκτης παραμένει στη μνήμη RAM.
Εάν το κλειδί σχετίζεται με μικρά δεδομένα, τότε το Memcached λειτουργεί ως συνήθως, διατηρεί τα δεδομένα στη μνήμη και δεν έχει πρόσβαση σε εξωτερικό χώρο αποθήκευσης. Εάν υπάρχει πολλή ελεύθερη μνήμη, τότε τα πιο απαραίτητα δεδομένα μπορούν επιπλέον να εντοπιστούν πλήρως στην κρυφή μνήμη της μνήμης RAM (για παράδειγμα, μπορείτε να καθορίσετε ότι μόνο αντικείμενα μεγαλύτερα από 1024 byte στα οποία δεν έχει γίνει πρόσβαση για 3600 δευτερόλεπτα επαναφέρονται στο Flash ).
Η υλοποίηση είναι βελτιστοποιημένη για να εξασφαλίζει μέγιστη απόδοση και ελάχιστο φορτίο CPU, σε βάρος της απόδοσης αποθήκευσης (υψηλό επίπεδο κατακερματισμού). Για να παραταθεί η διάρκεια ζωής των μονάδων Flash, τα δεδομένα αποθηκεύονται στην προσωρινή μνήμη και ξεπλένονται στην αποθήκευση διαδοχικά. Για να αποθηκεύσετε την κατάσταση της προσωρινής μνήμης μεταξύ των επανεκκινήσεων, μπορείτε να χρησιμοποιήσετε την ικανότητα που εμφανίστηκε στην έκδοση 1.5.18 για να αποθέσετε μια ένδειξη προσωρινής αποθήκευσης σε ένα αρχείο. Κατά την επόμενη εκκίνηση, μπορείτε να επαναφέρετε τη μνήμη cache από αυτό το αρχείο για να εξαλείψετε τις κορυφές του φορτίου στους επεξεργαστές περιεχομένου λόγω της άδειας της προσωρινής μνήμης (η κρυφή μνήμη γίνεται αμέσως "ζεστή").
Η δεύτερη σημαντική αλλαγή στο Memcached 1.6 ήταν η επανεπεξεργασία του κώδικα επικοινωνίας δικτύου, ο οποίος είναι προσαρμοσμένος για να επεξεργάζεται αυτόματα αιτήματα δέσμης σε μία μόνο κλήση συστήματος. Προηγουμένως, κατά την αποστολή πολλαπλών εντολών GET σε ένα μόνο πακέτο TCP, το memcached έστελνε τα αποτελέσματα με ξεχωριστές κλήσεις συστήματος. Στο Memcached 1.6, οι απαντήσεις συγκεντρώνονται και επιστρέφονται στέλνοντας μία κλήση συστήματος. Ως αποτέλεσμα, υπάρχει πλέον κατά μέσο όρο 1.5 πλήκτρα ανά κλήση συστήματος, κάτι που σε δοκιμές δείχνει μείωση του φορτίου της CPU έως και 25% και μείωση της καθυστέρησης κατά αρκετά τοις εκατό.
Ο επανασχεδιασμός του υποσυστήματος δικτύου κατέστησε επίσης δυνατή τη μετάβαση στη δυναμική κατανομή των buffer ανάλογα με τις ανάγκες, αντί της στατικής εκχώρησης buffers. Αυτή η βελτιστοποίηση μείωσε την κατανάλωση μνήμης κατά την αναμονή για νέες εντολές μέσω μιας σύνδεσης που έχει δημιουργηθεί από τον πελάτη από 4.5 KB σε 400-500 byte και κατέστησε επίσης δυνατή την απαλλαγή από πολλές κλήσεις προς malloc, realloc και δωρεάν, που οδηγούν σε περιττό κατακερματισμό της μνήμης στο συστήματα με μεγάλο αριθμό συνδέσεων. Κάθε νήμα εργαζόμενου χειρίζεται τώρα τη δική του ομάδα buffer ανάγνωσης και εγγραφής για ενεργές συνδέσεις πελατών. Για να προσαρμόσετε το μέγεθος αυτών των buffer
παρέχονται οι επιλογές "-o resp_obj_mem_limit=N" και "-o read_buf_mem_limt=N".
Ο κλάδος 1.6 ανακοίνωσε επίσης την κατάργηση του
Πηγή: opennet.ru