Анализ использования пропускной способности памяти вершин
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Пропускная способность памяти для данных вершин может стать потенциальным узким местом для производительности графического процессора вашей игры. В профиле системы AGI есть несколько счетчиков, которые могут помочь диагностировать проблемы с пропускной способностью памяти вершин.
Счетчики Qualcomm Adreno
На устройствах с графическими процессорами Qualcomm Adreno некоторые заметные счетчики включают в себя:
Прилавок
Описание
Чтение памяти вершин
Пропускная способность данных вершин, считываемых из внешней памяти.
Среднее число байт/вершина
Средний размер данных вершин в байтах.
% остановки выборки вершин
Процент тактовых циклов, в которых графический процессор блокируется при обработке данных вершин.
Счетчики ARM Мали (НЗП)
На устройствах с графическими процессорами ARM Mali к некоторым заметным счетчикам относятся:
Прилавок
Описание
Загрузка/сохранение битов чтения из внешней памяти
Биты данных, считываемые из внешней памяти модулем загрузки/сохранения, усредняются по шейдерным ядрам.
Загрузка/сохранение тактов чтения из кэша L2
Биты данных, считываемые из кэша L2 модулем загрузки/сохранения, усредняются по ядрам шейдеров.
[Более]
Чтобы вычислить общую пропускную способность на основе средних тактов чтения, значение счетчика умножается на ширину шины (обычно 16 байт) и на общее количество ядер шейдера. [Более]
Встречный анализ
Чтобы измерить поведение этих счетчиков, вы можете измерить среднюю и пиковую пропускную способность в течение одного кадра графического процессора, который можно определить с помощью непрерывного блока использования графического процессора .
Рисунок 1. Пропускная способность чтения памяти вершин для одного кадра со средним значением 327 МБ/с и пиковым значением 1,16 ГБ/с.
Мы рекомендуем пиковую пропускную способность чтения вершинной памяти не более 1,5 ГБ/с и среднюю пропускную способность не более 500 МБ/с. Более высокие значения указывают на одну из нескольких распространенных проблем:
Размер вершины слишком велик : вершины могут иметь большие атрибуты вершин или большое количество атрибутов вершин, что в целом влияет на время затенения вершин.
Потоки атрибутов вершин не разделяются : атрибуты вершин чередуются в одном буфере, что снижает эффективность кэша.
Слишком много вершин отправлено на кадр . Сложные модели и/или большое количество моделей могут занимать большую полосу пропускания и дольше закрашиваться.
Проблемы с размером вершин также можно диагностировать с помощью дорожки «Средние байты/вершины» , размер которой мы рекомендуем не превышать 32 байтов или вершин.
Рисунок 2. Средний размер вершины для одного кадра, среднее значение 31,3 байта.
Лучший способ диагностировать, с какой из этих проблем вы можете столкнуться, — это провести трассировку профиля кадра для анализа форматов вершин .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 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-29 UTC."],[],[],null,["# Analyze vertex memory bandwidth usage\n\nThe memory bandwidth of vertex data can be a potential bottleneck for your game's GPU performance. There are some counters in an AGI system profile that can help diagnose vertex 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| Vertex Memory Read | Bandwidth of vertex data read from external memory. |\n| Average Bytes/Vertex | Average size of vertex data, in bytes. |\n| % Vertex Fetch Stall | Percentage of clock cycles where the GPU is blocked on vertex data. |\n\nARM Mali counters (WIP)\n-----------------------\n\nOn devices with ARM Mali GPUs, some notable counters include:\n\n| Counter | Description |\n|--------------------------------------------|----------------------------------------------------------------------------------------------|\n| Load/store read beats from external memory | Data beats read from external memory by the load/store unit, averaged over the shader cores. |\n| Load/store read beats from L2 cache | Data beats read from the L2 cache by the load/store 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. \\[More\\]\n\nCounter analysis\n----------------\n\nTo measure the behavior of these counters, you can measure the average and peak\nbandwidth over the course of a single GPU frame, which can be delineated with a\ncontiguous block of **GPU Utilization**.\n**Figure 1:**Vertex memory read bandwidth for a single frame, with an average value of 327 MBps and a peak value of 1.16 GBps\n\nWe recommend a peak vertex memory read bandwidth of no higher than 1.5 GBps, and an average bandwidth no higher than 500 MBps. Higher values are indicators of one of a few common issues:\n\n- **Vertex size is too big**: Vertices may have large vertex attributes or a large number of vertex attributes, affecting vertex shading time at large.\n- **Vertex attribute streams are not split**: Vertex attributes are interleaved into a single buffer, reducing cache efficiency.\n- **Too many vertices submitted per frame**: Complex models and/or a large number of models may take up greater bandwidth and take longer to shade.\n\nVertex size issues may also be diagnosed through the **Average Bytes / Vertex**\ntrack, which we recommend to be no higher than 32 bytes or verteces.\n**Figure 2:**Average vertex size for a single frame, with an average value of 31.3 bytes\n\nThe best way to diagnose which of these problems you may be facing is by taking a frame profile trace to [analyze vertex formats](/agi/frame-trace/vertex-formats)."]]