Հանգույցի վրա կոնտեյների խտության ավելացում՝ օգտագործելով PFCACHE տեխնոլոգիան

Հանգույցի վրա կոնտեյների խտության ավելացում՝ օգտագործելով PFCACHE տեխնոլոգիան

Հոսթինգ մատակարարի նպատակներից մեկն է առավելագույնի հասցնել առկա սարքավորումների օգտագործումը՝ վերջնական օգտագործողներին բարձրորակ ծառայություն մատուցելու համար: Վերջնական սերվերների ռեսուրսները միշտ սահմանափակ են, բայց հոսթինգ հաճախորդների ծառայությունների քանակը, իսկ մեր դեպքում խոսքը VPS-ի մասին է, կարող է զգալիորեն տարբերվել։ Կարդացեք, թե ինչպես կարելի է բարձրանալ ծառի վրա և բուրգեր ուտել կտրվածքի տակ:

VPS-ը հանգույցի վրա այնպես սեղմելը, որ հաճախորդները դա ընդհանրապես չզգան, մեծապես օգնում է բարձրացնել ցանկացած հոսթինգ մատակարարի տնտեսական արդյունավետությունը: Իհարկե, հանգույցը չպետք է պայթի կարերից, եթե այն լցված է տարաներով, և բեռի ցանկացած աճ անմիջապես զգացվում է բոլոր հաճախորդների կողմից:

Քանի VPS կարող է տեղադրվել մեկ հանգույցի վրա, կախված է բազմաթիվ գործոններից, ինչպիսիք են ակնհայտները, ինչպիսիք են.

1. Բուն հանգույցի ապարատային բնութագրերը
2. VPS չափը
3. VPS-ի վրա բեռի բնույթը
4. Ծրագրային տեխնոլոգիաներ, որոնք օգնում են օպտիմալացնել խտությունը

Այս դեպքում մենք կկիսվենք Virtuozzo-ի համար Pfcache տեխնոլոգիան օգտագործելու մեր փորձով:
Մենք օգտվում ենք 6-րդ ճյուղից, բայց ամեն ասվածը ճիշտ է նաև 7-ի համար։

Pfcache – Virtuozzo մեխանիզմ, որն օգնում է հեռացնել IOPS-ը և RAM-ը կոնտեյներներում՝ բեռնարկղերում նույնական ֆայլերը տեղաբաշխելով առանձին ընդհանուր տարածքի վրա:

Իրականում այն ​​բաղկացած է.
1. միջուկի կոդը
2. Օգտվողի տարածության դև
3. Օգտագործողի տարածքի կոմունալ ծառայություններ

Հանգույցի կողմում մենք հատկացնում ենք մի ամբողջ բաժին, որտեղ կստեղծվեն ֆայլեր, որոնք ուղղակիորեն կօգտագործվեն հանգույցի բոլոր VPS-ների կողմից: Այս բաժնում տեղադրված է բլոկ ploop սարք: Այնուհետև, երբ բեռնարկղը սկսվում է, այն ստանում է հղում այս բաժնի համար.

[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

pfcache-ի սկզբունքը հետևյալն է.
• Pfcached օգտագործողի տարածության դաեմոնը գրում է ֆայլի sha-1 հեշը այս ֆայլի xattr հատկանիշում: Ոչ բոլոր ֆայլերը մշակվում են, այլ միայն /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 գրացուցակներում:

• Ամենայն հավանականությամբ, այս դիրեկտորիաների ֆայլերը «կիսվեն» և կօգտագործվեն մի քանի կոնտեյներների կողմից.

• Pfcached-ը պարբերաբար հավաքում է միջուկից ֆայլեր կարդալու վիճակագրություն, վերլուծում այն ​​և ֆայլեր ավելացնում քեշում, եթե դրանք հաճախ են օգտագործվում;

• Այս գրացուցակները կարող են տարբեր լինել և կազմաձևված են կազմաձևման ֆայլերում:

• Ֆայլը կարդալիս ստուգվում է, թե արդյոք այն պարունակում է նշված հեշը xattr ընդլայնված ատրիբուտներում: Եթե ​​այն պարունակում է, ապա կոնտեյների ֆայլի փոխարեն բացվում է «ընդհանուր» ֆայլը: Այս փոխարինումը տեղի է ունենում կոնտեյների կոդով աննկատ և թաքնված է միջուկում;

• Ֆայլում գրելիս հեշը անվավեր է դառնում: Այսպիսով, հաջորդ անգամ, երբ այն բացեք, կբացվի բուն կոնտեյների ֆայլը, և ոչ թե դրա քեշը:

Էջի քեշում պահելով /vz/pfcache-ից համօգտագործվող ֆայլերը՝ մենք խնայում ենք հենց այս քեշում, ինչպես նաև խնայողություններ IOPS-ում: Տասը ֆայլ սկավառակից կարդալու փոխարեն մենք կարդում ենք մեկը, որն անմիջապես անցնում է էջի քեշ:

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

Ֆայլի VMA ցուցակը մնում է միայնակ (մենք հանում ենք հիշողությունը) և ավելի քիչ հաճախ ընթերցվում սկավառակից (պահպանելով iops): Մեր ընդհանուր ֆոնդը գտնվում է SSD-ի վրա՝ լրացուցիչ արագություն:

/bin/bash ֆայլի քեշավորման օրինակ՝

[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 գիգաբայթ ֆայլ բեռնարկղերում, դրանք կբեռնվեն քեշից:

Որպեսզի այս մեխանիզմն էլ ավելի լավ աշխատի, անհրաժեշտ է հանգույցի վրա տեղադրել առավել «նույնական» VPS-ը։ Օրինակ՝ դրանք, որոնց օգտատերը չունի արմատային մուտք և որոնց վրա կազմաձևված է տեղակայված պատկերի միջավայրը:

Դուք կարող եք կարգավորել pfcache-ը կազմաձևման ֆայլի միջոցով
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – ֆայլի նվազագույն/առավելագույն չափը քեշավորման համար
TIMEOUT – ժամանակի ընդմիջում քեշավորման փորձերի միջև

Դուք կարող եք դիտել պարամետրերի ամբողջական ցանկը по ссылке.

Source: www.habr.com

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