لقد فتحت Microsoft الكود الخاص بنظام تخصيص الذاكرة mimalloc

افتتحت Microsoft مكتبة بموجب ترخيص MIT mmalloc من تطبيقات نظام تخصيص الذاكرة الذي تم إنشاؤه في الأصل لمكونات وقت التشغيل للغات الكوكا и تتكئ. تم تكييف Mimalloc للاستخدام في التطبيقات القياسية دون تغيير الكود الخاص بها ويمكن أن يكون بمثابة بديل شفاف لوظيفة malloc. يدعم العمل على أنظمة Windows وmacOS وLinux وBSD وغيرها من الأنظمة المشابهة لنظام Unix.

الميزة الرئيسية لبرنامج mimalloc هي تنفيذه المدمج (أقل من 3500 سطر من التعليمات البرمجية) والأداء العالي جدًا. في تم إجراء الاختبارات تفوقت mimalloc على جميع مكتبات تخصيص الذاكرة المنافسة، بما في ذلك jemaloc, com.tcmalloc, com.snmalloc, com.rpmalloc и خزن.

لتقييم الأداء، مجموعة من القائمة الاختبارات القياسية في بعض الاختبارات، يكون mimalloc أسرع بعدة مرات من الأنظمة الأخرى، على سبيل المثال، في اختبار ترحيل الكائنات بين سلاسل مختلفة، تبين أن mimalloc أسرع بأكثر من 2.5 مرة من tcmalloc وjemalloc. وفي الوقت نفسه، لوحظ أيضًا انخفاض استهلاك الذاكرة في معظم الاختبارات، وفي بعض المواقف، يمكن تقليل استهلاك الذاكرة بنسبة 25%.

لقد فتحت Microsoft الكود الخاص بنظام تخصيص الذاكرة mimalloc

يتم تحقيق الأداء العالي بشكل رئيسي من خلال استخدام تقسيم القائمة المجانية. بدلاً من قائمة واحدة كبيرة، يستخدم mimalloc سلسلة من القوائم الأصغر، كل واحدة منها مرتبطة بصفحة الذاكرة. يقلل هذا الأسلوب من التجزئة ويزيد من مكانة البيانات في الذاكرة. صفحة الذاكرة عبارة عن مجموعة مجمعة من الكتل ذات الحجم المماثل. في أنظمة 64 بت، يكون حجم الصفحة عادةً 64 كيلو بايت. إذا لم تكن هناك كتل مشغولة متبقية في الصفحة، فسيتم تحريرها بالكامل وإعادة الذاكرة إلى نظام التشغيل، مما يقلل من تكاليف الذاكرة والتجزئة في البرامج طويلة التشغيل.

يمكن تضمين المكتبة في مرحلة الارتباط أو تحميلها لبرنامج تم تجميعه بالفعل ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). كما توفر المكتبة API لدمج الوظائف في وقت التشغيل والتحكم في السلوك الدقيق، على سبيل المثال، لتوصيل معالجات تحرير الذاكرة المتأخرة وزيادة العدادات المرجعية بشكل رتيب. من الممكن إنشاء واستخدام عدة "أكوام" في تطبيق ما للتوزيع عبر مناطق الذاكرة المختلفة. من الممكن أيضًا تحرير الكومة بالكامل، دون المرور عبرها وتحرير الكائنات الموضوعة فيها بشكل منفصل.

من الممكن إنشاء المكتبة في الوضع الآمن، حيث يتم استبدال صفحات فحص الذاكرة الخاصة (صفحات الحماية) عند حدود الكتلة، ويتم استخدام التوزيع العشوائي للكتل وتشفير قوائم الكتل المحررة. تتيح مثل هذه الإجراءات حظر الأساليب الأكثر شيوعًا لاستغلال تجاوزات المخزن المؤقت المستندة إلى الكومة. عند تمكين الوضع الآمن، ينخفض ​​الأداء بنسبة 3% تقريبًا.

ومن بين ميزات mimalloc أيضًا أنه غير معرض لمشاكل الانتفاخ بسبب التفتت الكبير. في أسوأ السيناريوهات، يزيد استهلاك الذاكرة بنسبة 0.2% للبيانات التعريفية ويمكن أن يصل إلى 16.7% للذاكرة الموزعة. لتجنب التعارضات عند الوصول إلى الموارد، يستخدم mimalloc العمليات الذرية فقط.

المصدر: opennet.ru

إضافة تعليق