Konteinerite tiheduse suurendamine sõlmes PFCACHE tehnoloogia abil

Konteinerite tiheduse suurendamine sõlmes PFCACHE tehnoloogia abil

Majutusteenuse pakkuja üks eesmärke on maksimeerida olemasolevate seadmete ärakasutamist, et pakkuda lõppkasutajatele kvaliteetset teenust. Lõppserverite ressursid on alati piiratud, kuid hostitud klienditeenuste arv ja meie puhul räägime VPS-ist, võib oluliselt erineda. Lugege, kuidas puu otsa ronida ja lõike all burgerit süüa.

VPS-i tihendamine sõlmel nii, et kliendid seda üldse ei tunne, aitab oluliselt tõsta mis tahes hostiteenuse pakkuja majandustulemusi. Muidugi ei tohiks sõlm õmblustest lõhkeda, kui see on konteinereid täis topitud, ja kõik kliendid tunnetavad koormuse tõusu kohe.

Kui palju VPS-i saab ühes sõlmes majutada, sõltub paljudest teguritest, näiteks ilmsetest teguritest:

1. Sõlme enda riistvara omadused
2. VPS suurus
3. VPS-i koormuse laad
4. Tarkvaratehnoloogiad, mis aitavad tihedust optimeerida

Sel juhul jagame oma kogemusi Pfcache tehnoloogia kasutamisest Virtuozzo jaoks.
Kasutame 6. haru, aga kõik öeldud kehtib ka 7. kohta.

Pfcache – Virtuozzo mehhanism, mis aitab IOPS-i ja RAM-i dubleerida konteinerites, eraldades konteinerites olevad identsed failid eraldi ühisesse piirkonda.

Tegelikult koosneb see:
1. Kerneli kood
2. Kasutaja-ruumi deemon
3. Kasutajaruumi utiliidid

Sõlme poolel eraldame terve jaotise, milles luuakse failid, mida kasutavad otse kõik sõlme VPS-id. Sellesse sektsiooni on paigaldatud blokeerimisseade. Seejärel, kui konteiner käivitub, saab see selle jaotise viite:

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

Siin on ligikaudne statistika ühes meie sõlmes olevate failide arvu kohta:

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

pfcache'i põhimõte on järgmine:
• Kasutajaruumi deemon Pfcached kirjutab faili sha-1 räsi selle faili atribuudile xattr. Kõiki faile ei töödelda, vaid ainult kataloogides /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• On kõige tõenäolisem, et nendes kataloogides olevaid faile "jagatakse" ja neid kasutavad mitmed konteinerid;

• Pfcached kogub perioodiliselt statistikat kernelist failide lugemise kohta, analüüsib seda ja lisab faile vahemällu, kui neid sageli kasutatakse;

• Need kataloogid võivad olla erinevad ja on konfigureeritud konfiguratsioonifailides.

• Faili lugemisel kontrollitakse, kas see sisaldab xattr laiendatud atribuutides määratud räsi. Kui see sisaldab, avatakse konteinerfaili asemel „üldine” fail. See asendus toimub konteinerkoodile märkamatult ja on peidetud kernelisse;

• Faili kirjutamisel räsi tühistatakse. Seega, järgmisel korral avatakse konteinerfail ise, mitte selle vahemälu.

Hoides jagatud faile /vz/pfcache-st lehe vahemälus, saavutame kokkuhoiu selles vahemälus endas, aga ka säästu IOPS-is.Kümne faili kettalt lugemise asemel loeme ühe, mis läheb kohe lehe vahemällu.

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

Faili VMA-loend jääb üksikuks (tühistame mälu) ja seda loetakse kettalt harvemini (iops-i säästmine). Meie ühisfond asub SSD-l – see annab lisakiiruse.

Näide /bin/bash-faili vahemällu salvestamiseks:

[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

Arvutame kasutamise efektiivsuse valmis skript.

See skript läbib kõik sõlme konteinerid, arvutades iga konteineri vahemällu salvestatud failid.

[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

Seega salvestame mälust konteineritesse umbes 40 gigabaiti faile, need laaditakse vahemälust.

Selle mehhanismi veelgi paremaks toimimiseks on vaja sõlme asetada kõige “identsem” VPS. Näiteks need, millele kasutajal puudub juurjuurdepääs ja millele on konfigureeritud juurutatud pildi keskkond.

Pfcache'i saate häälestada konfiguratsioonifaili kaudu
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – minimaalne/maksimaalne failimaht vahemällu salvestamiseks
TIMEOUT – vahemällu salvestamise katsete vaheline aeg

Saate vaadata täielikku parameetrite loendit по ссылке.

Allikas: www.habr.com

Lisa kommentaar