Повећање густине контејнера на чвору помоћу ПФЦАЦХЕ технологије

Повећање густине контејнера на чвору помоћу ПФЦАЦХЕ технологије

Један од циљева хостинг провајдера је да максимално искористи постојећу опрему у циљу пружања висококвалитетних услуга крајњим корисницима. Ресурси крајњих сервера су увек ограничени, али број хостованих клијентских услуга, а у нашем случају говоримо о ВПС-у, може значајно да се разликује. Прочитајте о томе како се попети на дрво и јести пљескавицу испод реза.

Сажимање ВПС-а на чвору на такав начин да га клијенти уопште не осете у великој мери помаже да се повећају економске перформансе било ког хостинг провајдера. Наравно, чвор не би требало да пукне по шавовима ако је натрпан контејнерима, а сваки пораст оптерећења одмах осете сви клијенти.

Колико ВПС-а може бити хостовано на једном чвору зависи од многих фактора, као што су:

1. Карактеристике хардвера самог чвора
2. ВПС величина
3. Природа оптерећења на ВПС
4. Софтверске технологије које помажу у оптимизацији густине

У овом случају, поделићемо наше искуство коришћења Пфцацхе технологије за Виртуоззо.
Користимо 6. грану, али све речено важи и за 7.

Пфцацхе – Виртуоззо механизам који помаже у уклањању дупликата ИОПС-а и РАМ-а у контејнерима, додељујући идентичне датотеке у контејнерима у засебну заједничку област.

У ствари, састоји се од:
1. Код кернела
2. Демон корисничког простора
3. Услужни програми за кориснички простор

На страни чвора, додељујемо цео одељак у којем ће се креирати фајлови које ће директно користити сви ВПС на чвору. У овом делу је монтиран блок плооп уређај. Затим, када се контејнер покрене, добија референцу за овај одељак:

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

Ево приближне статистике о броју датотека на једном од наших чворова:

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

Принцип пфцацхе-а је следећи:
• Демон корисничког простора Пфцацхед уписује сха-1 хеш датотеке у каттр атрибут ове датотеке. Не обрађују се све датотеке, већ само у директоријумима /уср, /бин, /уср/сбин, /сбин, /либ, /либ64

• Највероватније је да ће датотеке у овим директоријумима бити „дељене” и да ће их користити неколико контејнера;

• Пфцацхед повремено прикупља статистику о читању датотека из кернела, анализира их и додаје датотеке у кеш ако се често користе;

• Ови директоријуми могу бити различити и конфигурисани су у конфигурационим датотекама.

• Приликом читања датотеке проверава се да ли садржи наведени хеш у проширеним атрибутима каттр. Ако садржи, отвара се „општа“ датотека уместо датотеке контејнера. Ова замена се дешава непримећено од стране кода контејнера и скривена је у језгру;

• Када пишете у датотеку, хеш је неважећи. Дакле, следећи пут када га отворите, отвориће се сама датотека контејнера, а не њена кеш меморија.

Чувањем дељених фајлова из /вз/пфцацхе у кешу странице постижемо уштеду у самој овој кеш меморији, као и уштеду у ИОПС-у.Уместо да читамо десет фајлова са диска, читамо једну, која одмах одлази у кеш странице.

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

ВМА листа за датотеку остаје једнострука (уклањамо дупликат меморије) и ређе се чита са диска (штеди иопс). Наш заједнички фонд се налази на ССД-у - додатни добитак у брзини.

Пример за кеширање /бин/басх датотеке:

[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

Израчунавамо ефикасност употребе готов сценарио.

Ова скрипта пролази кроз све контејнере на чвору, израчунавајући кеширане датотеке сваког контејнера.

[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

Тако из меморије чувамо око 40 гигабајта датотека у контејнерима; они ће бити учитани из кеша.

Да би овај механизам још боље функционисао, потребно је на чвор поставити „најидентичнији“ ВПС. На пример, оне којима корисник нема роот приступ и на којима је конфигурисано окружење са распоређене слике.

Можете подесити пфцацхе преко конфигурационе датотеке
/етц/вз/пфцацхе.цонф

МИНСИЗЕ, МАКССИЗЕ – минимална/максимална величина датотеке за кеширање
ТИМЕОУТ – временско ограничење између покушаја кеширања

Можете погледати комплетну листу параметара по ссылке.

Извор: ввв.хабр.цом

Додај коментар