꼭짓점 메모리 대역폭 사용량 분석

버텍스 데이터의 메모리 대역폭은 게임의 GPU 성능에 병목 현상이 발생할 수 있습니다. AGI 시스템 프로필에는 꼭짓점 메모리 대역폭 문제를 진단하는 데 도움이 되는 카운터가 있습니다.

Qualcomm Adreno 카운터

Qualcomm Adreno GPU가 장착된 기기에서 주목할 만한 카운터는 다음과 같습니다.

계수기 설명
꼭짓점 메모리 읽기 외부 메모리에서 읽은 꼭짓점 데이터의 대역폭입니다.
평균 바이트/Vertex 꼭짓점 데이터의 평균 크기(바이트)입니다.
버텍스 가져오기 중단 비율 꼭짓점 데이터에서 GPU가 차단된 클록 주기의 비율입니다.

ARM 말리 카운터 (WIP)

ARM Mali GPU가 있는 기기에서 주목할 만한 카운터는 다음과 같습니다.

계수기 설명
외부 메모리에서 읽기 비트 로드/저장 로드/저장 단위에 의해 외부 메모리에서 읽은 데이터 비트로, 셰이더 코어에서 평균을 냅니다.
L2 캐시에서 읽기 비트 로드/저장 로드/저장 단위에 의해 L2 캐시에서 읽은 데이터 비트는 셰이더 코어에서 평균을 냅니다.
[더보기]

평균 읽기 비트에서 전체 대역폭을 계산하기 위해 카운터 값에 버스 너비 (일반적으로 16바이트)와 총 셰이더 코어 수를 곱합니다. [더보기]

카운터 분석

이러한 카운터의 동작을 측정하려면 단일 GPU 프레임 동안의 평균 및 최대 대역폭을 측정하면 되며, 이는 인접한 GPU 사용률 블록으로 기술할 수 있습니다.

단일 프레임의 꼭짓점 메모리 읽기 대역폭(평균 값은 327MBps, 최대 값은 1.16GBps)
그림 1: 단일 프레임의 Vertex 메모리 읽기 대역폭(평균 값은 327MBps, 최대 값은 1.16GBps)

최대 꼭짓점 메모리 읽기 대역폭은 1.5GBps 이하, 평균 대역폭은 500MBps 이하가 좋습니다. 값이 높을수록 몇 가지 일반적인 문제 중 하나를 나타냅니다.

  • 꼭짓점 크기가 너무 큼: 꼭짓점에 큰 꼭짓점 속성 또는 다량의 꼭짓점 속성이 있어 꼭짓점 음영 시간에 전반적으로 영향을 미칠 수 있습니다.
  • Vertex 속성 스트림이 분할되지 않음: Vertex 속성이 단일 버퍼로 인터리브 처리되어 캐시 효율성이 저하됩니다.
  • 프레임당 제출된 꼭짓점이 너무 많음: 복잡한 모델 또는 모델 수가 많으면 대역폭을 더 많이 차지하고 음영 처리하는 데 더 오래 걸릴 수 있습니다.

꼭짓점 크기 문제는 평균 바이트 / 꼭짓점 트랙을 통해 진단될 수도 있으며 이 트랙은 32바이트 또는 꼭짓점을 초과하지 않는 것이 좋습니다.

단일 프레임의 평균 꼭짓점 크기(평균값 31.3바이트)
그림 2: 평균 값이 31.3바이트인 단일 프레임의 평균 꼭짓점 크기

발생할 수 있는 문제를 진단하는 가장 좋은 방법은 프레임 프로필 트레이스를 사용하여 버텍스 형식을 분석하는 것입니다.