It fergrutsjen fan de tichtheid fan konteners op in knooppunt mei PFCACHE technology

It fergrutsjen fan de tichtheid fan konteners op in knooppunt mei PFCACHE technology

Ien fan 'e doelen fan' e hostingprovider is it maksimalisearjen fan it brûken fan besteande apparatuer om heechweardige tsjinst te leverjen oan ein brûkers. De boarnen fan eintsjinners binne altyd beheind, mar it oantal hosted kliïnttsjinsten, en yn ús gefal prate wy oer VPS, kin signifikant ferskille. Lês oer hoe't jo de beam klimme en in hamburger ite ûnder de besuniging.

It komprimearjen fan VPS op in knooppunt op sa'n manier dat kliïnten it hielendal net fiele, helpt sterk om de ekonomyske prestaasjes fan elke hostingprovider te ferheegjen. Fansels moat in knooppunt net yn 'e naden barste as it fol is mei konteners, en elke lading yn' e lading wurdt fuortendaliks field troch alle kliïnten.

Hoefolle VPS kinne wurde hosted op ien knooppunt hinget ôf fan in protte faktoaren, lykas fanselssprekkend as:

1. Skaaimerken fan de hardware fan it knooppunt sels
2. VPS grutte
3. Aard fan de lading op de VPS
4. Software technologyen dy't helpe te optimalisearjen tichtheid

Yn dit gefal sille wy ús ûnderfining diele mei it brûken fan Pfcache-technology foar Virtuozzo.
Wy brûke de 6e tûke, mar alles sein is ek wier foar de 7e.

Pfcache - in Virtuozzo-meganisme dat helpt deduplicate IOPS en RAM yn konteners, en allocating identike triemmen yn konteners yn in apart mienskiplik gebiet.

Yn feite bestiet it út:
1. Kernel koade
2. Meidogger-romte demon
3. Brûker-romte nutsbedriuwen

Oan 'e kant fan' e knooppunt tawize wy in heule seksje wêryn bestannen sille wurde makke dy't direkt sille wurde brûkt troch alle VPS op 'e knooppunt. In blok ploop apparaat wurdt monteard yn dizze seksje. Dan, as de kontener begjint, krijt it in referinsje foar dizze seksje:

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

Hjir binne sawat statistiken oer it oantal bestannen op ien fan ús knopen:

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

It prinsipe fan pfcache is as folget:
• De brûkersromte-daemon Pfcached skriuwt de sha-1-hash fan it bestân nei it xattr-attribút fan dit bestân. Net alle bestannen wurde ferwurke, mar allinich yn 'e /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 mappen

• It is meast wierskynlik dat de triemmen yn dizze mappen "dield" wurde en wurde brûkt troch ferskate konteners;

• Pfcached sammelet periodyk statistiken oer it lêzen fan triemmen út de kearn, analysearret it, en heakket triemmen oan de cache as se faak brûkt wurde;

• Dizze mappen kinne oars wêze en binne konfigureare yn konfiguraasjebestannen.

• By it lêzen fan in triem, wurdt kontrolearre oft it befettet de oantsjutte hash yn de xattr útwreide attributen. As it befettet, wurdt it "algemien" bestân iepene ynstee fan it kontenerbestân. Dizze ferfanging komt ûngemurken foar troch de kontenerkoade en is ferburgen yn 'e kearn;

• By it skriuwen nei in bestân wurdt de hash ûnjildich. Sa sil de folgjende kear dat jo it iepenje, it kontenerbestân sels iepene wurde, en net syn cache.

Troch dielde triemmen fan /vz/pfcache yn de side-cache te hâlden, berikke wy besparrings yn dizze cache sels, en ek besparrings yn IOPS Ynstee fan tsien triemmen fan skiif te lêzen, lêze wy ien, dy't daliks nei de side-cache giet.

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

De VMA list foar de triem bliuwt single (wy deduplicate ûnthâld) en wurdt lêzen fan skiif minder faak (saving iops). Us mienskiplik fûns leit op in SSD - in ekstra winst yn snelheid.

Foarbyld foar caching fan it /bin/bash-bestân:

[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

Wy berekkenje de effisjinsje fan gebrûk klearmakke skript.

Dit skript giet troch alle konteners op it knooppunt, en berekkent de cache-bestannen fan elke kontener.

[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

Sa, út it ûnthâld bewarje wy sa'n 40 gigabyte oan bestannen yn konteners; se sille wurde laden út 'e cache.

Foar dit meganisme om noch better te wurkjen, is it nedich om de meast "identike" VPS op 'e knoop te pleatsen. Bygelyks, dyjingen dêr't de brûker gjin root tagong hat en dêr't de omjouwing fan de ynset ôfbylding is konfigurearre.

Jo kinne pfcache ôfstimme fia it konfiguraasjetriem
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE - minimale / maksimale triemgrutte foar caching
TIMEOUT - time-out tusken cachingpogingen

Jo kinne de folsleine list mei parameters besjen link.

Boarne: www.habr.com

Add a comment