Konteinera blīvuma palielināšana mezglā, izmantojot PFCACHE tehnoloģiju

Konteinera blīvuma palielināšana mezglā, izmantojot PFCACHE tehnoloģiju

Viens no mitināšanas pakalpojumu sniedzēja mērķiem ir maksimāli izmantot esošās iekārtas, lai nodrošinātu augstas kvalitātes pakalpojumus gala lietotājiem. Gala serveru resursi vienmēr ir ierobežoti, taču mitināto klientu pakalpojumu skaits, un mūsu gadījumā mēs runājam par VPS, var ievērojami atšķirties. Lasiet par to, kā uzkāpt kokā un ēst burgeru zem griezuma.

VPS sablīvēšana mezglā tādā veidā, ka klienti to nemaz nejūt, ievērojami palīdz palielināt jebkura hostinga pakalpojumu sniedzēja ekonomiskos rādītājus. Protams, mezglam nevajadzētu pārsprāgt pie šuvēm, ja tas ir pilns ar konteineriem, un jebkurš slodzes pieaugums ir uzreiz jūtams visiem klientiem.

Cik daudz VPS var mitināt vienā mezglā, ir atkarīgs no daudziem faktoriem, piemēram, tādiem acīmredzamiem kā:

1. Paša mezgla aparatūras raksturojums
2. VPS izmērs
3. VPS slodzes veids
4. Programmatūras tehnoloģijas, kas palīdz optimizēt blīvumu

Šajā gadījumā mēs dalīsimies pieredzē par Pfcache tehnoloģiju izmantošanu Virtuozzo.
Mēs izmantojam 6. zaru, bet viss teiktais attiecas arī uz 7. zaru.

Pfcache – Virtuozzo mehānisms, kas palīdz dedublēt IOPS un RAM konteineros, iedalot identiskus failus konteineros atsevišķā kopējā zonā.

Faktiski tas sastāv no:
1. Kodola kods
2. Lietotāja telpas dēmons
3. Lietotāja telpas utilītas

Mezgla pusē mēs piešķiram veselu sadaļu, kurā tiks izveidoti faili, kurus tieši izmantos visi mezgla VPS. Šajā sadaļā ir uzstādīta bloķēšanas ierīce. Pēc tam, kad konteiners tiek startēts, tas saņem atsauci uz šo sadaļu:

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

Šeit ir aptuvenā statistika par failu skaitu vienā no mūsu mezgliem:

[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 princips ir šāds:
• Lietotāja telpas dēmons Pfcached ieraksta faila sha-1 hash šī faila atribūtā xattr. Ne visi faili tiek apstrādāti, bet tikai direktorijās /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• Visticamāk, ka šajos direktorijos esošie faili tiks “koplietoti” un tos izmantos vairāki konteineri;

• Pfcached periodiski apkopo statistiku par failu nolasīšanu no kodola, analizē to un pievieno failus kešatmiņai, ja tie tiek bieži izmantoti;

• Šie direktoriji var atšķirties un ir konfigurēti konfigurācijas failos.

• Lasot failu, tiek pārbaudīts, vai tajā xattr paplašinātajos atribūtos ir norādīts hash. Ja tas satur, konteinera faila vietā tiek atvērts “vispārējais” fails. Šī aizstāšana notiek nepamanīta konteinera kodā un ir paslēpta kodolā;

• Rakstot failā, hash tiek anulēts. Tādējādi nākamajā reizē, kad to atverat, tiks atvērts pats konteinera fails, nevis tā kešatmiņa.

Saglabājot koplietotos failus no /vz/pfcache lapas kešatmiņā, mēs panākam ietaupījumus pašā šajā kešatmiņā, kā arī ietaupījumu IOPS.Tā vietā, lai nolasītu desmit failus no diska, mēs nolasām vienu, kas uzreiz nonāk lapas kešatmiņā.

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

Faila VMA saraksts paliek viens (mēs atņemam atmiņu dublikātu) un retāk tiek lasīts no diska (ietaupot IOPS). Mūsu kopējais fonds atrodas uz SSD — tas ir papildu ātruma palielinājums.

Piemērs /bin/bash faila saglabāšanai kešatmiņā:

[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

Mēs aprēķinām izmantošanas efektivitāti gatavs skripts.

Šis skripts iet cauri visiem mezgla konteineriem, aprēķinot katra konteinera kešatmiņā saglabātos failus.

[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

Tādējādi no atmiņas mēs saglabājam apmēram 40 gigabaitus failu konteineros, tie tiks ielādēti no kešatmiņas.

Lai šis mehānisms darbotos vēl labāk, mezglā ir jānovieto “identiskākais” VPS. Piemēram, tie, kuriem lietotājam nav root piekļuves un kuros ir konfigurēta vide no izvietotā attēla.

Jūs varat noregulēt pfcache, izmantojot konfigurācijas failu
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – minimālais/maksimālais faila lielums kešatmiņā
TIMEOUT — taimauts starp kešatmiņas mēģinājumiem

Jūs varat apskatīt pilnu parametru sarakstu по ссылке.

Avots: www.habr.com

Pievieno komentāru