
Një nga qëllimet e ofruesit të shërbimeve të hostimit është shfrytëzimi maksimal i pajisjeve ekzistuese për të ofruar një shërbim cilësor për përdoruesit përfundimtarë. Burimet e serverëve përfundimtarë janë gjithmonë të kufizuara, megjithatë numri i shërbimeve klientëve, në këtë rast VPS, mund të ndryshojë ndjeshëm. Për të mësuar se si të ngjiteni në degë dhe të hani një hamburger, lexoni më poshtë.
Kompaktimi i VPS-ve në nodë në një mënyrë që klientët nuk e ndiejnë shumë ndihmon shumë në përmirësimin e treguesve ekonomikë të çdo ofruesi të shërbimeve të hostimit. Sigurisht, nodën nuk duhet ta ndiejmë të mbingarkuar, nëse është mbushur me konteinerë deri në skaj, dhe çdo shpërthim në ngarkesë menjëherë e ndjejnë të gjithë klientët.
Sa VPS-ve mund të vendosen në një nodë varet nga shumë faktorë, disa të evidentuar si:
1. Karakteristikat e pajisjeve të nodës së vetë
2. Madhësia e VPS
3. Natyrën e ngarkesës në VPS
4. Teknologjitë e softuerit që ndihmojnë në optimizimin e dendurisë
Në këtë rast, ne do të ndajmë përvojën tonë të përdorimit të teknologjisë Pfcache për Virtuozzo.
Ne përdorim degën e 6-të, por gjithçka e thënë është e saktë edhe për të 7-tën.
është një mekanizëm Virtuozzo, i cili ndihmon në deduplifikimin e IOPS dhe RAM në konteinerë, duke ndarë skedarë identikë në konteinerë në një zonë të veçantë të përbashkët.
Në thelb, ai përbëhet nga:
1. Kodi i bërthamës
2. Demonë në hapësirën e përdoruesit
3. Vegla në hapësirën e përdoruesit
Në anën e nodës, ne ndante një pjesë të plotë, ku do të krijohen skedarë, të cilët do të përdoren drejtpërdrejt nga të gjithë VPS-të në nodë. Në këtë pjesë montohen pajisjet bllok ploop. Më pas, gjatë nisjes së konteinerit, ai merr një referencë për këtë pjesë:
[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
...
Ja statistika e përafërt e numrit të skedarëve në një nga nodat tona:
[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G /vz/pfcache
2.4G total
Principi i funksionimit të pfcache është si më poshtë:
⹠Demon në hapësirën e përdoruesit Pfcached regjistron hash-in sha-1 të skedarit në atributin xattr të këtij skedari. Skedarët trajtohen jo të gjithë, por vetëm në direktoritë /usr, /bin, /usr/sbin, /sbin, /lib, /lib64
⹠Më e mundshme është që skedarët në këto drejtoritë të jenë "të zakonshëm" dhe do të përdoren nga disa konteinerë;
⹠Pfcached përkohësisht mbledh statistikën e leximit të skedarëve nga bërthama, e analizon atë, dhe i shton skedarët në cache nëse përdorimi i tyre është i shpeshtë;
⹠Këto drejtorë mund të jenë të tjera dhe konfigurohen në skedarin e konfigurimit.
âą Kur lexohet njĂ« skedar, kontrollohet nĂ«se pĂ«rmban hash-in e caktuar nĂ« atributet e zgjatura xattr. NĂ«se e pĂ«rmban â hapet skedari "i zakonshĂ«m", nĂ« vend tĂ« skedarit tĂ« konteinerit. Ky zĂ«vendĂ«sim ndodh pa u vĂ«nĂ« re nga kodi i konteinerit, dhe fshihet nĂ« bĂ«rthamĂ«;
⹠Kur shkruhet në skedar, hash-in invalidizohet. Kështu, në hapjen e mëpasshme do të hapej skedari i konteinerit, dhe jo cache-i i tij.
Duke mbajtur në cache skedarët e zakonshëm nga /vz/pfcache arrijmë kursim të këtij cache-i, si dhe kursim të IOPS, Në vend të leximit të dhjetë skedarëve nga disku, lexojmë një, që shkon menjëherë në cache-in e faqes.
struct inode {
...
struct file *i_peer_file;
...
};
struct address_space {
...
struct list_head i_peer_list;
...
}
Lista VMA pĂ«r skedarin mbetet e vetme (deduplifikon memorjen) dhe lexohet mĂ« rrallĂ« nga disku (kĂ«rkon mĂ« pak iops). âBashkĂ«punimiâ ynĂ« Ă«shtĂ« vendosur nĂ« SSD â njĂ« fitim shtesĂ« nĂ« shpejtĂ«si.
Shembulli për cache-in e skedarit /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
Efektiviteti në përdorim të memorjes llogaritet .
Ky skenar kalon përmes të gjithë konteinerëve në nodë, duke llogaritur skedarët e cache-uar për secilin konteiner.
[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache cache përdor 831 MB memorie
Përdorimi total i skedarëve pfcached në konteinerë është 39837 MB memorie
Efektiviteti i Pfcache: 39006 MB
Kështu, kemi kursim të rreth 40 gigabajt skedarësh në konteinerë, ata do të ngarkohen nga cache.
Për të siguruar që ky mekanizëm të punojë më mirë, është e nevojshme të vendosen në nodë VPS të sa më "të ngjashëm". Për shembull, ata për të cilët përdoruesi nuk ka qasje root dhe janë të vendosur të punojnë nga një imazh i zhvilluar.
Rregullimi i funksionimit të pfcache mund të bëhet përmes skedarit të konfiguratës
/etc/vz/pfcache.conf
MINSIZE, MAXSIZE â madhĂ«sia minimale/maksimale e skedarit pĂ«r cache
TIMEOUT â kohĂ« e stabilizimit midis pĂ«rpjekjeve pĂ«r cache
Mund të informoheni për listën e plotë të parametrave .
Burimi: habr.com
