ניתוח יעילות הזיכרון

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

מכשירי Adreno

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

התאמה בין נתוני השימוש לבין המדדים הרלוונטיים שמתחתיהם
איור 1. הגרף של השימוש תואם למונים הרלוונטיים שמתחתיו

קריאה/כתיבה של סה"כ

אחרי שמסמנים פריים יחיד בכלי ליצירת פרופילים, מתחילים בבדיקת המונים Read Total (Bytes/sec) ו-Write Total (Bytes/sec). המונים האלה מספקים תמונה טובה של כמות הנתונים שעוברים באפיק הזיכרון במהלך פריים יחיד. כדאי לצמצם ככל האפשר את כמות הנתונים שאתם שולחים דרך האפיק, כי רוחב פס של הזיכרון הוא מקור משמעותי להתרוקנות הסוללה במכשירים ניידים.

מונה כולל של קריאה וכתיבה
איור 2. המספר הכולל של מוני קריאה וכתיבה

אפשר גם לבדוק את מוני הנתונים Vertex Memory Read (Bytes/Second) ו-Texture Memory Read (Bytes/Second) כדי לקבוע את החלק מרוחב הפס שמשמש לנתוני קודקודים וטקסטורות.

Vertex + Texture Memory Read Counters
איור 3. Vertex + Texture Memory Read Counters

מה נחשב לערך 'טוב' תלוי בסוגי עומסי העבודה באפליקציה. לדוגמה, באפליקציות דו-ממדיות יכול להיות שימוש ברוחב פס גדול יחסית (‎~2+GB/s) של קריאת זיכרון טקסטורה, אבל רוחב הפס של זיכרון הקודקודים יכול להיות מינימלי מאוד (‎~50MB/s). פרטים נוספים זמינים במסמכי התיעוד בנושא ניתוח רוחב פס של זיכרון קודקודים וניתוח השימוש ברוחב פס של זיכרון טקסטורה.

אחזור דוכנים

כדאי לבדוק את המונים % Vertex Fetch Stall, ‏ % Texture Fetch Stall ו-% Stall on System Memory, כי הם יתנו לכם רמזים לגבי ביצועי הזיכרון הכוללים של האפליקציה. אם הערכים גבוהים מ-5% בערך, יכול להיות שהאפליקציה לא מסדרת את הנתונים בזיכרון בצורה יעילה, או שהיא ניגשת לנתונים בצורה יעילה כדי לנצל את היתרונות של המטמון. במאמרים ניתוח של רוחב הפס של הזיכרון ב-Vertex וניתוח של השימוש ברוחב הפס של הזיכרון בטקסטורה מוסבר איך לשפר את השימוש בזיכרון עבור סוגי הנכסים האלה.

מונים של השהיות בזיכרון
איור 4. Memory Stall Counters

מכשירי מאלי

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

התאמה בין נתוני השימוש לבין המדדים שמעניינים אתכם שמופיעים מתחתיו
איור 5. התאמה בין נתוני השימוש לבין המדדים שמעניינים אתכם שמופיעים מתחתיהם

סך כל התוצאות החיצוניות

אחרי שמסמנים פריים יחיד בSystem Profiler, מתחילים בבדיקת מוני Output External Read bytes ו-Output External Write bytes. המונים האלה מספקים תמונה טובה של כמות הנתונים שעוברים באפיק הזיכרון במהלך פריים אחד. כדאי לצמצם ככל האפשר את כמות הנתונים שאתם שולחים דרך האפיק, כי רוחב פס הזיכרון הוא מקור משמעותי לניצול הסוללה במכשירים ניידים.

מעקב אחר מונה חיצוני בפלט
איור 6. פלט של מעקב אחר מונה חיצוני

קלט של סה"כ פנימיים

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

קלט מעקב אחר מונה פנימי
איור 7. Input Internal counter tracks

אחזור דוכנים

המדדים הבאים שמומלץ לבדוק הם Vertex Prefetcher Stall Cycles ו-Texture Fetch Stall, כי הם יתנו לכם רמזים לגבי ביצועי הזיכרון הכוללים של האפליקציה. אם אתם רואים ערכים גבוהים מ-5%, זה אומר שאתם לא מסדרים את הנתונים שלנו בזיכרון בצורה יעילה, או שאתם לא ניגשים לנתונים שלנו בצורה יעילה כדי לנצל את היתרונות של הזיכרון הזמני (cache). כדי לקבל פרטים על שיפור השימוש בזיכרון עבור סוגי הנכסים האלה, אפשר לעיין במאמרים בנושא ניתוח רוחב הפס של הזיכרון [Vertex|Texture].

אחזור נתוני מעקב של מונה דוכנים
איור 8. המונה Fetch Stalls עוקב אחרי