مائیکروسافٹ نے mimalloc میموری ایلوکیشن سسٹم کے لیے کوڈ کھول دیا ہے۔

مائیکروسافٹ نے MIT لائسنس کے تحت ایک لائبریری کھولی ہے۔ mmalloc زبانوں کے رن ٹائم اجزاء کے لیے اصل میں تخلیق کردہ میموری ایلوکیشن سسٹم کے نفاذ سے کوکا и جاؤ. Mimalloc کو معیاری ایپلی کیشنز میں ان کے کوڈ کو تبدیل کیے بغیر استعمال کے لیے ڈھال لیا گیا ہے اور یہ malloc فنکشن کے لیے ایک شفاف متبادل کے طور پر کام کر سکتا ہے۔ ونڈوز، میک او ایس، لینکس، بی ایس ڈی اور یونکس جیسے دیگر سسٹمز پر کام کی حمایت کرتا ہے۔

mimalloc کی اہم خصوصیت اس کا کمپیکٹ نفاذ (3500 لائنز کوڈ سے کم) اور بہت اعلی کارکردگی ہے۔ میں ٹیسٹ کئے گئے mimalloc نے تمام مسابقتی میموری ایلوکیشن لائبریریوں کو پیچھے چھوڑ دیا، بشمول jemalloc, tcmalloc, snmalloc, rpmalloc и ہارڈ.

کارکردگی کا اندازہ کرنے کے لیے، موجودہ کا ایک سیٹ معیاری ٹیسٹ کچھ ٹیسٹوں میں، mimalloc دوسرے سسٹمز سے کئی گنا تیز ہوتا ہے؛ مثال کے طور پر، مختلف تھریڈز کے درمیان آبجیکٹ کی منتقلی کے ٹیسٹ میں، mimalloc tcmalloc اور jemalloc سے 2.5 گنا زیادہ تیز نکلا۔ ایک ہی وقت میں، زیادہ تر ٹیسٹوں میں، کم میموری کی کھپت بھی دیکھی جاتی ہے؛ کچھ حالات میں، میموری کی کھپت کو 25٪ تک کم کیا جا سکتا ہے.

مائیکروسافٹ نے mimalloc میموری ایلوکیشن سسٹم کے لیے کوڈ کھول دیا ہے۔

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

لائبریری کو لنک کرنے کے مرحلے پر شامل کیا جا سکتا ہے یا پہلے سے جمع شدہ پروگرام ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram") کے لیے لوڈ کیا جا سکتا ہے۔ لائبریری بھی فراہم کرتی ہے۔ API رن ٹائم اور عمدہ رویے کے کنٹرول میں فعالیت کو ضم کرنے کے لیے، مثال کے طور پر، سست میموری ریلیز ہینڈلرز کو جوڑنے اور حوالہ کاؤنٹرز کو یکسر بڑھانے کے لیے۔ میموری کے مختلف علاقوں میں تقسیم کے لیے ایپلیکیشن میں کئی "ڈھیر" بنانا اور استعمال کرنا ممکن ہے۔ ڈھیر کو مکمل طور پر آزاد کرنا بھی ممکن ہے، بغیر گزرے اور اس میں رکھی ہوئی اشیاء کو الگ کیے بغیر۔

لائبریری کو محفوظ موڈ میں بنانا ممکن ہے، جس میں خصوصی میموری چیک پیجز (گارڈ پیجز) کو بلاک باؤنڈری پر تبدیل کیا جاتا ہے، اور بلاک کی تقسیم کی بے ترتیبی اور آزاد شدہ بلاکس کی فہرستوں کی خفیہ کاری کا استعمال کیا جاتا ہے۔ اس طرح کے اقدامات ڈھیر پر مبنی بفر اوور فلو کے استحصال کے لیے سب سے عام تکنیکوں کو روکنا ممکن بناتے ہیں۔ جب آپ سیف موڈ کو فعال کرتے ہیں، تو کارکردگی تقریباً 3% کم ہو جاتی ہے۔

mimalloc کی خصوصیات میں سے، یہ بھی نوٹ کیا جاتا ہے کہ یہ بڑے ٹکڑے ہونے کی وجہ سے اپھارہ کے ساتھ مسائل کے لئے حساس نہیں ہے. بدترین صورت حال میں، میٹا ڈیٹا کے لیے میموری کی کھپت میں 0.2% اضافہ ہوتا ہے اور تقسیم شدہ میموری کے لیے 16.7% تک پہنچ سکتا ہے۔ وسائل تک رسائی کے دوران تنازعات سے بچنے کے لیے، mimalloc صرف ایٹم آپریشنز کا استعمال کرتا ہے۔

ماخذ: opennet.ru

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