איך ליצור אינטראקציה עם תרשים להבות

נתוני הפרופילים מוצגים ב-Cloud Profiler באמצעות גרפים של להבות. למבוא תיאורטי, ראו תרשימי להבה.

תרשים הלהבות מורכב ממסגרות. כל פריים מייצג פונקציה בשירות:

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

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

בתרשים הלהבות מוצגות אחת או יותר של ערימות קריאות עם הערכים הממוצעים של קבוצת פרופילים:

  • כל פרופיל מייצג נתונים שנאספים פעם בדקה ממופע יחיד של השירות שהוגדר באזור יחיד של Compute Engine. תקופת האיסוף של פרופיל משתנה בהתאם לסוג הפרופיל. מידע נוסף זמין במאמר בנושא איסוף נתונים של פרופילים.
  • הממוצע מחושב על סמך עד 250 פרופילים. אם יש יותר מ-250 פרופילים זמינים, המערכת בוחרת 250 מהם באופן אקראי כקבוצת דגימה.
  • המסגרת העליונה, או 'השורש', בתרשים להבת אש מייצגת את השירות כולו. מתחת לפריים 'root' יש פריים נוסף או קבוצה של פריים שמרכיבים את השורה השנייה בגרף. כל אחד מהפריימים האלה, שמסומנים בצבעים, הוא קריאה ברמה העליונה שמתבצעת על ידי השירות. מתחת לכל אחד ממסגרות הפונקציות הצבעוניות האלה יש עוד קבוצה של מסגרות פונקציות, שכל אחת מהן אחראית לחלק מסוים במשאב של המסגרת שמעליה. ההיררכיה של מסגרות הפונקציות בתרשים מייצגת את רצף הקריאות, והרוחב של המסגרת מייצג את התרומה של הפונקציה או השיטה לצריכת המשאבים.

לדוגמה, בגרף של פרופילר שמוצג בו ה-heap שנצרך עבור docdemo-service אפשר לראות שהשירות קורא למסגרות שונות ברמה העליונה, ואחת מהן היא הפונקציה main של זמן הריצה של Go. הרוחב של המסגרות ברמה העליונה מראה שרוב הערימה נצרכת על ידי סטאק ביצוע שכולל את main של זמן הריצה של Go, את main, את allocOnce ואת allocImpl הספציפיים לאפליקציה:

תרשים של כלי הפרופילר לערימה שנצרכה.

במסגרת הבסיס מוצג מידע על צריכת מדדים.

העברת העכבר מעל פריים

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

  • שם הפונקציה
  • שם הקובץ של הפונקציה
  • שימוש מוחלט ושימוש באחוזים

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

בתיבת הדו-שיח יש גם כפתורים:

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

בדוגמה הזו, בתיאור הכלי מוצג שהפונקציה runtime.main נמצאת בקובץ /usr/local/go/src/runtime/proc.go. המידע על צריכת המדדים מראה ש-runtime.main והתהליכים שמופעלים ממנו צורכים 54.73MiB של זיכרון, או כ-98% מהזיכרון הכולל שנצרך על ידי התוכנית:

צריכת מדדים עבור runtime.main.

בחירת מסגרת

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

בדוגמה הבאה, המצביע נמצא על מסגרת קטנה וקשה לראות את סטאק הביצוע. בתיאור כלי המידע מזוהה (*huffmanBitWriter).write כפונקציית המסגרת:

מסגרת קטנה בתרשים הלהבות.

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

המסגרת הקטנה הורחבה.

המאמרים הבאים