Povečanje gostote vsebnikov na vozlišču s tehnologijo PFCACHE

Povečanje gostote vsebnikov na vozlišču s tehnologijo PFCACHE

Eden od ciljev ponudnika gostovanja je čim večji izkoristek obstoječe opreme za zagotavljanje kakovostne storitve končnim uporabnikom. Viri končnih strežnikov so vedno omejeni, vendar pa se lahko število gostujočih odjemalskih storitev, v našem primeru govorimo o VPS, bistveno razlikuje. Preberite, kako splezati na drevo in pojesti burger pod rezom.

Zgoščevanje VPS na vozlišču na tak način, da ga odjemalci sploh ne občutijo, močno pripomore k večji ekonomski uspešnosti katerega koli ponudnika gostovanja. Seveda vozlišče ne sme pokati po šivih, če je natrpano s kontejnerji, in vsako povečanje obremenitve takoj občutijo vsi naročniki.

Koliko VPS lahko gosti na enem vozlišču, je odvisno od številnih dejavnikov, tako očitnih, kot so:

1. Značilnosti strojne opreme samega vozlišča
2. Velikost VPS
3. Narava obremenitve VPS
4. Programske tehnologije, ki pomagajo optimizirati gostoto

V tem primeru bomo delili naše izkušnje z uporabo tehnologije Pfcache za Virtuozzo.
Uporabljamo 6. vejo, a vse povedano velja tudi za 7. vejo.

Pfcache – mehanizem Virtuozzo, ki pomaga odstraniti dvojnike IOPS in RAM v vsebnikih, pri čemer enake datoteke v vsebnikih dodeli ločenemu skupnemu območju.

Pravzaprav je sestavljen iz:
1. Koda jedra
2. Demon uporabniškega prostora
3. Pripomočki uporabniškega prostora

Na strani vozlišča dodelimo cel razdelek, v katerem bodo ustvarjene datoteke, ki jih bodo neposredno uporabljali vsi VPS na vozlišču. V tem razdelku je nameščena blokovna naprava. Nato, ko se vsebnik zažene, prejme sklic za ta razdelek:

[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
...

Tukaj je približna statistika o številu datotek na enem od naših vozlišč:

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

Načelo pfcache je naslednje:
• Daemon uporabniškega prostora Pfcached zapiše zgoščeno vrednost sha-1 datoteke v atribut xattr te datoteke. Ne obdelujejo se vse datoteke, ampak samo v imenikih /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• Najverjetneje bodo datoteke v teh imenikih »v skupni rabi« in jih bo uporabljalo več vsebnikov;

• Pfcached občasno zbira statistiko o branju datotek iz jedra, jo analizira in dodaja datoteke v predpomnilnik, če se pogosto uporabljajo;

• Ti imeniki so lahko različni in so konfigurirani v konfiguracijskih datotekah.

• Pri branju datoteke se preveri, ali vsebuje podano zgoščeno vrednost v razširjenih atributih xattr. Če vsebuje, se namesto vsebniške datoteke odpre »splošna« datoteka. Ta zamenjava se zgodi neopažena za kodo vsebnika in je skrita v jedru;

• Ko pišete v datoteko, je zgoščena vrednost neveljavna. Tako se bo naslednjič, ko jo odprete, odprla sama datoteka vsebnika in ne njen predpomnilnik.

S tem, ko hranimo deljene datoteke iz /vz/pfcache v predpomnilniku strani, dosežemo prihranke v tem predpomnilniku in tudi prihranke v IOPS.Namesto da bi prebrali deset datotek z diska, preberemo eno, ki gre takoj v predpomnilnik strani.

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

Seznam VMA za datoteko ostane en sam (odstranimo dvojnike pomnilnika) in se manj pogosto bere z diska (prihranek iops). Naš skupni sklad se nahaja na SSD disku - dodatna pridobitev pri hitrosti.

Primer predpomnjenja 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

Izračunamo učinkovitost uporabe že pripravljen scenarij.

Ta skript gre skozi vse vsebnike v vozlišču in izračuna predpomnjene datoteke vsakega vsebnika.

[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 pomnilnika shranimo približno 40 gigabajtov datotek v vsebnike, naložene bodo iz predpomnilnika.

Da bi ta mehanizem deloval še bolje, je treba na vozlišču postaviti najbolj "identičen" VPS. Na primer tiste, do katerih uporabnik nima korenskega dostopa in na katerih je konfigurirano okolje iz nameščene slike.

Pfcache lahko prilagodite prek konfiguracijske datoteke
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – najmanjša/največja velikost datoteke za predpomnjenje
TIMEOUT – časovna omejitev med poskusi predpomnjenja

Ogledate si lahko celoten seznam parametrov по ссылке.

Vir: www.habr.com

Dodaj komentar