ينشر Facebook مجموعة Hermit ، وهي مجموعة أدوات لتنفيذ البرامج القابلة للتكرار

نشر موقع Facebook (المحظور في الاتحاد الروسي) رمز مجموعة أدوات Hermit ، والذي يشكل بيئة لتنفيذ البرنامج الحتمي ، والذي يسمح بالحصول على نفس النتيجة وتكرار تقدم التنفيذ باستخدام نفس بيانات الإدخال في عمليات إطلاق مختلفة. تمت كتابة رمز المشروع باللغة Rust وتوزيعه بموجب ترخيص BSD.

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

ينشر Facebook مجموعة Hermit ، وهي مجموعة أدوات لتنفيذ البرامج القابلة للتكرار

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

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

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

المصدر: opennet.ru

إضافة تعليق