PFCACHE texnologiyasından istifadə edərək qovşaqda konteyner sıxlığının artırılması

PFCACHE texnologiyasından istifadə edərək qovşaqda konteyner sıxlığının artırılması

Hostinq provayderinin məqsədlərindən biri də son istifadəçilərə keyfiyyətli xidmət göstərmək üçün mövcud avadanlıqdan maksimum istifadə etməkdir. Son serverlərin resursları həmişə məhduddur, lakin yerləşdirilən müştəri xidmətlərinin sayı və bizim vəziyyətimizdə VPS-dən danışırıq, əhəmiyyətli dərəcədə fərqlənə bilər. Ağaca necə dırmaşmaq və kəsik altında burger yemək haqqında oxuyun.

Bir qovşaqda VPS-nin müştərilərin ümumiyyətlə hiss etmədiyi şəkildə sıxılması hər hansı bir hosting provayderinin iqtisadi göstəricilərini artırmağa kömək edir. Əlbəttə ki, bir node qablarla doludursa, tikişlərdə partlamamalıdır və yükün hər hansı bir artımı dərhal bütün müştərilər tərəfindən hiss olunur.

Bir qovşaqda nə qədər VPS yerləşdirilə biləcəyi bir çox faktordan asılıdır, məsələn:

1. Düyünün özünün aparatının xüsusiyyətləri
2. VPS ölçüsü
3. VPS-də yükün xarakteri
4. Sıxlığı optimallaşdırmağa kömək edən proqram təminatı texnologiyaları

Bu halda biz Virtuozzo üçün Pfcache texnologiyasından istifadə təcrübəmizi bölüşəcəyik.
Biz 6-cı filialdan istifadə edirik, lakin deyilənlərin hamısı 7-ci filial üçün də doğrudur.

Pfcache – Konteynerlərdə IOPS və RAM-ı təkmilləşdirməyə kömək edən Virtuozzo mexanizmi, konteynerlərdəki eyni faylları ayrıca ümumi sahəyə yerləşdirir.

Əslində o, ibarətdir:
1. Kernel kodu
2. İstifadəçi məkanı iblisi
3. İstifadəçi məkanı utilitləri

Düyün tərəfində, qovşaqdakı bütün VPS tərəfindən birbaşa istifadə ediləcək faylların yaradılacağı bütöv bir bölmə ayırırıq. Bu bölmədə blok ploop cihazı quraşdırılmışdır. Sonra konteyner işə salındıqda bu bölmə üçün istinad alır:

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

Budur, qovşaqlarımızdan birində faylların sayı ilə bağlı təxmini statistika:

[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-nin prinsipi aşağıdakı kimidir:
• İstifadəçi məkanı demonu Pfcached faylın sha-1 hashını bu faylın xattr atributuna yazır. Bütün fayllar işlənmir, ancaq /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 qovluqlarında

• Çox güman ki, bu kataloqlardakı fayllar “paylaşılacaq” və bir neçə konteyner tərəfindən istifadə olunacaq;

• Pfcached vaxtaşırı nüvədən faylların oxunmasına dair statistik məlumatları toplayır, onları təhlil edir və tez-tez istifadə olunduqda faylları keş yaddaşa əlavə edir;

• Bu kataloqlar fərqli ola bilər və konfiqurasiya fayllarında konfiqurasiya edilir.

• Faylı oxuyarkən, onun xattr genişləndirilmiş atributlarında göstərilən hash-i ehtiva edib-etməməsi yoxlanılır. Əgər ehtiva edirsə, konteyner faylı əvəzinə "ümumi" fayl açılır. Bu əvəzetmə konteyner kodu tərəfindən nəzərə alınmadan baş verir və nüvədə gizlənir;

• Fayla yazarkən, hash etibarsız sayılır. Beləliklə, növbəti dəfə onu açdığınız zaman konteyner faylı onun keşi deyil, özü açılacaqdır.

/vz/pfcache-dən paylaşılan faylları səhifə keşində saxlamaqla biz bu keşin özündə qənaətə, həmçinin IOPS-də qənaətə nail oluruq.Diskdən on faylı oxumaq əvəzinə birini oxuyuruq ki, bu da dərhal səhifənin önbelleğine gedir.

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

Fayl üçün VMA siyahısı tək qalır (biz yaddaşı təkmilləşdiririk) və diskdən daha az oxunur (iops qənaət edir). Bizim ümumi fondumuz SSD-də yerləşir - sürətdə əlavə bir qazanc.

/bin/bash faylının keşləşdirilməsi üçün nümunə:

[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

İstifadə səmərəliliyini hesablayırıq hazır skript.

Bu skript hər bir konteynerin keşlənmiş fayllarını hesablayaraq qovşaqdakı bütün konteynerlərdən keçir.

[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

Beləliklə, yaddaşdan konteynerlərdə təxminən 40 gigabayt fayl saxlayırıq, onlar keşdən yüklənəcəklər.

Bu mexanizmin daha yaxşı işləməsi üçün qovşaqda ən "eyni" VPS yerləşdirmək lazımdır. Məsələn, istifadəçinin kök girişi olmayan və yerləşdirilən təsvirdən mühitin konfiqurasiya edildiyi.

Siz konfiqurasiya faylı vasitəsilə pfcache-ni sazlaya bilərsiniz
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – keşləmə üçün minimum/maksimum fayl ölçüsü
TIMEOUT – keşləmə cəhdləri arasında fasilə

Parametrlərin tam siyahısına baxa bilərsiniz по ссылке.

Mənbə: www.habr.com

Добавить комментарий