버텍스 데이터의 메모리 대역폭은 게임의 GPU 성능에 병목 현상이 발생할 수 있습니다. AGI 시스템 프로필에는 꼭짓점 메모리 대역폭 문제를 진단하는 데 도움이 되는 카운터가 있습니다.
Qualcomm Adreno 카운터
Qualcomm Adreno GPU가 장착된 기기에서 주목할 만한 카운터는 다음과 같습니다.
계수기 | 설명 |
---|---|
꼭짓점 메모리 읽기 | 외부 메모리에서 읽은 꼭짓점 데이터의 대역폭입니다. |
평균 바이트/Vertex | 꼭짓점 데이터의 평균 크기(바이트)입니다. |
버텍스 가져오기 중단 비율 | 꼭짓점 데이터에서 GPU가 차단된 클록 주기의 비율입니다. |
ARM 말리 카운터 (WIP)
ARM Mali GPU가 있는 기기에서 주목할 만한 카운터는 다음과 같습니다.
계수기 | 설명 |
---|---|
외부 메모리에서 읽기 비트 로드/저장 | 로드/저장 단위에 의해 외부 메모리에서 읽은 데이터 비트로, 셰이더 코어에서 평균을 냅니다. |
L2 캐시에서 읽기 비트 로드/저장 | 로드/저장 단위에 의해 L2 캐시에서 읽은 데이터 비트는 셰이더 코어에서 평균을 냅니다. |
[더보기] |
평균 읽기 비트에서 전체 대역폭을 계산하기 위해 카운터 값에 버스 너비 (일반적으로 16바이트)와 총 셰이더 코어 수를 곱합니다. [더보기]
카운터 분석
이러한 카운터의 동작을 측정하려면 단일 GPU 프레임 동안의 평균 및 최대 대역폭을 측정하면 되며, 이는 인접한 GPU 사용률 블록으로 기술할 수 있습니다.
![단일 프레임의 꼭짓점 메모리 읽기 대역폭(평균 값은 327MBps, 최대 값은 1.16GBps)](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_vert_bw.png?authuser=19&hl=ko)
최대 꼭짓점 메모리 읽기 대역폭은 1.5GBps 이하, 평균 대역폭은 500MBps 이하가 좋습니다. 값이 높을수록 몇 가지 일반적인 문제 중 하나를 나타냅니다.
- 꼭짓점 크기가 너무 큼: 꼭짓점에 큰 꼭짓점 속성 또는 다량의 꼭짓점 속성이 있어 꼭짓점 음영 시간에 전반적으로 영향을 미칠 수 있습니다.
- Vertex 속성 스트림이 분할되지 않음: Vertex 속성이 단일 버퍼로 인터리브 처리되어 캐시 효율성이 저하됩니다.
- 프레임당 제출된 꼭짓점이 너무 많음: 복잡한 모델 또는 모델 수가 많으면 대역폭을 더 많이 차지하고 음영 처리하는 데 더 오래 걸릴 수 있습니다.
꼭짓점 크기 문제는 평균 바이트 / 꼭짓점 트랙을 통해 진단될 수도 있으며 이 트랙은 32바이트 또는 꼭짓점을 초과하지 않는 것이 좋습니다.
![단일 프레임의 평균 꼭짓점 크기(평균값 31.3바이트)](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_bytes_per_vert.png?authuser=19&hl=ko)
발생할 수 있는 문제를 진단하는 가장 좋은 방법은 프레임 프로필 트레이스를 사용하여 버텍스 형식을 분석하는 것입니다.