
Jedan od ciljeva hosting providera je maksimalna iskorištenost dostupne opreme za pružanje kvalitetnih usluga krajnjim korisnicima. Resursi krajnih servera su uvijek ograničeni, no broj smještenih klijentuslužbi, a u našem slučaju govorimo o VPS-u, može se značajno razlikovati. O tome kako se uklopiti i pojesti hamburger, pročitajte ispod.
Gustoća VPS-a na nodu na način da klijenti to doista ne primijete, pomaže u povećanju ekonomskih pokazatelja bilo kojeg hosting providera. Naravno, nod ne smije biti preopterećena ako je puna kontejnera, a svako povećanje opterećenja odmah osjete svi klijenti.
Koliko VPS-a može biti smješteno na jednoj nodi ovisi o mnogim faktorima, poput:
1. Karakteristike hardvera same node
2. Veličina VPS-a
3. Priroda opterećenja na VPS-u
4. Softverske tehnologije koje pomažu optimizirati gustoću
U ovom slučaju podijelit ćemo iskustvo korištenja Pfcache tehnologije za Virtuozzo.
Korištenje šeste grane, ali sve što je rečeno vrijedi i za sedmu.
je mehanizam Virtuozzo koji pomaže deduplicirati IOPS i RAM u kontejnerima, izdvajajući iste datoteke u kontejnerima u zajedničku zonu.
U osnovi se sastoji od:
1. Koda jezgre
2. User-space demona
3. User-space alata
Na strani node, izdvajamo cijeli odjeljak, u kojem će se stvarati datoteke koje će koristiti svi VPS-ovi na nodu. U taj odjeljak montira se blok uređaj ploop. Nadalje, prilikom pokretanja kontejnera, dobiva referencu na taj odjeljak:
[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
...
Evo okvirne statistike broja datoteka na jednoj od naših nodi:
[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G /vz/pfcache
2.4G ukupno
Načelo rada pfcachea se temelji na sljedećem:
• User-space demon Pfcached zapisuje sha-1 hash datoteke u xattr atribut te datoteke. Datoteke se obrađuju ne sve, već samo u direktorijima /usr, /bin, /usr/sbin, /sbin, /lib, /lib64
• Najvjerojatnije su datoteke u tim direktorijima 'zajedničke' i koriste ih više kontejnera;
• Pfcached povremeno prikuplja statistiku čitanja datoteka iz jezgre, analizira je i dodaje datoteke u keš ako im je upotreba česta;
• Ovi direktoriji mogu biti različiti i konfigurišu se u konfiguracijskim datotekama.
• Prilikom čitanja datoteke provjerava se sadrži li određeni heš u proširenim atributima xattr. Ako sadrži, otvara se 'zajednička' datoteka umjesto datoteke kontejnera. Ova zamjena se događa neprimjetno za kod kontejnera i skrivenu je u jezgru;
• Prilikom pisanja u datoteku, heš se invalidira. Tako će se prilikom naknadnog otvaranja otvoriti već izravno datoteka kontejnera, a ne njen keš.
Držanjem u stranici keša zajedničkih datoteka iz /vz/pfcache postiže se ušteda ovog keša, kao i ušteda IOPS, Umjesto čitanja deset datoteka s diska, čitamo jednu koja odmah odlazi u stranice keša.
struct inode {
...
struct file *i_peer_file;
...
};
struct address_space {
...
struct list_head i_peer_list;
...
}
Lista VMA za datoteku ostaje jedinstvena (deduplirati memoriju) i s diska se čita rjeđe (štedimo iops). Naš 'zajednički' je smješten na SSD – dodatna korist u brzini.
Primjer za keširanje datoteke /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
Efikasnost korištenja se izračunava .
Ova skripta prolazi kroz sve kontejnere na nodu, izračunava keširane datoteke svakog kontejnera.
[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache keš koristi 831 MB memorije
Ukupna upotreba pfcached datoteka u kontejnerima je 39837 MB memorije
Efikasnost Pfcachea: 39006 MB
Tako uštede oko 40 gigabajta datoteka u kontejnerima, koje će se učitati iz keša.
Da bi ovaj mehanizam radio još bolje, potrebno je postaviti na nodu što 'sličnije' VPS-ove. Na primjer, one na kojima korisnik nema root-pristup i na kojima je postavljeno okruženje iz raspoređenog imidža.
Rad pfcache-a može se podesiti putem konfiguracijske datoteke
/etc/vz/pfcache.conf
MINSIZE, MAXSIZE – minimalna/maksimalna veličina datoteke za keširanje
TIMEOUT – vremensko ograničenje između pokušaja keširanja
S cjelovitim popisom parametara možete se upoznati .
Izvor: habr.com
