Cloudflare سے ڈویلپرز
Cloudflare CDN پر مواد کیش کرنے کے لیے استعمال ہونے والے اسٹوریج ڈیوائسز پر ڈیٹا کو خفیہ کرنے کے لیے dm-crypt کا استعمال کرتا ہے۔ Dm-crypt بلاک ڈیوائس کی سطح پر کام کرتا ہے اور انکرپٹس I/O درخواستیں لکھتا ہے اور پڑھنے کی درخواستوں کو ڈیکرپٹ کرتا ہے، بلاک ڈیوائس اور فائل سسٹم ڈرائیور کے درمیان ایک پرت کے طور پر کام کرتا ہے۔
پیکیج کا استعمال کرتے ہوئے dm-crypt کی کارکردگی کا جائزہ لینے کے لیے
سب سے پہلے، کرنل کرپٹو سسٹم میں غیر موثر الگورتھم کے استعمال کے بارے میں شک پیدا ہوا۔ لیکن ٹیسٹوں میں 256 انکرپشن کیز کے ساتھ تیز ترین الگورتھم، aes-xts کا استعمال کیا گیا، جس کی کارکردگی "کرپٹ سیٹ اپ بینچ مارک" چلاتے وقت RAM ڈسک کی جانچ کے دوران حاصل ہونے والے نتائج سے دوگنا زیادہ ہے۔ پرفارمنس ٹیوننگ کے لیے dm-crypt جھنڈوں کے ساتھ کیے گئے تجربات کے نتائج نہیں ملے: "-perf-same_cpu_crypt" جھنڈا استعمال کرتے وقت، کارکردگی 136 MB/s تک کم ہو گئی، اور جب "--perf-submit_from_crypt_cpus" جھنڈے کی وضاحت کی گئی تو اس میں صرف اضافہ ہوا۔ 166 MB/s تک۔
آپریٹنگ منطق کے گہرے تجزیے سے معلوم ہوا کہ dm-crypt اتنا آسان نہیں جتنا لگتا ہے - جب FS ڈرائیور سے تحریری درخواست آتی ہے، dm-crypt اس پر فوری کارروائی نہیں کرتا، بلکہ اسے "kcryptd" قطار میں رکھتا ہے، جو فوری طور پر تجزیہ نہیں کیا جاتا ہے، لیکن جب آسان لمحہ. قطار سے، درخواست لینکس کرپٹو API کو خفیہ کاری انجام دینے کے لیے بھیجی جاتی ہے۔ لیکن چونکہ کریپٹو API ایک غیر مطابقت پذیر عمل کا ماڈل استعمال کرتا ہے، اس لیے خفیہ کاری بھی فوری طور پر نہیں کی جاتی، بلکہ دوسری قطار کو نظرانداز کرتے ہوئے۔ خفیہ کاری مکمل ہونے کے بعد، dm-crypt تلاش کے درخت کا استعمال کرتے ہوئے زیر التواء تحریری درخواستوں کو ترتیب دینے کی کوشش کر سکتا ہے۔
پڑھتے وقت، dm-crypt پہلے ڈرائیو سے ڈیٹا حاصل کرنے کے لیے "kcryptd_io" قطار میں ایک درخواست شامل کرتا ہے۔ کچھ وقت کے بعد، ڈیٹا دستیاب ہو جاتا ہے اور اسے ڈکرپشن کے لیے "kcryptd" قطار میں رکھا جاتا ہے۔
Kcryptd لینکس کرپٹو API کو ایک درخواست بھیجتا ہے، جو معلومات کو غیر مطابقت پذیر طور پر ڈیکرپٹ کرتا ہے۔ درخواستیں ہمیشہ تمام قطاروں سے نہیں گزرتی ہیں، لیکن بدترین صورت حال میں، لکھنے کی درخواست 4 بار تک قطاروں میں ختم ہوتی ہے، اور پڑھنے کی درخواست 3 بار تک ہوتی ہے۔ قطار میں آنے والی ہر ہٹ تاخیر کا سبب بنتی ہے، جو dm-crypt کی کارکردگی میں نمایاں کمی کی اہم وجہ ہیں۔
قطاروں کا استعمال ایسے حالات میں کام کرنے کی ضرورت کی وجہ سے ہے جہاں رکاوٹیں آتی ہیں۔ 2005 میں، جب dm-crypt کے موجودہ قطار پر مبنی آپریٹنگ ماڈل کو لاگو کیا گیا تھا، Crypto API ابھی تک غیر مطابقت پذیر نہیں تھا۔ کرپٹو API کو ایک غیر مطابقت پذیر عمل درآمد ماڈل میں منتقل کرنے کے بعد، بنیادی طور پر دوہرا تحفظ استعمال ہونا شروع ہوا۔ کرنل اسٹیک کی کھپت کو بچانے کے لیے قطاریں بھی متعارف کروائی گئی تھیں، لیکن 2014 میں اس میں اضافے کے بعد، یہ اصلاح اپنی مطابقت کھو بیٹھی۔ رکاوٹ کو دور کرنے کے لیے ایک اضافی قطار "kcryptd_io" متعارف کرائی گئی تھی جس کے نتیجے میں بڑی تعداد میں درخواستیں آنے پر میموری مختص کرنے کا انتظار کرنا پڑتا ہے۔ 2015 میں، ایک اضافی چھانٹنے کا مرحلہ متعارف کرایا گیا تھا، کیونکہ ملٹی پروسیسر سسٹمز پر خفیہ کاری کی درخواستوں کو ترتیب سے باہر مکمل کیا جا سکتا تھا (ڈسک تک ترتیب وار رسائی کے بجائے، رسائی بے ترتیب ترتیب میں کی گئی تھی، اور CFQ شیڈیولر نے مؤثر طریقے سے کام نہیں کیا)۔ فی الحال، SSD ڈرائیوز استعمال کرتے وقت، چھانٹنا اپنا معنی کھو چکا ہے، اور CFQ شیڈولر اب دانا میں استعمال نہیں ہوتا ہے۔
اس بات کو مدنظر رکھتے ہوئے کہ جدید ڈرائیوز تیز اور سمارٹ ہو گئی ہیں، لینکس کرنل میں وسائل کی تقسیم کے نظام پر نظر ثانی کی گئی ہے اور کچھ سب سسٹمز کو دوبارہ ڈیزائن کیا گیا ہے، کلاؤڈ فلیئر انجینئرز
نتیجے کے طور پر، RAM ڈسک کی جانچ کرتے وقت، dm-crypt کی کارکردگی کو دوگنا سے زیادہ کرنا ممکن تھا - کارکردگی 294 MB/s (2 x 147 MB/s) سے بڑھ کر 640 MB/s، جو کہ بہت قریب ہے۔ ننگی خفیہ کاری کی کارکردگی (696 MB /s)۔
حقیقی سرورز پر بوجھ کی جانچ کرتے وقت، نئے نفاذ نے بغیر خفیہ کاری کے چلنے والی ترتیب کے بہت قریب کارکردگی دکھائی، اور Cloudflare کیش والے سرورز پر انکرپشن کو فعال کرنے سے رسپانس کی رفتار پر کوئی اثر نہیں ہوا۔ مستقبل میں، Cloudflare تیار شدہ پیچ کو مرکزی لینکس کرنل میں منتقل کرنے کا ارادہ رکھتا ہے، لیکن اس سے پہلے ان پر دوبارہ کام کرنے کی ضرورت ہوگی، کیونکہ وہ ایک مخصوص بوجھ کے لیے موزوں ہیں اور ایپلی کیشن کے تمام شعبوں کا احاطہ نہیں کرتے، مثال کے طور پر، کم پر خفیہ کاری - پاور ایمبیڈڈ ڈیوائسز۔
ماخذ: opennet.ru