ניתוח השימוש ברוחב הפס של הזיכרון שבו שמורות הטקסטורות
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
רוחב הפס של הזיכרון של נתוני הטקסטורה יכול להיות צוואר בקבוק פוטנציאלי בביצועי ה-GPU של האפליקציה. יש כמה מדדים בפרופיל מערכת AGI שיכולים לעזור באבחון בעיות ברוחב הפס של זיכרון הטקסטורה.
מונים של Qualcomm Adreno
במכשירים עם מעבדי GPU מסוג Qualcomm Adreno, חלק מהמונים הבולטים כוללים:
הגשת הצעה נגדית
תיאור
קצב העברת הנתונים של קריאת הזיכרון של הטקסטורה (בבייט לשנייה)
רוחב הפס של נתוני הטקסטורה שנקראים מזיכרון חיצוני.
% Texture L1 Miss
החמצה במטמון L1 בעקבות אחזור טקסטורות.
% של מרקמים שאינם ברמת הבסיס
אחוז האחזורים של טקסטורות שהם מפות MIP.
% Anisotropic Filtered
אחוז הטקסלים שעברו סינון אניסוטרופי.
מונים של ARM Mali
במכשירים עם מעבדי ARM Mali GPU, חלק מהמונים הבולטים כוללים:
הגשת הצעה נגדית
תיאור
קריאת טקסטורה מזיכרון חיצוני
נתונים שנקראים מזיכרון חיצוני על ידי יחידת הטקסטורה, בממוצע על ליבות ההצללה.
קריאת טקסטורה ממטמון L2
נתונים שנקראים ממטמון L2 על ידי יחידת הטקסטורה, בממוצע על ליבות ההצללה.
[מידע נוסף]
כדי לחשב את רוחב הפס הכולל מתוך ממוצע הפעימות של הקריאה, מכפילים את ערך הדלפק ברוחב האפיק (בדרך כלל 16 בייט) ובמספר הכולל של ליבות ההצללה.
ניתוח נגדי
כדי למדוד את ההתנהגות של המונים האלה, מודדים את רוחב הפס הממוצע והשיא במהלך פריים יחיד של GPU, ואז מתארים באמצעות בלוק רציף של ניצול ה-GPU.
איור 1. רוחב פס של קריאת זיכרון טקסטורה לפריים יחיד, עם ערך ממוצע של 565MBps וערך שיא של 2.30GBps
מומלץ להשתמש ברוחב פס ממוצע של זיכרון לקריאת טקסטורה שלא עולה על 1GBps, וברוחב פס מקסימלי שלא עולה על 3GBps. שיעור החמצת המטמון (cache miss) של Texture L1 צריך להיות גם הוא עד 10%. ערכים גבוהים יותר של רוחב פס או של מטמון L1 עשויים להצביע על בעיות עמוקות יותר בטקסטורה, כולל:
הטקסטורות גדולות מדי: טקסטורות גדולות מגדילות את גודל החבילה, הן יקרות יותר ועשויות להקטין את יעילות המטמון.
הטקסטורות לא דחוסות: כל הטלפונים עם Android תומכים בסוגים מסוימים של דחיסת טקסטורות, בין אם מדובר ב-ETC1 או ב-ASTC. כדי להקטין את גודל החבילה ואת רוחב הפס של הטקסטורות, צריך לדחוס את הטקסטורות.
אחר: יש לקחת בחשבון מגוון בעיות אחרות שקשורות לטקסטורה, כולל טקסטורות של חזקות של 2, מיפמפינג, סינון אניסוטרופי ועוד. חלק מהבעיות האלה אפשר לזהות בפרופיל המערכת (כפי שמוסבר בהמשך), אבל כדי לזהות בעיות אחרות צריך לבצע בדיקה מעמיקה יותר.
במשחקים תלת-ממדיים עם מצלמה חופשית, נכסי הטקסטורה צריכים להשתמש ב-mipmapping, כך שלאובייקטים שנמצאים במרחק מהמצלמה יהיה רוחב פס זיכרון מופחת, יעילות טובה יותר של מטמון הטקסטורה ואיכות תמונה טובה יותר. במכשירים עם מעבדי GPU מסוג Qualcomm Adreno, ערכי המונה Non-Base Level Textures (טקסטורות שאינן ברמת הבסיס) נמוכים מ-10% בממוצע עשויים להצביע על מיפוי MIP לא מספיק.
איור 2. Non-base level textures for a single frame, with an average value of 9.2%
שיקול נוסף הוא השימוש בסינון אניזוטרופי, שמתואר על ידי מדד % Anisotropic Filtered עבור מעבדי Qualcomm Adreno, שמייצג את שיעור הטקסלים שעברו סינון אניזוטרופי. השימוש בטכנולוגיה הזו עשוי לשפר את איכות התצוגה של חלק מהמשחקים, אבל הוא גם עלול להיות יקר מאוד, ולכן צריך לשקול אותו מול העלות של ביצועי ה-GPU.
איור 3. אחוז הסינון האניסוטרופי לפריים יחיד, עם ערך ממוצע של 10.8%
הדרך הכי טובה לאבחן בעיות ספציפיות יותר היא ליצור פרופיל של מסגרת כדי לנתח נכסי טקסטורה.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Analyze texture memory bandwidth usage\n\nThe memory bandwidth of texture data can be a potential bottleneck for your\napp's GPU performance. There are some counters in an **AGI System Profile** that can help diagnose texture memory bandwidth issues.\n\nQualcomm Adreno counters\n------------------------\n\nOn devices with Qualcomm Adreno GPUs, some notable counters include:\n\n| Counter | Description |\n|---------------------------------------|------------------------------------------------------|\n| Texture Memory Read BW (Bytes/Second) | Bandwidth of texture data read from external memory. |\n| % Texture L1 Miss | L1 cache miss from fetching textures. |\n| % Non-Base Level Textures | Percentage of texture fetches that are mipmaps. |\n| % Anisotropic Filtered | Percentage of texels that are anisotropic filtered. |\n\nARM Mali counters\n-----------------\n\nOn devices with ARM Mali GPUs, some notable counters include:\n\n| Counter | Description |\n|-----------------------------------------|-------------------------------------------------------------------------------------------|\n| Texture read beats from external memory | Data beats read from external memory by the texture unit, averaged over the shader cores. |\n| Texture read beats from L2 cache | Data beats read from the L2 cache by the texture unit, averaged over the shader cores. |\n| \\[More\\] | |\n\nTo calculate the overall bandwidth from average read beats, the counter value is multiplied by the bus width (typically 16 bytes) and by the total number of shader cores.\n\nCounter analysis\n----------------\n\nTo measure the behavior of these counters, measure the average and peak\nbandwidth over the course of a single GPU frame, and then delineate with a contiguous block of GPU Utilization.\n**Figure 1.**Texture memory read bandwidth for a single frame, with average value of 565 MBps and peak value of 2.30 GBps\n\nWe recommend an average texture memory read bandwidth of no higher than 1 GBps, and a peak bandwidth no higher than 3 GBps. Texture L1 cache miss should also be no higher than 10%. Higher values for bandwidth or L1 cache may be indicators of deeper texture issues, including:\n\n- *Textures are too large*: Large textures bloat your package size, and are more expensive and may reduce cache efficiency.\n- *Textures are uncompressed*: All Android phones support some types of texture compression, whether it's ETC1 or ASTC. Textures should be compressed to reduce package size and reduce texture bandwidth.\n- *Other*: A variety of other texture concerns should be considered, including power-of-2 textures, mipmapping, anisotropic filtering, and more. Some of these may be observed from the System Profile as discussed below, whereas others may require deeper investigation.\n\nFor three-dimensional games with a free camera, texture assets should use [mipmapping](/agi/sys-trace/link), such that objects at a distance from the camera will have reduced memory bandwidth, better texture cache efficiency, and better image quality. For devices using Qualcomm Adreno GPUs, % **Non-Base Level Textures** counters lower than 10% on average may indicate inadequate mipmapping.\n**Figure 2.**Non-base level textures for a single frame, with an average value of 9.2%\n\nAnother consideration is the use of anisotropic filtering, which is described by the **% Anisotropic Filtered** counter for Qualcomm Adreno GPUs for the proportion of texels that are anisotropic filtered. While this may improve visual quality for some games, it can also be very expensive, and its use should be weighed against the GPU performance cost.\n**Figure 3.**Perecentage of anisotropic filtered for a single frame, with average value of 10.8%\n\nThe best way to diagnose more specific problems is through taking a frame\nprofile trace to analyze texture assets."]]