Hermit ، أداة للاختبار المتحكم فيه واكتشاف الأخطاء

الناسك

Hermit ، كحاوية قابلة للتكرار ، يعطي فكرة عما سيكون عليه الحال إذا وفرت مكدس النظام إمكانية التكرار كتجريد

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

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

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

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

لا يمكن لـ Hermit عزل برنامج الضيف عن مصادر اللاحتمية ، مثل تغييرات نظام الملفات أو الاستجابات من الشبكات الخارجية. بدلاً من ذلك ، لتوفير الحتمية الكاملة ، يجب على المستخدم توفير صورة أساسية لنظام الملفات الثابتة (على سبيل المثال ، مع Docker) وتعطيل الشبكات الخارجية.

حول الناسك

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

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

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

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

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

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

أخيرًا ، إذا كنت مهتمًا بأن تكون قادرًا على معرفة المزيد عنها ، فيجب أن تعرف ذلك كود المشروع إنه مكتوب في Rust ويتم توزيعه بموجب ترخيص BSD.

يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

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

*

*

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