أصدر Facebook تصحيحات تعمل على تحسين وحدة تحكم ذاكرة Slab في Linux

رومان جوشين (مهندس برمجيات فيسبوك) ريجسترو في قائمة تطوير Linux kernel ، مجموعة من التصحيحات لتطبيق تعيين ذاكرة وحدة تحكم البلاطة (وحدة تحكم في الذاكرة).

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

وجد رومان ما يسميه "عيبًا خطيرًا جدًا" في وحدة التحكم في ذاكرة الألواح الموجودة والتي تؤدي إلى استخدام منخفض هذه الأيام مع مجموعات cgroups.

"السبب الحقيقي وراء التصميم الحالي الذي يؤدي إلى انخفاض استخدام الألواح بسيط: يتم استخدام صفحات الألواح حصريًا بواسطة مجموعة الذاكرة.

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

إذا تم تعطيل محاسبة kmem ، يمكن للنواة استخدام مساحة خالية على صفحات لوح للتخصيصات الأخرى. «

وحدة تحكم ذاكرة البلاطة المقترحة بواسطة رومانو غوشين في العام الماضي كان واعدًا جدًا يزيد الكفاءة لاستخدام البلاطة ، تقليل حجم الذاكرة المستخدمة للبلاطة بنسبة 30-45٪ ويقلل بشكل كبير من إجمالي استهلاك ذاكرة kernel.

وبالإضافة إلى ذلك، أشارت التصحيحات المنفذة أن Facebook يستخدم بالفعل الكود في الإنتاج على خوادمهم وكان توفير ~ 650-700 ميجابايت + لخوادم الويب الأمامية، والتخزين المؤقت لقاعدة البيانات وخوادم DNS ، من بين جوائز أخرى.

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

تستخدم جميع مجموعات cgroups للذاكرة في التطبيق الجديد مجموعة مشتركة من مخابئ الألواح ، ولم يعد العمر الافتراضي لمخازن الألواح مرتبطًا بعمر قيود الذاكرة المحددة من خلال cgroup.

يجب أن تقوم محاسبة الموارد الأكثر دقة المطبقة في وحدة التحكم الجديدة في البلاطة بتحميل وحدة المعالجة المركزية أكثر من الناحية النظرية ، ولكن في الممارسة العملية تبين أن الاختلافات لا تذكر.

على وجه الخصوص ، تم استخدام برنامج تشغيل اللوح الجديد لعدة أشهر على خوادم Facebook في العملية التي تتعامل مع أنواع مختلفة من الأحمال ، ولم يتم اكتشاف أي تراجع كبير حتى الآن.

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

  • واجهة برمجة تطبيقات تحميل الصفحة الفرعية ، والتي يمكن استخدامها في المستقبل لحساب كائنات أخرى ليست بحجم الصفحة ، على سبيل المثال تخصيصات بيربو
  • يمكن إعادة استخدام واجهة برمجة تطبيقات mem_cgroup_ptr ، حيث يتم عد المؤشرات إلى memcg ، من أجل الإصلاح الفعال للكائنات الأخرى ، مثل pagecache.

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

بدلاً من إنشاء مجموعة منفصلة من kmem_caches لكل مجموعة ذاكرة cgroup ، يتم استخدام مجموعتين عالميتين: المجموعة الجذرية لتعيينات المجموعة غير المحسوبة ومجموعة الجذر والمجموعة الثانية لجميع المهام الأخرى. وهذا يسمح بتبسيط إدارة مدى الحياة لمخابئ kmem الفردية.

أخيرًا ، إذا كنت مهتمًا بمعرفة المجموعة الجديدة المكونة من 19 تصحيحًا ، فيمكن العثور عليها في القائمة بريد النواة.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.