التحقق من التطبيق

تُعدّ تقنية نقاط التحقق أسلوبًا يُوفّر تحمّلًا للأعطال في أنظمة الحوسبة . وهي تتضمن حفظ لقطة من حالة التطبيق ، بحيث يُمكن إعادة تشغيله من تلك النقطة في حال حدوث عطل . ويُعدّ هذا الأمر بالغ الأهمية للتطبيقات طويلة الأمد التي تُنفّذ على أنظمة حوسبة مُعرّضة للأعطال.

نظام نقاط التفتيش في الأنظمة الموزعة

في بيئة الحوسبة الموزعة ، تُعدّ تقنية نقاط التحقق أسلوبًا يُساعد على تحمّل الأعطال التي قد تُجبر تطبيقًا طويل الأمد على إعادة التشغيل من البداية. أبسط طريقة لتطبيق نقاط التحقق هي إيقاف التطبيق، ونسخ جميع البيانات المطلوبة من الذاكرة إلى وحدة تخزين موثوقة (مثل نظام ملفات متوازٍ )، ثم استئناف التنفيذ. [ 1 ] في حالة حدوث عطل، عند إعادة تشغيل التطبيق، لا يحتاج إلى البدء من الصفر. بل سيقرأ آخر حالة (نقطة التحقق) من وحدة التخزين المستقرة ويُنفّذ من تلك النقطة. وبينما يدور نقاش مستمر حول ما إذا كانت نقاط التحقق هي عبء العمل الرئيسي للإدخال/الإخراج في أنظمة الحوسبة الموزعة، فإن الإجماع العام هو أنها من أهم أعباء العمل للإدخال/الإخراج. [ 2 ] [ 3 ]

توجد طريقتان رئيسيتان لحفظ نقاط التحقق في أنظمة الحوسبة الموزعة: حفظ نقاط التحقق المنسقة وحفظ نقاط التحقق غير المنسقة. في طريقة حفظ نقاط التحقق المنسقة، يجب على العمليات ضمان اتساق نقاط التحقق الخاصة بها. ويتحقق ذلك عادةً من خلال خوارزمية بروتوكول الالتزام ثنائي المراحل . أما في طريقة حفظ نقاط التحقق غير المنسقة، فتقوم كل عملية بحفظ نقطة التحقق الخاصة بحالتها بشكل مستقل. تجدر الإشارة إلى أن مجرد إجبار العمليات على حفظ نقاط التحقق الخاصة بحالتها على فترات زمنية ثابتة لا يكفي لضمان الاتساق الشامل. فقد يؤدي السعي إلى إنشاء حالة متسقة (أي عدم وجود رسائل مفقودة أو مكررة) إلى إجبار عمليات أخرى على الرجوع إلى نقاط التحقق الخاصة بها، مما قد يتسبب بدوره في رجوع عمليات أخرى إلى نقاط تحقق أقدم، وهو ما قد يعني في أسوأ الأحوال أن الحالة المتسقة الوحيدة الموجودة هي الحالة الأولية (ما يُعرف بتأثير الدومينو ). [ 4 ] [ 5 ]

تطبيقات للتطبيقات

حفظ الحالة

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

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

تكمن مشكلة حفظ الحالة في أنها تتطلب من مُشغّل البرنامج طلب الحفظ. بالنسبة للبرامج غير التفاعلية، بما في ذلك أحمال العمل المؤتمتة أو المعالجة الدفعية، كان لا بد من أتمتة إمكانية إنشاء نقاط تحقق لهذه التطبيقات.

نقطة تفتيش/إعادة تشغيل

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

تُعدّ عملية التحقق من البيانات مكلفة، لذا لم تكن تُجرى عادةً مع كل سجل، بل مع مراعاة التوازن المعقول بين تكلفة التحقق وقيمة وقت المعالجة اللازم لإعادة معالجة مجموعة من السجلات. وبالتالي، قد يتراوح عدد السجلات التي تتم معالجتها لكل نقطة تحقق بين 25 و200 سجل، وذلك تبعًا لعوامل التكلفة، ومدى تعقيد التطبيق، والموارد اللازمة لإعادة تشغيله بنجاح.

