ניתוח השימוש ברוחב הפס של הזיכרון שבו שמורות הטקסטורות

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

מונים של Qualcomm Adreno

במכשירים עם מעבדי GPU מסוג Qualcomm Adreno, חלק מהמונים הבולטים כוללים:

מונה תיאור
רוחב פס לקריאת נתוני טקסטורה בזיכרון (בייט/שנייה) רוחב הפס של נתוני הטקסטורה שנקראים מהזיכרון החיצוני.
‫% Texture L1 Miss אי מציאה במטמון L1 כתוצאה מאחזור טקסטורות.
‫% של מרקמים שאינם ברמת הבסיס אחוז האחזורים של טקסטורות שהם מפות MIP.
‫% Anisotropic Filtered אחוז הטקסלים שעברו סינון אניסוטרופי.

מונים של ARM Mali

במכשירים עם מעבדי ARM Mali GPU, חלק מהמדדים הבולטים כוללים:

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

כדי לחשב את רוחב הפס הכולל מתוך ממוצע הפעימות של הקריאה, מכפילים את ערך הדלפק ברוחב האפיק (בדרך כלל 16 בייט) ובמספר הכולל של ליבות ההצללה.

ניתוח נגדי

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

רוחב פס של קריאת זיכרון טקסטורה לפריים יחיד, עם ערך ממוצע של 565MBps וערך שיא של 2.30GBps
איור 1. רוחב פס של קריאת זיכרון טקסטורה לפריים בודד, עם ערך ממוצע של 565MBps וערך שיא של 2.30GBps

מומלץ להשתמש ברוחב פס ממוצע של זיכרון טקסטורה שלא עולה על 1GBps, וברוחב פס מקסימלי שלא עולה על 3GBps. שיעור אי המציאה במטמון (cache miss) של מרקם L1 צריך להיות גם הוא עד 10%. ערכים גבוהים יותר של רוחב פס או של מטמון L1 עשויים להצביע על בעיות עמוקות יותר בטקסטורה, כולל:

  • הטקסטורות גדולות מדי: טקסטורות גדולות מגדילות את גודל החבילה, הן יקרות יותר ועשויות להקטין את יעילות המטמון.
  • הטקסטורות לא דחוסות: כל הטלפונים עם Android תומכים בסוגים מסוימים של דחיסת טקסטורות, בין אם מדובר ב-ETC1 או ב-ASTC. כדי להקטין את גודל החבילה ואת רוחב הפס של הטקסטורות, צריך לדחוס את הטקסטורות.
  • אחר: יש מגוון בעיות אחרות שקשורות לטקסטורה שכדאי לקחת בחשבון, כולל טקסטורות של חזקות של 2, מיפמפינג, סינון אניסוטרופי ועוד. חלק מהבעיות האלה אפשר לראות בפרופיל המערכת, כפי שמוסבר בהמשך, אבל כדי לפתור בעיות אחרות צריך לבצע חקירה מעמיקה יותר.

במשחקים תלת-ממדיים עם מצלמה חופשית, נכסי הטקסטורה צריכים להשתמש ב-mipmapping, כך שלאובייקטים במרחק מהמצלמה יהיה רוחב פס זיכרון מופחת, יעילות טובה יותר של מטמון הטקסטורה ואיכות תמונה טובה יותר. במכשירים עם מעבדי GPU מסוג Qualcomm Adreno, ערכים של % Non-Base Level Textures מתחת ל-10% בממוצע עשויים להצביע על מיפוי MIP לא מספיק.

מרקמים ברמה שאינה בסיסית עבור פריים יחיד, עם ערך ממוצע של 9.2%
איור 2. Non-base level textures for a single frame, with an average value of 9.2%

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

אחוז הסינון האניסוטרופי לפריימים בודדים, עם ערך ממוצע של 10.8%
איור 3. אחוז הסינון האניסוטרופי לפריים יחיד, עם ערך ממוצע של 10.8%

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