Zvýšenie hustoty kontajnera na uzle pomocou technológie PFCACHE

Zvýšenie hustoty kontajnera na uzle pomocou technológie PFCACHE

Jedným z cieľov poskytovateľa hostingu je maximalizovať využitie existujúcich zariadení za účelom poskytovania vysokokvalitných služieb koncovým používateľom. Zdroje koncových serverov sú vždy obmedzené, ale počet hostovaných klientskych služieb, v našom prípade hovoríme o VPS, sa môže výrazne líšiť. Prečítajte si o tom, ako vyliezť na strom a zjesť hamburger pod rezom.

Zhutnenie VPS na uzle tak, aby to klienti vôbec nepocítili, výrazne pomáha zvyšovať ekonomickú výkonnosť každého poskytovateľa hostingu. Samozrejme, uzol by nemal praskať vo švíkoch, ak je preplnený kontajnermi a každý nárast zaťaženia okamžite pocítia všetci klienti.

Koľko VPS môže byť hosťovaných na jednom uzle, závisí od mnohých faktorov, ako napríklad:

1. Charakteristika hardvéru samotného uzla
2. Veľkosť VPS
3. Charakter zaťaženia VPS
4. Softvérové ​​technológie, ktoré pomáhajú optimalizovať hustotu

V tomto prípade sa podelíme o naše skúsenosti s používaním technológie Pfcache pre Virtuozzo.
Používame 6. vetvu, ale všetko povedané platí aj pre 7. vetvu.

Pfcache – mechanizmus Virtuozzo, ktorý pomáha deduplikovať IOPS a RAM v kontajneroch, prideľovaním rovnakých súborov v kontajneroch do samostatnej spoločnej oblasti.

V skutočnosti pozostáva z:
1. Kód jadra
2. Démon používateľského priestoru
3. Pomôcky pre užívateľský priestor

Na strane uzla vyčleníme celú sekciu, v ktorej sa vytvoria súbory, ktoré budú priamo využívať všetky VPS na uzle. V tejto sekcii je namontované blokové ploop zariadenie. Potom, keď sa kontajner spustí, dostane odkaz na túto sekciu:

[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
...

Tu sú približné štatistiky o počte súborov na jednom z našich uzlov:

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

Princíp pfcache je nasledovný:
• Démon užívateľského priestoru Pfcached zapíše hash sha-1 súboru do atribútu xattr tohto súboru. Nie všetky súbory sú spracované, ale iba v adresároch /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• Je najpravdepodobnejšie, že súbory v týchto adresároch budú „zdieľané“ a budú používané niekoľkými kontajnermi;

• Pfcached pravidelne zhromažďuje štatistiky o čítaní súborov z jadra, analyzuje ich a pridáva súbory do vyrovnávacej pamäte, ak sa často používajú;

• Tieto adresáre sa môžu líšiť a sú konfigurované v konfiguračných súboroch.

• Pri čítaní súboru sa kontroluje, či obsahuje zadaný hash v rozšírených atribútoch xattr. Ak obsahuje, namiesto kontajnerového súboru sa otvorí súbor „všeobecný“. Táto substitúcia sa vyskytuje bez povšimnutia kódom kontajnera a je skrytá v jadre;

• Pri zápise do súboru je hash neplatný. Pri ďalšom otvorení sa teda otvorí samotný súbor kontajnera a nie jeho vyrovnávacia pamäť.

Uchovávaním zdieľaných súborov z /vz/pfcache vo vyrovnávacej pamäti stránky dosiahneme úsporu v tejto vyrovnávacej pamäti samotnej, ako aj úsporu v IOPS, namiesto čítania desiatich súborov z disku prečítame jeden, ktorý okamžite ide do vyrovnávacej pamäte stránky.

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

Zoznam VMA pre súbor zostáva jediný (odstránime duplikáciu pamäte) a číta sa z disku menej často (ušetríme iops). Náš spoločný fond sa nachádza na SSD – dodatočný nárast rýchlosti.

Príklad ukladania súboru /bin/bash do vyrovnávacej pamäte:

[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

Vypočítame efektivitu použitia hotový scenár.

Tento skript prechádza všetkými kontajnermi v uzle a vypočítava súbory uložené vo vyrovnávacej pamäti každého kontajnera.

[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

Z pamäte teda uložíme asi 40 gigabajtov súborov v kontajneroch, ktoré sa načítajú z vyrovnávacej pamäte.

Aby tento mechanizmus fungoval ešte lepšie, je potrebné umiestniť na uzol čo najviac „identické“ VPS. Napríklad tie, ku ktorým nemá užívateľ root prístup a na ktorých je nakonfigurované prostredie z nasadeného obrazu.

pfcache môžete vyladiť cez konfiguračný súbor
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – minimálna/maximálna veľkosť súboru pre ukladanie do vyrovnávacej pamäte
TIMEOUT – časový limit medzi pokusmi o ukladanie do vyrovnávacej pamäte

Môžete si pozrieť úplný zoznam parametrov по ссылке.

Zdroj: hab.com

Pridať komentár