PFCACHE teknolojisini kullanarak bir düğümdeki kapların yoğunluğunu artırma

PFCACHE teknolojisini kullanarak bir düğümdeki kapların yoğunluğunu artırma

Barındırma sağlayıcısının hedeflerinden biri, son kullanıcılara yüksek kalitede hizmet sunmak için mevcut ekipmanların kullanımını en üst düzeye çıkarmaktır. Uç sunucuların kaynakları her zaman sınırlıdır, ancak barındırılan istemci hizmetlerinin sayısı ve bizim durumumuzda VPS'den bahsediyoruz, önemli ölçüde farklılık gösterebilir. Ağaca nasıl tırmanılacağını ve kesiğin altında hamburger nasıl yenileceğini okuyun.

VPS'yi bir düğüm üzerinde müşterilerin hiç hissetmeyecekleri şekilde sıkıştırmak, herhangi bir barındırma sağlayıcısının ekonomik performansının artmasına büyük ölçüde yardımcı olur. Elbette, bir düğüm konteynerlerle doluysa dikiş yerlerinden patlamamalıdır ve yükteki herhangi bir artış tüm müşteriler tarafından anında hissedilir.

Bir düğümde kaç tane VPS barındırılabileceği birçok faktöre bağlıdır, örneğin:

1. Düğümün donanımının özellikleri
2.VPS boyutu
3. VPS'deki yükün niteliği
4. Yoğunluğu optimize etmeye yardımcı olan yazılım teknolojileri

Bu durumda Virtuozzo için Pfcache teknolojisini kullanma deneyimimizi paylaşacağız.
6. dalı kullanıyoruz ama söylenenlerin hepsi 7. dal için de geçerli.

Pfcache – kaplardaki IOPS ve RAM'in tekilleştirilmesine yardımcı olan ve kaplardaki aynı dosyaları ayrı bir ortak alana tahsis eden bir Virtuozzo mekanizması.

Aslında şunlardan oluşur:
1. Çekirdek kodu
2. Kullanıcı alanı şeytanı
3. Kullanıcı alanı yardımcı programları

Düğüm tarafında, düğümdeki tüm VPS tarafından doğrudan kullanılacak dosyaların oluşturulacağı bir bölümün tamamını ayırıyoruz. Bu bölüme blok ploop cihazı monte edilmiştir. Daha sonra konteyner başladığında bu bölüm için bir referans 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
...

Düğümlerimizden birindeki dosya sayısına ilişkin yaklaşık istatistikler:

[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'in prensibi aşağıdaki gibidir:
• Kullanıcı alanı arka plan programı Pfcached, dosyanın sha-1 karmasını bu dosyanın xattr niteliğine yazar. Tüm dosyalar işlenmez, yalnızca /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 dizinlerinde işlenir

• Büyük olasılıkla bu dizinlerdeki dosyalar “paylaşılacak” ve birçok kapsayıcı tarafından kullanılacaktır;

• Pfcached düzenli aralıklarla çekirdekten dosyaların okunmasına ilişkin istatistikler toplar, bunları analiz eder ve sık kullanılıyorsa dosyaları önbelleğe ekler;

• Bu dizinler farklı olabilir ve yapılandırma dosyalarında yapılandırılmıştır.

• Bir dosya okunurken xattr genişletilmiş özniteliklerinde belirtilen hash'i içerip içermediği kontrol edilir. Eğer içeriyorsa konteyner dosyası yerine “genel” dosya açılır. Bu değişiklik konteyner kodu tarafından fark edilmeden gerçekleşir ve çekirdekte gizlidir;

• Bir dosyaya yazarken karma geçersiz kılınır. Böylece, onu bir sonraki açışınızda, önbelleği değil, konteyner dosyasının kendisi açılacaktır.

/vz/pfcache'den paylaşılan dosyaları sayfa önbelleğinde tutarak, bu önbelleğin kendisinde ve IOPS'de tasarruf sağlıyoruz.Diskten on dosya okumak yerine, hemen sayfa önbelleğine giden bir dosyayı okuyoruz.

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

Dosyanın VMA listesi tek kalır (belleği tekilleştiririz) ve diskten daha az okunur (iop'lardan tasarruf sağlar). Ortak fonumuz bir SSD'de bulunur; bu da hızda ek bir kazanç sağlar.

/bin/bash dosyasını önbelleğe alma örneği:

[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

Kullanım verimliliğini hesaplıyoruz hazır senaryo.

Bu komut dosyası, düğümdeki tüm kapsayıcıları inceleyerek her bir kapsayıcının önbelleğe alınmış dosyalarını hesaplar.

[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

Böylece, hafızadan yaklaşık 40 gigabaytlık dosyayı kaplara kaydediyoruz, bunlar önbellekten yüklenecek.

Bu mekanizmanın daha da iyi çalışması için, düğüme en "özdeş" VPS'yi yerleştirmek gerekir. Örneğin, kullanıcının root erişimine sahip olmadığı ve konuşlandırılan görüntüdeki ortamın yapılandırıldığı yerler.

Yapılandırma dosyası aracılığıyla pfcache'i ayarlayabilirsiniz
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – önbelleğe alma için minimum/maksimum dosya boyutu
TIMEOUT – önbelleğe alma girişimleri arasında zaman aşımı

Parametrelerin tam listesini görebilirsiniz по ссылке.

Kaynak: habr.com

Yorum ekle