
Një nga qëllimet e ofruesit të hosting-ut është maksimalizimi i shfrytëzimit të pajisjeve ekzistuese për të ofruar një shërbim cilësor për përdoruesit përfundimtarë. Burimet e serverëve përfundimtarë gjithmonë janë të kufizuara, megjithatë numri i shërbimeve të klientëve të vendosur, dhe në rastin tonë flasim për VPS, mund të ndryshojë ndjeshëm. Për mënyrën se si të ngjihemi në bredh dhe të hamë një hamburger, lexoni më poshtë.
Të mbushim VPS në nodë në një mënyrë që klientët të mos e ndjejnë fare, ndihmon shumë në përmirësimin e rezultateve ekonomike të çdo ofruesi të hosting-ut. Sigurisht, nodë nuk duhet të shkërmoqet nëse është mbushur me konteinerë, dhe çdo rritje në ngarkesë ndjehet menjëherë nga të gjithë klientët.
Sa VPS mund të vendosen në një nodë varet nga shumë faktorë, disa aq të dukshëm sa:
1. Karakteristikat e harduerit të nodës vetë
2. Madhësia e VPS
3. Karakteri i ngarkesës në VPS
4. Teknologjitë e softuerit që ndihmojnë në optimizimin e densitetit
Në këtë rast, ne do të ndajmë përvojën e përdorimit të teknologjisë Pfcache për Virtuozzo.
Ne përdorim degën e 6-të, por gjithçka e thënë është e vlefshme edhe për të 7-ën.
është një mekanizëm Virtuozzo që ndihmon në deduplikimin e IOPS dhe RAM në konteinerë, duke ndarë skedarët e njëjtë në konteinerët në një zonë të përbashkët.
Në thelb ai përbëhet nga:
1. Kodi i bërthamës
2. Daemon-i në hapësirën e përdoruesit
3. Utilitar në hapësirën e përdoruesit
Në anën e nodës, ne rezervojmë një seksion të tërë ku do të krijohen skedarët që do të përdoren drejtpërdrejt nga të gjitha VPS-të në nodë. Në këtë seksion montohen një pajisje blloku ploop. Pastaj, kur fillon konteineri, ai merr një referencë për këtë seksion:
[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 një statistikë 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 vijon:
⹠Daemon-i në hapësirën e përdoruesit Pfcached shkruan hash-in sha-1 të skedarit në atributin xattr të këtij skedari. Skedarët përpunohen jo të gjithë, por vetëm në direktoritë /usr, /bin, /usr/sbin, /sbin, /lib, /lib64
⹠Më së shumti, është e sigurt që skedarët në këto drejtoritë do të jenë "të përbashkët" dhe do të përdoren nga disa konteinerë;
⹠Pfcached periodikisht mbledh statistika mbi leximin e skedarëve nga bërthama, e analizon atë dhe shton skedarët në cache nëse përdorimi i tyre është i shpeshtë;
⹠Të dhënat e direktorisë mund të jenë të ndryshme dhe konfiguracione të tjera vendosen në skedarët konfiguruese.
⹠Gjatë leximin e skedarit, kontrollohet nëse ai përmban hash-in e caktuar në atributet e zgjeruara xattr. Nëse e përmban, hapet skedari 'i zakonshëm', në vend të skedarit të kontejnerit. Kjo zëvendësim ndodh pa u vënë re nga kodi i kontejnerit dhe fshihet në bërthamë;
⹠Gjatë shkruarjes në skedar, hash-i bëhet i pavlefshëm. Kështu, gjatë hapjes së mëvonshme, do të hapet tashmë skedari i kontejnerit, jo cache-i i tij.
Duke ruajtur në cache të faqeve skedarët e zakonshëm nga /vz/pfcache arrihet kursimi i këtij cache, si dhe kursimi i IOPS. Në vend që të lexojmë dhjetë skedarë nga disku, lexojmë një, i cili menjëherë shkon në cache të faqeve.
struct inode {
...
struct file *i_peer_file;
...
};
struct address_space {
...
struct list_head i_peer_list;
...
}
Lista VMA për skedarin mbetet e vetme (deduplikon kujtesën) dhe lexojmë më rrallë nga disku (kushedi për iops). 'Bashkimi' ynë është vendosur në SSD - një fitim shtesë në shpejtësi.
Shembulli për caching-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 i përdorimit të kalkuluar .
Ky skript kalon përmes të gjitha kontejnerëve në nodë, duke llogaritur skedarët e cache-uar të secilit kontejner.
[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache cache përdor 831 MB memorie
Përdorimi total i skedarëve pfcached në kontejnerë është 39837 MB memorie
Efektiviteti i Pfcache: 39006 MB
Kështu, kursimi në memorie arrin rreth 40 gigabajt skedarësh në kontejnerë, që do të ngarkohen nga cache.
Për të funksionuar më mirë, është e nevojshme që në nodë të vendosen VPS që janë sa më 'të ngjashëm' të jetë e mundur. Për shembull, ata për të cilët përdoruesi nuk ka akses root dhe ku është konfiguruar një mjedis nga një imazh të 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 caching
TIMEOUT â kohĂ«zgjatja mes pĂ«rpjekjeve pĂ«r caching
Mund të njiheni me një listë të plotë të specifikimeve .
Burimi: habr.com