واجهة تحمل الأعطال (FTI)

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

نقطة تفتيش/إعادة تشغيل مختبر بيركلي (BLCR)

يعمل فريق التقنيات المستقبلية في مختبرات لورانس الوطنية على تطوير تطبيق هجين لنظام نقاط التحقق/إعادة التشغيل، يُسمى BLCR، يعمل على مستوى نواة النظام ومستوى المستخدم. يهدف الفريق إلى توفير تطبيق قوي وعالي الجودة يُتيح إنشاء نقاط تحقق لمجموعة واسعة من التطبيقات، دون الحاجة إلى تعديل شفرة التطبيق. [ 8 ] يركز BLCR على إنشاء نقاط تحقق للتطبيقات المتوازية التي تتواصل عبر MPI، وعلى التوافق مع حزمة البرامج التي ينتجها مركز SciDAC Scalable Systems Software ISIC. وينقسم عمل الفريق إلى أربعة مجالات رئيسية: نقاط التحقق/إعادة التشغيل لنظام لينكس (CR)، ومكتبات MPI التي تدعم نقاط التحقق، وواجهة إدارة الموارد لنقاط التحقق/إعادة التشغيل، وتطوير واجهات إدارة العمليات.

DMTCP

DMTCP (التحقق الموزع متعدد الخيوط) أداةٌ لحفظ حالة مجموعةٍ من البرامج موزعة على عدة أجهزة ومتصلة عبر مقابس، وذلك بشفافية تامة. [ 9 ] لا تُجري هذه الأداة أي تعديلات على برنامج المستخدم أو نظام التشغيل. من بين التطبيقات التي يدعمها DMTCP: Open MPI ، وPython ، وPerl ، والعديد من لغات البرمجة ولغات كتابة البرامج النصية. وباستخدام TightVNC، يُمكنها أيضًا حفظ حالة تطبيقات X Window وإعادة تشغيلها، طالما أنها لا تستخدم ملحقات (مثل OpenGL أو الفيديو). من بين ميزات Linux التي يدعمها DMTCP: مُعرّفات الملفات المفتوحة ، والأنابيب، والمقابس، ومعالجات الإشارات، ومحاكاة مُعرّفات العمليات والخيوط (لضمان استمرار عمل مُعرّفات العمليات والخيوط القديمة عند إعادة التشغيل)، وptys، وfifos، ومُعرّفات مجموعات العمليات، ومُعرّفات الجلسات، وخصائص الطرفية، و mmap /mprotect (بما في ذلك الذاكرة المشتركة القائمة على mmap). يدعم DMTCP واجهة برمجة تطبيقات OFED لـ InfiniBand تجريبيًا. [ 10 ]

نقاط التفتيش التعاونية

تُجري بعض البروتوكولات الحديثة عملية حفظ نقاط التحقق التعاونية عن طريق تخزين أجزاء من نقطة التحقق في عُقد قريبة. [ 11 ] يُعدّ هذا مفيدًا لأنه يُجنّب تكلفة التخزين في نظام ملفات متوازٍ (والذي غالبًا ما يُصبح عائقًا أمام الأنظمة واسعة النطاق)، كما أنه يستخدم تخزينًا أقرب. وقد وُجد استخدامٌ واسعٌ لهذه التقنية، لا سيما في مجموعات الحوسبة الفائقة واسعة النطاق. ويكمن التحدي في ضمان توافر العُقد القريبة التي تحتوي على أجزاء من نقاط التحقق عند الحاجة إليها لاستعادة البيانات بعد حدوث عطل.

عامل ميناء

يحتوي Docker والتقنية الأساسية على آلية للتحقق من الحالة واستعادة البيانات. [ 12 ]

CRIU

CRIU هي مكتبة نقاط تفتيش في مساحة المستخدم. [ 13 ]

التنفيذ للأجهزة المدمجة وأجهزة ASIC

تذكارات

