A konténer sűrűségének növelése a PFCACHE technológia segítségével a noden

A konténer sűrűségének növelése a PFCACHE technológia segítségével a noden

A hoszting szolgáltató egyik célja a rendelkezésre álló hardver maximális kihasználása a végfelhasználók számára nyújtott minőségi szolgáltatás érdekében. A végső szerverek erőforrásai mindig korlátozottak, azonban a hosztolt ügyfélszolgáltatások mennyisége, a mi esetünkben a VPS-ek, jelentősen eltérhet. Arról, hogy miként lehet a fát megmászni és hamburgert enni, a cikk alján olvashatsz.

A VPS-ek sűrűségének növelése a noden úgy, hogy a kliensek ezt ne érezzék, jelentősen hozzájárul a hoszting szolgáltató gazdasági mutatóinak javításához. Természetesen a noden nem szabad, hogy szétesjen, ha tele van a konténerekkel, és bármilyen terhelésingadozás azonnal minden ügyfél számára érzékelhető.

Hogy hány VPS helyezhető el egy noden, számos tényezőtől függ, amelyek közül a legnyilvánvalóbbak a következők:

1. A noden lévő hardver jellemzői
2. A VPS mérete
3. A VPS terhelési jellemzői
4. A szoftvertechnológiák, amelyek segítik a sűrűség optimalizálását

Ebben az esetben megosztjuk a Pfcache technológia használatával szerzett tapasztalatainkat a Virtuozzo számára.
A 6. ágat használjuk, de minden elmondott érvényes a 7. ágra is.

Pfcache – egy Virtuozzo mechanizmus, amely segít a IOPS és RAM deduplikálásában a konténerekben, azáltal, hogy az azonos fájlokat külön közös zónába helyezi.

Valójában a következőkből áll:
1. A kernel kódja
2. User-space démon
3. User-space segédprogram

A noden oldalán egy teljes partíciót dedikálunk, amelyben létrejönnek azok a fájlok, amelyeket az összes VPS közvetlenül használ. Ezen partícióra a ploop blokkeszközt csatlakoztatjuk. Ezt követően, amikor a konténer elindul, referenciát kap erre a partícióra:

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

Íme, egy körübelüli statisztika a fájlok számáról az egyik noden:

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

A pfcache működési elve a következő:
• A User-space Pfcached démon a fájl sha-1 hash-jét bejegyzi az adott fájl xattr attribútumába. A fájlokat nem mindet, hanem csak a /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 könyvtárakban dolgozzák fel.

• Valószínű, hogy a megadott könyvtárakban található fájlok "közösek" lesznek, és több konténer is használni fogja őket;

• A Pfcached időszakosan statisztikákat gyűjt a fájlok olvasásáról a magból, elemzi azokat, és ha a fájlok használata gyakori, hozzáadja őket a cache-hez;

• A megadott könyvtárak eltérőek lehetnek, és a konfigurációs fájlokban állíthatók be.

• Fájl olvasásakor ellenőrzi, hogy tartalmazza-e a megadott hash-t a kiterjesztett attribútumok között (xattr). Ha igen, akkor egy "közös" fájl nyílik meg a konténer fájlja helyett. Ez a csere a konténer kódja számára észrevétlenül zajlik, és el van rejtve a magban;

• Fájl írásakor a hash érvénytelenné válik. Így a következő megnyitáskor már közvetlenül a konténer fájl fog megnyílni, nem a cache-je.

Ha a /vz/pfcache mappában lévő közös fájlokat a lap cache-ben tartjuk, spórolunk a cache használatával, valamint az IOPS számítással. Ahelyett, hogy tíz fájlt olvasnánk a lemezről, csak egyet olvasunk, amely közvetlenül a lap cache-be megy.

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

A fájlhoz tartozó VMA lista egyedi marad (deduplikálja a memóriát), és ritkábban olvasunk lemezről (spórolunk az IOPS-szal). A mi "közösünk" SSD-n van – további sebességnyereséget biztosít.

Példa egy fájl cache-elésére a /bin/bash esetében:

[root@pcs13 ~]# ls -li /vz/root/2388/bin/bash
524650 -rwxr-xr-x 1 root root 1021112 2018. okt.  7. /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

A számítások hatékonysága készített szkripttel.

Ez a szkript végigjárja az összes konténert a csomóponton, kiszámítva minden konténer cache-elt fájljait.

[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
A Pfcache cache 831 MB memóriát használ
A konténerekben lévő pfcached fájlok összesített használata 39837 MB memória
Pfcache hatékonyság: 39006 MB

Így körülbelül 40 gigabyte-t spórolunk meg a konténerekben, ezek a cache-ből fognak betöltődni.

Ahhoz, hogy ez a mechanizmus még jobban működjön, a csomóponton a lehető "legjobb" VPS-eket kell elhelyezni. Például azokat, amelyeknél a felhasználónak nincs gyökér hozzáférése, és ahol egy kiterjesztett kép alapján van beállítva a környezet.

A pfcache működését a konfigurációs fájlon keresztül lehet finomhangolni.
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – a fájl gyorsítótárazásának minimális/máximális mérete
TIMEOUT – a gyorsítótárazási kísérletek közötti időtúllépés

A teljes paraméterlistával megismerhető a linken.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster