לדלג לתוכן

פתרון זמן פעיל וזמן המתנה

פתרון ראשון

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

פתרון שני

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

פתרון שלישי

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

taskset -c "$lab_cpu" ./latency_probe cpu &
first_pid=$!
taskset -c "$lab_cpu" ./latency_probe cpu &
second_pid=$!
wait "$first_pid" "$second_pid"

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