Aumentà a densità di u containeru nantu à un node utilizendu a tecnulugia PFCACHE

Aumentà a densità di u containeru nantu à un node utilizendu a tecnulugia PFCACHE

Unu di l'ugettivi di u fornitore di hosting hè di maximizà l'utilizazione di l'equipaggiu esistenti per furnisce un serviziu d'alta qualità à l'utilizatori finali. I risorsi di i servitori finali sò sempre limitati, ma u numeru di servizii di u cliente ospitu, è in u nostru casu parlemu di VPS, pò differisce significativamente. Leghjite nantu à cumu cullà l'arbulu è manghja un burger sottu u cut.

Compacting VPS in un node in modu chì i clienti ùn si sentenu micca in tuttu aiuta assai à aumentà u rendiment ecunomicu di qualsiasi fornitore di hosting. Di sicuru, un node ùn deve micca sfondate à e cuciture s'ellu hè pienu di cuntenituri, è ogni crescita di carica hè immediatamente sentita da tutti i clienti.

Quanti VPS ponu esse ospitati nantu à un nodu dipende da parechji fatturi, cusì evidenti cum'è:

1. Caratteristiche di u hardware di u node stessu
2. taglia VPS
3. Natura di a carica nantu à u VPS
4. Tecnulugie di software chì aiutanu à ottimisà a densità

In questu casu, sparteremu a nostra sperienza di utilizà a tecnulugia Pfcache per Virtuozzo.
Avemu aduprà u 6th branch, ma tuttu ciò chì dice hè ancu veru per u 7th.

Pfcache - un mecanismu Virtuozzo chì aiuta à deduplicate IOPS è RAM in cuntenituri, allughjendu file identici in cuntenituri à una zona cumuni separata.

In fatti hè custituitu da:
1. codice Kernel
2. User-space dimòniu
3. Utilità User-space

À u latu di u nodu, assignemu una sezione sana in quale i schedari seranu creati chì seranu utilizati direttamente da tutti i VPS nantu à u node. Un dispositivu di bloccu ploop hè muntatu in questa sezione. Allora, quandu u cuntinuu principia, riceve una riferenza per sta sezione:

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

Eccu statistiche apprussimate nantu à u numeru di schedari nantu à unu di i nostri nodi:

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

U principiu di pfcache hè u seguente:
• U daemon di u spaziu di l'utilizatori Pfcached scrive l'hash sha-1 di u schedariu à l'attributu xattr di stu schedariu. Ùn sò micca tutti i fugliali trattati, ma solu in i cartulari /usr, /bin, /usr/sbin, /sbin, /lib, /lib64.

• Hè più prubabile chì i schedari in questi cartulari seranu "spartiti" è seranu utilizati da parechji cuntenituri;

• Pfcached raccoglie periodicamente statistiche nantu à i schedarii di lettura da u kernel, l'analiza, è aghjunghjenu i schedari à a cache si sò usati spessu;

• Sti cartulari ponu esse sfarenti è sò cunfigurati in i schedarii di cunfigurazione.

• Quandu leghje un schedariu, hè verificatu s'ellu cuntene l'hash specificatu in l'attributi allargati xattr. S'ellu cuntene, u schedariu "generale" hè apertu invece di u schedariu di cuntainer. Questa sustituzione si trova inesperta da u codice di u containeru è hè oculata in u kernel;

• Quandu scrive à un schedariu, l'hash hè invalidatu. Cusì, a prossima volta chì avete apertu, u schedariu di u containeru stessu serà apertu, è micca u so cache.

Mantenendu i fugliali spartuti da /vz/pfcache in a cache di a pagina, ottenemu risparmi in questu cache stessu, è ancu risparmiu in IOPS.Invece di leghje dece schedari da u discu, leghjemu unu, chì và immediatamente à a cache di a pagina.

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

A lista VMA per u schedariu resta unicu (deduplicate a memoria) è hè lettu da u discu menu spessu (salvendu iops). U nostru fondu cumunu si trova nantu à un SSD - un guadagnu supplementu in velocità.

Esempiu per cache u schedariu /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

Calculemu l'efficienza di l'usu script prontu.

Stu script passa per tutti i cuntenituri nantu à u node, calculendu i schedarii in cache di ogni cuntinuu.

[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

Cusì, da a memoria salvemu circa 40 gigabytes di fugliali in cuntenituri; seranu caricati da a cache.

Per questu mecanismu per travaglià ancu megliu, hè necessariu di mette u VPS più "identicu" in u node. Per esempiu, quelli chì l'utilizatore ùn hà micca accessu radicali è nantu à quale l'ambiente da l'imaghjini implementati hè cunfiguratu.

Pudete sintonizà pfcache attraversu u schedariu di cunfigurazione
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE - dimensione minima / massima di u schedariu per a cache
TIMEOUT - timeout trà i tentativi di cache

Pudete vede a lista completa di i paràmetri Member.

Source: www.habr.com

Add a comment