ميمينتوس هو نظام برمجي يحوّل المهام العامة إلى برامج قابلة للمقاطعة، مصمم خصيصًا للأنظمة التي تتعرض لانقطاعات متكررة، مثل انقطاع التيار الكهربائي. صُمم ميمينتوس للأجهزة المدمجة التي لا تحتاج إلى بطاريات، مثل بطاقات RFID والبطاقات الذكية، والتي تعتمد على مصادر الطاقة المحيطة. يقوم ميمينتوس باستشعار الطاقة المتاحة في النظام بشكل دوري، ويقرر ما إذا كان سيُوقف البرنامج مؤقتًا تحسبًا لانقطاع وشيك للطاقة، أم سيستمر في المعالجة. في حالة الإيقاف المؤقت، تُخزن البيانات في ذاكرة غير متطايرة . وعندما تصبح الطاقة كافية لإعادة التشغيل ، تُسترجع البيانات من الذاكرة غير المتطايرة، ويستأنف البرنامج عمله من الحالة المخزنة. تم تطبيق ميمينتوس على عائلة معالجات MSP430 الدقيقة . [ 14 ]

إيديتيك

Idetic عبارة عن مجموعة من الأدوات الآلية التي تساعد مطوري الدوائر المتكاملة الخاصة بالتطبيقات (ASIC) على تضمين نقاط التحقق تلقائيًا في تصميماتهم. تستهدف هذه الأداة أدوات التوليف عالية المستوى ، وتضيف نقاط التحقق على مستوى نقل البيانات بين السجلات ( كود Verilog ). تستخدم Idetic أسلوب البرمجة الديناميكية لتحديد نقاط ذات تكلفة منخفضة في آلة الحالة الخاصة بالتصميم. نظرًا لأن عملية التحقق على مستوى الأجهزة تتضمن إرسال بيانات السجلات التابعة إلى ذاكرة غير متطايرة، فإنه يُشترط أن تحتوي النقاط المثلى على أقل عدد ممكن من السجلات للتخزين. تم نشر Idetic وتقييمها على جهاز علامة RFID لحصاد الطاقة . [ 15 ]

انظر أيضاً

مراجع

  1. جيلينبي، إي. (1979). حول الفاصل الزمني الأمثل لنقاط التفتيش. مجلة ACM (JACM) 26 (2)، 259-270. جيلينبي، إي. (1976). نموذج لاستعادة التراجع مع نقاط تفتيش متعددة. وقائع جمعية IEEE للحاسبات، ICSE'76، المؤتمر الدولي الثاني لهندسة البرمجيات، 251-255. بلانك، جيه إس، بيك، إم، كينغسلي، جي، ولي، كيه. (1994). Libckpt: نقاط تفتيش شفافة في نظام يونكس. قسم علوم الحاسوب.
  2. وانغ، تينغ؛ سنايدر، شين؛ لوكوود، غلين؛ كارنز، فيليب؛ رايت، نيكولاس؛ بينا، سورين (سبتمبر 2018). "IOMiner: إطار عمل تحليلي واسع النطاق لاكتساب المعرفة من سجلات الإدخال/الإخراج". المؤتمر الدولي للحوسبة العنقودية IEEE لعام 2018 (CLUSTER) . IEEE. الصفحات 466-476 . doi : 10.1109/CLUSTER.2018.00062 . ISBN  978-1-5386-8319-4. S2CID 53235850 . 
  3. "توصيف مقارن لأحمال عمل الإدخال/الإخراج لمجموعتين من مجموعات تخزين السجلات من الفئة القيادية" (ملف PDF) . ACM. نوفمبر 2015.
  4. بوتيلير، ب.، ليمارينييه، ب.، كراويزيك، ك.، وكابيلو، ف. (ديسمبر 2003). نقطة التفتيش المنسقة مقابل سجل الرسائل لـ MPI المقاوم للأعطال. في الحوسبة العنقودية، 2003. وقائع المؤتمر الدولي IEEE لعام 2003 (ص 242-250). IEEE.
  5. Elnozahy, EN, Alvisi, L., Wang, YM, & Johnson, DB (2002). A survey of rollback-recovery protocols in message passing systems. ACM Computing Surveys, 34(3), 375-408.
  6. ^ وانغ ، يي مين. هوانغ، ينون؛ فو، كيم فونج؛ تشونغ، بي يو؛ كينتالا ، شاندرا (2002/09/06). "نقاط التفتيش وتطبيقاتها" . IEEE : 31 عبر IEEE Xplore .
  7. باوتيستا-غوميز، ل.، تسوبوي، س.، كوماتيتش، د.، كابيلو، ف.، ماروياما، ن.، وماتسوكا، س. (نوفمبر 2011). FTI: واجهة عالية الأداء لتحمل الأعطال للأنظمة الهجينة. في وقائع المؤتمر الدولي لعام 2011 للحوسبة عالية الأداء والشبكات والتخزين والتحليل (ص 32). ACM.
  8. هارجروف، بي إتش، ودويل، جيه سي (سبتمبر 2006). نقطة تفتيش/إعادة تشغيل مختبر بيركلي (blcr) لمجموعات لينكس. في مجلة الفيزياء: سلسلة المؤتمرات (المجلد 46، العدد 1، ص 494). دار نشر IOP.
  9. أنسل، ج.، آريا، ك.، وكوبرمان، ج. (مايو 2009). DMTCP: نقاط تفتيش شفافة لحسابات المجموعات الحاسوبية وأجهزة سطح المكتب. في المعالجة المتوازية والموزعة، 2009. IPDPS 2009. ندوة IEEE الدولية حول (ص 1-12). IEEE.
  10. "GitHub - DMTCP/DMTCP: DMTCP: Distributed MultiThreaded CheckPointing" . GitHub . 2019-07-11.
  11. والترز، جيه بي؛ تشودري، في. (1 يوليو 2009). "تحمل الأعطال القائم على النسخ المتماثل لتطبيقات MPI". معاملات IEEE للأنظمة المتوازية والموزعة . 20 (7): 997-1010 . CiteSeerX 10.1.1.921.6773 . doi : 10.1109/TPDS.2008.172 . ISSN 1045-9219 . S2CID 2086958 .   
  12. "Docker - CRIU" .
  13. ^ "كريو" . criu.org . تم الاسترجاع 2024-10-15 .
  14. بنجامين رانسفورد، وجاكوب سوربر، وكيفن فو. 2011. ميمينتوس: دعم النظام للحسابات طويلة الأمد على أجهزة بحجم RFID. إشعارات ACM SIGPLAN 47، 4 (مارس 2011)، 159-170. DOI=10.1145/2248487.1950386 http://doi.acm.org/10.1145/2248487.1950386
  15. ميرحسيني، أ.؛ سونغوري، إي إم؛ كوشانفر، ف.، "Idetic: منهجية تركيب عالية المستوى لتمكين العمليات الحسابية الطويلة على دوائر متكاملة خاصة بالتطبيقات تعمل بالطاقة العابرة"، المؤتمر الدولي IEEE للحوسبة والاتصالات الشاملة (PerCom)، المجلد، العدد، الصفحات 216، 224، 18-22 مارس 2013. الرابط: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6526735&isnumber=6526701

للمزيد من القراءة

  • ييبي لينغ، جي مي، شياولا لين: نهج حساب التفاضل والتكامل التبايني لتحديد الموقع الأمثل لنقاط التفتيش. مجلة IEEE للمعاملات الحاسوبية 50(7): 699-708 (2001)
  • RE Ahmed و RC Frazier و PN Marinos، "خوارزميات استعادة الأخطاء بالتراجع بمساعدة ذاكرة التخزين المؤقت (CARER) لأنظمة المعالجات المتعددة ذات الذاكرة المشتركة"، IEEE 20th International Symposium on Fault-Tolerant Computing (FTCS-20)، نيوكاسل أبون تاين، المملكة المتحدة، 26-28 يونيو 1990، ص  82-88.