PFCACHE ٹیکنالوجی کا استعمال کرتے ہوئے نوڈ پر کنٹینر کی کثافت میں اضافہ

PFCACHE ٹیکنالوجی کا استعمال کرتے ہوئے نوڈ پر کنٹینر کی کثافت میں اضافہ

ہوسٹنگ فراہم کنندہ کے اہداف میں سے ایک یہ ہے کہ صارفین کو معیاری خدمات فراہم کرنے کے لیے موجودہ آلات کا زیادہ سے زیادہ استعمال کیا جائے۔ اینڈ سرورز کے وسائل ہمیشہ محدود ہوتے ہیں، لیکن میزبان کلائنٹ کی خدمات کی تعداد، اور ہمارے معاملے میں ہم VPS کے بارے میں بات کر رہے ہیں، نمایاں طور پر مختلف ہو سکتے ہیں۔ درخت پر چڑھنے اور کٹ کے نیچے برگر کھانے کے بارے میں پڑھیں۔

VPS کو نوڈ پر اس طرح سے کمپیکٹ کرنا کہ کلائنٹس اسے بالکل محسوس نہ کریں کسی بھی ہوسٹنگ فراہم کنندہ کی اقتصادی کارکردگی کو بڑھانے میں بہت مدد کرتا ہے۔ بلاشبہ، اگر کوئی نوڈ کنٹینرز سے بھرا ہوا ہو تو اسے سیون پر نہیں پھٹنا چاہیے، اور بوجھ میں کوئی بھی اضافہ تمام کلائنٹس کو فوری طور پر محسوس ہوتا ہے۔

ایک نوڈ پر کتنے VPS کی میزبانی کی جا سکتی ہے اس کا انحصار بہت سے عوامل پر ہے، جیسے کہ واضح طور پر:

1. خود نوڈ کے ہارڈ ویئر کی خصوصیات
2. VPS سائز
3. VPS پر بوجھ کی نوعیت
4. سافٹ ویئر ٹیکنالوجیز جو کثافت کو بہتر بنانے میں مدد کرتی ہیں۔

اس صورت میں، ہم Virtuozzo کے لیے Pfcache ٹیکنالوجی کے استعمال کے اپنے تجربے کا اشتراک کریں گے۔
ہم 6ویں شاخ کا استعمال کرتے ہیں، لیکن جو کچھ کہا گیا ہے وہ 7ویں کے لیے بھی درست ہے۔

پی ایف کیچ - ایک Virtuozzo میکانزم جو کنٹینرز میں IOPS اور RAM کو ڈپلیکیٹ کرنے میں مدد کرتا ہے، کنٹینرز میں ایک جیسی فائلوں کو الگ مشترکہ علاقے میں مختص کرتا ہے۔

درحقیقت اس پر مشتمل ہے:
1. کرنل کوڈ
2. یوزر اسپیس ڈیمن
3. یوزر اسپیس یوٹیلیٹیز

نوڈ کی طرف، ہم ایک پورا سیکشن مختص کرتے ہیں جس میں فائلیں بنائی جائیں گی جو نوڈ پر موجود تمام VPS کے ذریعے براہ راست استعمال کی جائیں گی۔ اس حصے میں ایک بلاک پلوپ ڈیوائس نصب ہے۔ پھر، جب کنٹینر شروع ہوتا ہے، تو اسے اس حصے کے لیے ایک حوالہ ملتا ہے:

[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 رکھنا ضروری ہے۔ مثال کے طور پر، وہ جن تک صارف کو روٹ تک رسائی حاصل نہیں ہے اور جن پر تعینات کردہ تصویر کا ماحول ترتیب دیا گیا ہے۔

آپ config فائل کے ذریعے pfcache کو ٹیون کرسکتے ہیں۔
/etc/vz/pfcache.conf

MINSIZE، MAXSIZE - کیشنگ کے لیے فائل کا کم از کم/زیادہ سے زیادہ سائز
ٹائم آؤٹ - کیشنگ کی کوششوں کے درمیان ٹائم آؤٹ

آپ پیرامیٹرز کی مکمل فہرست دیکھ سکتے ہیں۔ ссылке по.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں