הרמיט, כלי לבדיקה מבוקרת וזיהוי שגיאות

נָזִיר

הרמיט, כמיכל שניתן לשחזור, נותן מושג איך זה יהיה אם מחסנית המערכת תספק חזרה כהפשטה

פייסבוק נחשף לאחרונה באמצעות פרסום, השקת נָזִיר, היוצר א סביבה לביצוע תוכנית דטרמיניסטית, המאפשר להגיע לאותה תוצאה ולחזור על תהליך הביצוע בהשקות שונות תוך שימוש באותם נתוני קלט.

במהלך ביצוע רגיל, גורמים זרים שונים משפיעים על הפלט, כגון השעה הנוכחית, פונקציות תזמון שרשור, כתובות זיכרון וירטואלי, נתונים ממחולל מספרים פסאודו אקראיים ומזהים ייחודיים שונים.

הרמיט מאפשר להפעיל את התוכנית בקונטיינר כאשר גורמים אלה נשארים קבועים בריצות עוקבות. ביצוע חוזר, המשחזר במלואו את התצורה של הסביבה ההפכפכה, יכול לשמש לאבחון שגיאות, איתור באגים ריבוי שלבים עם איטרציות, יצירת סביבה קבועה לבדיקות רגרסיה, בדיקות מאמץ, פתרון תקלות מרובי חוטים ומערכות בנייה שניתן לחזור עליהן.

הרמיט מאלץ ביצוע דטרמיניסטי של תוכניות שרירותיות ופועל כעטיפה הניתנת לשחזור. כלומר, הוא מבודד באופן הרמטי את התוכנית ממקורות של אי-דטרמיניזם כמו תזמון, שזירת חוטים, יצירת מספרים אקראיים וכו'. דטרמיניזם מובטח הוא כלי רב עוצמה ומשמש כבסיס למספר יישומים, לרבות בדיקות מתח במקביל, הקלטה/שידור חוזר, בנייה ניתנת לשחזור ואבחון אוטומטי של שגיאות במקביל ועוד.

הרמיט אינו יכול לבודד את תוכנית האורחים ממקורות של אי-דטרמיניזם, כגון שינויים במערכת הקבצים או תגובות מרשתות חיצוניות. במקום זאת, כדי לספק דטרמיניזם מלא, על המשתמש לספק תמונת בסיס קבועה של מערכת קבצים (לדוגמה, עם Docker) ולהשבית רשתות חיצוניות.

על הרמיט

נָזִיר מאפשר כוח יוצר סביבה ניתנת לשחזור על ידי יירוט קריאות מערכת, שחלקן מוחלפות במטפלים משלהן שמייצרים פלט קבוע, וחלקן מופנות לקרנל, ולאחר מכן מוסרים נתונים לא קבועים מהפלט.

ליירט שיחות למערכת, נעשה שימוש במסגרת חֲלוֹם בְּהָקִיץ, שהקוד שלו מפורסם גם על ידי פייסבוק. כדי למנוע משינויים במערכת הקבצים ובקשות רשת להשפיע על התקדמות הביצוע, הביצוע מתבצע באמצעות תמונת סטילס של מערכת הקבצים ועם גישה לרשתות חיצוניות מושבתת. על ידי גישה למחולל המספרים הפסאודו אקראיים, Hermit מייצר רצף מוגדר מראש שחוזר על עצמו בכל פעם שהוא מבוצע.

המקור המורכב ביותר לאי-דטרמיניזם הוא מתזמן השרשור. האופן שבו הקרנל מתזמן שרשורים תלוי בגורמים חיצוניים רבים, כולל מספר המעבדים הפיזיים או שרשורים אחרים הפועלים במערכת הדורשים זמן CPU.

מבין ההשפעות הלא קבועות המורכבות יותר על הביצועים, מדגיש את מתזמן השרשור, שהתנהגותו תלויה בגורמים חיצוניים רבים, כגון מספר ליבות המעבד והנוכחות של שרשורים רצים אחרים.

כדי להבטיח התנהגות מתזמן חוזרת, כל השרשורים מסודרים, קשורים לליבת מעבד יחידה ובסדר העברת השליטה לחוטים. כל שרשור רשאי לבצע מספר קבוע של הוראות, ולאחר מכן הביצוע נעצר ומועבר לשרשור אחר (לצורך הגבלה, נעשה שימוש ב-CPU PMU (Performance Monitoring Unit), אשר מפסיק את הביצוע לאחר מספר מוגדר של ענפים מותנים).

לאבחן בעיות עם חוטים עקב מצב גזע, נזיר יש מצב לזהות פעולות שלא היו בסדר וגרם למצור. על מנת לזהות בעיות מסוג זה, נערכת השוואה בין המדינות בהן נרשמו הפעולה הנכונה והפסקת הביצוע החריגה.

לבסוף, אם אתה מעוניין להיות מסוגל ללמוד יותר על זה, אתה צריך לדעת את זה קוד הפרויקט הוא כתוב ב- Rust ומופץ תחת רישיון BSD.

אתה יכול לבדוק את הפרטים הקישור הבא.


היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.