Αύξηση της πυκνότητας του δοχείου σε έναν κόμβο χρησιμοποιώντας την τεχνολογία PFCACHE

Αύξηση της πυκνότητας του δοχείου σε έναν κόμβο χρησιμοποιώντας την τεχνολογία PFCACHE

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

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

Το πόσα VPS μπορούν να φιλοξενηθούν σε έναν κόμβο εξαρτάται από πολλούς παράγοντες, όπως προφανείς όπως:

1. Χαρακτηριστικά του υλικού του ίδιου του κόμβου
2. Μέγεθος VPS
3. Φύση του φορτίου στο VPS
4. Τεχνολογίες λογισμικού που βοηθούν στη βελτιστοποίηση της πυκνότητας

Σε αυτήν την περίπτωση, θα μοιραστούμε την εμπειρία μας από τη χρήση της τεχνολογίας Pfcache για το Virtuozzo.
Χρησιμοποιούμε τον 6ο κλάδο, αλλά όλα όσα λέγονται ισχύουν και για τον 7ο.

Pfcache – ένας μηχανισμός Virtuozzo που βοηθά στην κατάργηση διπλότυπων IOPS και RAM σε κοντέινερ, εκχωρώντας πανομοιότυπα αρχεία σε κοντέινερ σε ξεχωριστό κοινό χώρο.

Στην πραγματικότητα αποτελείται από:
1. Κώδικας πυρήνα
2. Δαίμονας χώρου χρήστη
3. Βοηθητικά προγράμματα χώρου χρήστη

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

[root@pcs13 ~]# cat /proc/mounts
...
/dev/ploop62124p1 /vz/pfcache ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12 0 0
...
/dev/ploop22927p1 /vz/root/418 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
/dev/ploop29642p1 /vz/root/264 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
...

Ακολουθούν κατά προσέγγιση στατιστικά στοιχεία για τον αριθμό των αρχείων σε έναν από τους κόμβους μας:

[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G    /vz/pfcache
2.4G    total

Η αρχή του pfcache είναι η εξής:
• Ο δαίμονας χώρου χρήστη Pfcached εγγράφει τον κατακερματισμό sha-1 του αρχείου στο χαρακτηριστικό xattr αυτού του αρχείου. Δεν υποβάλλονται σε επεξεργασία όλα τα αρχεία, αλλά μόνο στους καταλόγους /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• Το πιο πιθανό είναι ότι τα αρχεία σε αυτούς τους καταλόγους θα είναι "κοινόχρηστα" και θα χρησιμοποιηθούν από πολλά κοντέινερ.

• Το Pfcached συλλέγει περιοδικά στατιστικά στοιχεία για την ανάγνωση αρχείων από τον πυρήνα, τα αναλύει και προσθέτει αρχεία στη μνήμη cache, εάν χρησιμοποιούνται συχνά.

• Αυτοί οι κατάλογοι ενδέχεται να είναι διαφορετικοί και να έχουν ρυθμιστεί σε αρχεία διαμόρφωσης.

• Κατά την ανάγνωση ενός αρχείου, ελέγχεται εάν περιέχει τον καθορισμένο κατακερματισμό στα εκτεταμένα χαρακτηριστικά xattr. Εάν περιέχει, ανοίγει το "γενικό" αρχείο αντί για το αρχείο κοντέινερ. Αυτή η αντικατάσταση γίνεται απαρατήρητη από τον κώδικα του κοντέινερ και είναι κρυμμένη στον πυρήνα.

• Κατά την εγγραφή σε ένα αρχείο, ο κατακερματισμός ακυρώνεται. Έτσι, την επόμενη φορά που θα το ανοίξετε, θα ανοίξει το ίδιο το αρχείο κοντέινερ και όχι η προσωρινή μνήμη του.

Διατηρώντας κοινόχρηστα αρχεία από το /vz/pfcache στην κρυφή μνήμη της σελίδας, επιτυγχάνουμε εξοικονόμηση σε αυτήν την ίδια την προσωρινή μνήμη, καθώς και εξοικονόμηση στο IOPS. Αντί να διαβάζουμε δέκα αρχεία από το δίσκο, διαβάζουμε ένα, το οποίο πηγαίνει αμέσως στην κρυφή μνήμη σελίδας.

struct inode {
...
 struct file             *i_peer_file;
...
};
struct address_space {
...
 struct list_head        i_peer_list;
...
}

Η λίστα VMA για το αρχείο παραμένει ενιαία (διαγράφουμε τη μνήμη) και διαβάζεται από το δίσκο λιγότερο συχνά (εξοικονόμηση iops). Το κοινό μας ταμείο βρίσκεται σε έναν SSD - ένα επιπλέον κέρδος στην ταχύτητα.

Παράδειγμα για την προσωρινή αποθήκευση του αρχείου /bin/bash:

[root@pcs13 ~]# ls -li /vz/root/2388/bin/bash
524650 -rwxr-xr-x 1 root root 1021112 Oct  7  2018 /vz/root/2388/bin/bash
[root@pcs13 ~]# pfcache dump /vz/root/2388 | grep 524650
8e3aa19fdc42e87659746f6dc8ea3af74ab30362 i:524650      g:1357611108  f:CP
[root@pcs13 ~]# sha1sum /vz/root/2388/bin/bash
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  /vz/root/2388/bin/bash
[root@pcs13 /]# getfattr -ntrusted.pfcache /vz/root/2388/bin/bash
# file: vz/root/2388/bin/bash
trusted.pfcache="8e3aa19fdc42e87659746f6dc8ea3af74ab30362"
[root@pcs13 ~]# sha1sum /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362

Υπολογίζουμε την αποδοτικότητα χρήσης έτοιμο σενάριο.

Αυτό το σενάριο περνά από όλα τα κοντέινερ στον κόμβο, υπολογίζοντας τα αποθηκευμένα αρχεία σε κάθε κοντέινερ.

[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache cache uses 831 MB of memory
Total use of pfcached files in containers is 39837 MB of memory
Pfcache effectiveness: 39006 MB

Έτσι, από τη μνήμη αποθηκεύουμε περίπου 40 gigabyte αρχείων σε κοντέινερ· θα φορτωθούν από τη μνήμη cache.

Για να λειτουργήσει ακόμα καλύτερα αυτός ο μηχανισμός, είναι απαραίτητο να τοποθετήσετε το πιο «πανομοιότυπο» VPS στον κόμβο. Για παράδειγμα, εκείνα στα οποία ο χρήστης δεν έχει πρόσβαση root και στα οποία έχει διαμορφωθεί το περιβάλλον από την αναπτυγμένη εικόνα.

Μπορείτε να συντονίσετε το pfcache μέσω του αρχείου διαμόρφωσης
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – ελάχιστο/μέγιστο μέγεθος αρχείου για προσωρινή αποθήκευση
TIMEOUT – χρονικό όριο μεταξύ των προσπαθειών αποθήκευσης στην κρυφή μνήμη

Μπορείτε να δείτε την πλήρη λίστα των παραμέτρων по ссылке.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο