SevenTnewS

إدارة الذاكرة

mيمالوك، حصان العمل الصغير في مايكروسوفت، يعمل بهدوء على تشغيل الذكاء الاصطناعي على نطاق واسع

محلل الذاكرة ميمالوك من مايكروسوفت ريسيرش، المصمم للتزامن العالي ونطاقات الذاكرة الكبيرة، يعمل بهدوء على تشغيل الذكاء الاصطناعي وخدمات السحابة على نطاق واسع. تصميمه المحلي لكل خيط مع آلاف القوائم الحرة يقلل من التنازع ويوفر السرعة وكفاءة الذاكرة.

Emmanuel Fabrice Omgbwa Yasse

2026-07-03 · قراءة 4 دقائق

mيمالوك، حصان العمل الصغير في مايكروسوفت، يعمل بهدوء على تشغيل الذكاء الاصطناعي على نطاق واسع

في عالم محمل الذاكرة التنافسي، أصبح مشروع وُلد داخل مختبر أبحاث مايكروسوفت بهدوء حصان عمل، ليس فقط لبيئات تشغيل لغات البرمجة الصغيرة، ولكن لخدمات سحابية ضخمة. محلل الذاكرة ميمالوك (malloc من مايكروسوفت)، وهو بديل مفتوح المصدر وقابل للاستبدال الفوري لـ malloc و free، أثبت فعاليته بشكل خاص لأعباء العمل عالية التزامن والتي تستهلك الذاكرة بشكل كبير والتي تحدد الحوسبة الحديثة، بما في ذلك نماذج اللغة الكبيرة (LLMs). open-by-design-ai2-brings-fully-open-ai-infrastructure-online-with-nsf-omai

طورته مجموعة RiSE في مايكروسوفت ريسيرش (MSR)، ظهر ميمالوك لأول مرة في عام 2020 كمخصص سريع لمُثبِت نظرية Lean ولغة البرمجة Koka، وكلاهما يستخدم عدادات مراجع جديدة موجهة من المترجم. لكن تصميمه القابل للتوسع، كما كتب الباحثون في منشور مدونة حديث، عمل بشكل جيد للغاية للخدمات الكبيرة في مايكروسوفت، مما أدى إلى تحسينات كبيرة في أوقات الاستجابة لخدمات مثل Bing، بفضل التعاون الوثيق مع فرق المنتجات. microsoft-research-introduces-generative-causal-testing-to-turn-black-box-ai-brain-models-into-readable-theories

اليوم، يُستخدم ميمالوك على نطاق واسع داخل الشركة وخارجها. يشغل NoGIL CPython 3.13+، وهو مدمج في Unreal Engine وألعاب مثل Death Stranding، ويعيش على GitHub مع أكثر من 12000 نجمة. غلافه بلغة Rust وحده يشهد أكثر من 100000 تحميل يوميًا. llms-corrupt-your-documents-when-you-delegate-a-close-look-at-the-delegate-52-benchmark

قاعدة كود مضغوطة، مبادئ ثابتة

على الرغم من نطاقه الواسع، من المترجمات الصغيرة إلى الخدمات ذات البصمة الذاكرية التي تتجاوز 500 جيجابايت ومئات الخيوط، تظل قاعدة كود ميمالوك مضغوطة عند حوالي 12000 سطر من لغة C. يركز المشروع على هياكل البيانات الداخلية الواضحة ذات المبادئ الثابتة، مما يسهل فهمها والتحليل بها مقارنة بالعديد من محللات الصناعة. ساعد هذا الوضوح في نقله إلى Windows و macOS و Linux و FreeBSD و NetBSD و DragonFly ووحدات تحكم ألعاب متعددة.

وكتب الباحثون موضحين فلسفة تصميمهم: “كما لاحظ فريد بروكس بالفعل في كتابه الشهير The Mythical Man-Month: ‘أرني مخطط انسيابك وأخفِ جداولك، وسأستمر في الحيرة. أرني جداولك، ولن أحتاج إلى مخطط الانسياب الخاص بك؛ سيصبح الأمر واضحًا.”

كما سمحت هياكل البيانات الشفافة لـ Sam Gross وآخرين باعتماد ميمالوك كمخصص متزامن لـ NoGIL CPython، مما جعل تنفيذ جمع القمامة الدوري فوق المخصص أمرًا مباشرًا. how-local-llms-like-gemma-and-qwen-are-taming-open-source-repository-triage-at-scale

مسار سريع مع الحد الأدنى من المزامنة

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

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

وبالمثل، لدى ميمالوك مسار سريع لتحرير الكتل. يتم تحرير معظم الكتل بواسطة الخيط الذي خصصها، ويتحقق المخصص مما إذا كان معرف الخيط الحالي يطابق المعرف المخزن في الصفحة المقابلة. إذا كان الأمر كذلك، فإنه يدفع الكتلة إلى القائمة الحرة للصفحة دون أقفال أو عمليات ذرية. aleph-alpha-builds-theoretical-inference-model-for-deepseek-deriving-performance-from-hardware-primitives

ثلاث قوائم حرة وإلهام عشوائي

البصيرة الرئيسية في تصميم ميمالوك هي قوائمه الحرة الثلاث لكل صفحة بحجم 64 كيلوبايت: واحدة للتخصيصات، وأخرى للكتل المحررة، وثالثة للتحريرات عبر الخيوط. هذا يعني أن البرنامج يمكن أن يكون لديه بسهولة آلاف القوائم الحرة، وهو أمر ضروري لقابلية التوسع وموقع ذاكرة التخزين المؤقت.

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

موازنة قابلية التوسع وكفاءة الذاكرة

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

توضح نتائج المقارنة المعيارية المفاضلة. أظهر المخصص القياسي للنظام كفاءة ذاكرة ممتازة (1.1x الملتزم مقابل البيانات الحية) لكنه خصص فقط 56 جيجابايت خلال فترة المقارنة. خصص مخصص آخر عالي التزامن 262 جيجابايت لكنه التزم بذاكرة أكبر بأربع مرات من البيانات الحية، وهي نسبة تصبح غير مقبولة عند البصمات الكبيرة.

و noted الباحثون: “يظهر الرسم البياني النهائي أحدث مخصص ميمالوك. مثل المخصص الثاني، يخصص 262 جيجابايت خلال مدة المقارنة، مع تقليل الذاكرة الملتزمة إلى 1.3x من البيانات الحية، مما يحقق قابلية التوسع ومشاركة الذاكرة الفعالة بين الخيوط.”

جاء هذا التحسين من تقنية “سرقة الصفحات” التي تسمح للخيوط بامتلاك الصفحات دون مزامنة باهظة عبر الخيوط، تم تطويرها بالتعاون الوثيق مع فريق Azure Cosmos DB في مايكروسوفت. يقول الفريق إنه سينشر تقريرًا فنيًا حول هذه التحسينات قريبًا. microsoft-open-sources-data-formulator-07-for-enterprise-ai-analytics