Povećanje gustoće kontejnera na nodu uz pomoć PFCACHE tehnologije

Povećanje gustoće kontejnera na nodu uz pomoć PFCACHE tehnologije

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.

Pfcache 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 gotovim skriptom.

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 na linku.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster