Povećanje gustine kontejnera na čvoru pomoću PFCACHE tehnologije

Povećanje gustine kontejnera na čvoru pomoću PFCACHE tehnologije

Jedan od ciljeva hosting provajdera je da maksimalno iskoristi postojeću opremu kako bi krajnjim korisnicima pružio kvalitetnu uslugu. Resursi krajnjih servera su uvijek ograničeni, ali broj hostovanih klijentskih servisa, a u našem slučaju je riječ o VPS-u, može se značajno razlikovati. Pročitajte kako se popeti na drvo i pojesti pljeskavicu ispod reza.

Sažimanje VPS-a na čvoru na takav način da ga klijenti uopće ne osjećaju uvelike pomaže u povećanju ekonomske performanse bilo kojeg hosting provajdera. Naravno, čvor ne bi trebao puknuti po šavovima ako je natrpan kontejnerima, a svaki porast opterećenja odmah osete svi klijenti.

Koliko VPS-a može biti smješteno na jednom čvoru ovisi o mnogim faktorima, kao što su očigledni:

1. Karakteristike hardvera samog čvora
2. VPS veličina
3. Priroda opterećenja na VPS-u
4. Softverske tehnologije koje pomažu u optimizaciji gustine

U ovom slučaju, podijelit ćemo naše iskustvo korištenja Pfcache tehnologije za Virtuozzo.
Koristimo 6. granu, ali sve rečeno važi i za 7.

Pfcache – Virtuozzo mehanizam koji pomaže u uklanjanju duplikata IOPS-a i RAM-a u kontejnerima, dodjeljujući identične datoteke u kontejnerima u zasebno zajedničko područje.

U stvari se sastoji od:
1. Kôd kernela
2. Demon korisničkog prostora
3. Uslužni programi korisničkog prostora

Na strani čvora dodjeljujemo cijeli odjeljak u kojem će se kreirati fajlovi koje će direktno koristiti svi VPS na čvoru. U ovom dijelu je montiran blok ploop uređaj. Zatim, kada se kontejner pokrene, prima referencu za ovaj 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 približne statistike o broju datoteka na jednom od naših čvorova:

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

Princip pfcache-a je sljedeći:
• Demon korisničkog prostora Pfcached upisuje sha-1 hash datoteke u xattr atribut ove datoteke. Ne obrađuju se svi fajlovi, već samo u direktorijumima /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• Najverovatnije je da će fajlovi u ovim direktorijumima biti „deljeni” i da će ih koristiti nekoliko kontejnera;

• Pfcached povremeno prikuplja statistiku o čitanju datoteka iz kernela, analizira ih i dodaje datoteke u keš ako se često koriste;

• Ovi direktoriji mogu biti različiti i konfigurirani su u konfiguracijskim datotekama.

• Prilikom čitanja datoteke, provjerava se da li sadrži navedeni hash u proširenim atributima xattr. Ako sadrži, otvara se “opći” fajl umjesto datoteke kontejnera. Ova zamjena se događa neprimijećeno kod kontejnera i skrivena je u kernelu;

• Kada pišete u datoteku, heš je nevažeći. Dakle, sljedeći put kada ga otvorite, otvorit će se sam fajl kontejnera, a ne njegova keš memorija.

Čuvanjem zajedničkih fajlova iz /vz/pfcache u kešu stranice postižemo uštedu u samoj keš memoriji, kao i uštedu u IOPS-u.Umesto čitanja deset fajlova sa diska, čitamo jedan koji odmah ide u keš stranice.

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

VMA lista za fajl ostaje jednostruka (uklanjamo duplikat memorije) i rjeđe se čita sa diska (štedi iops). Naš zajednički fond se nalazi na SSD-u - dodatni dobitak u brzini.

Primjer za keširanje /bin/bash datoteke:

[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

Izračunavamo efikasnost upotrebe gotov scenario.

Ova skripta prolazi kroz sve kontejnere na čvoru, izračunavajući keširane datoteke svakog kontejnera.

[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

Tako iz memorije čuvamo oko 40 gigabajta fajlova u kontejnerima koji će biti učitani iz keš memorije.

Da bi ovaj mehanizam radio još bolje, potrebno je na čvor postaviti „najidentičniji“ VPS. Na primjer, one na koje korisnik nema root pristup i na kojima je konfigurirano okruženje iz raspoređene slike.

Možete podesiti pfcache kroz konfiguracioni fajl
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – minimalna/maksimalna veličina datoteke za keširanje
TIMEOUT – vremensko ograničenje između pokušaja keširanja

Možete pogledati kompletnu listu parametara link.

izvor: www.habr.com

Dodajte komentar