프로파일 판독 순서

Frame과 가까운 축을 찾고, 해결책은 다음 도구에서 고른다

`stat unit`은 자동 처방표가 아니다. Frame은 결과 시간이고, Game, Draw, RHIT, GPU 중 어느 값이 Frame을 붙잡는지 본 뒤 Insights나 profilegpu로 실제 호출 위치를 확인한다.

Game Thread Draw 제출 RHI 동기화 GPU 패스
Frame 가장 긴 막대가 아니라 전체 결과와 같이 움직이는 축을 찾는다.
전환 Game이면 Insights, GPU면 profilegpu처럼 원인 도구를 바꾼다.
재측정 수정 뒤 병목이 다른 축으로 이동했는지 같은 장면에서 다시 본다.
Game Thread

호출 빈도와 Game Thread 전용 작업을 분리한다

Tick을 끄는 것만 보지 말고 GC, AI service, animation update, physics request, UObject 접근을 Insights에서 확인한다.

도구Unreal Insights
조정tick interval, async, data layout
Draw / Render

드로우 제출과 상태 변경을 줄인다

Instancing과 Merge는 조건부 처방이다. material section, dynamic material, component 수, occlusion 단위를 함께 본다.

도구stat scene rendering
조정ISM/HISM, HLOD, state churn
GPU

패스와 픽셀 비용을 GPU 도구로 다시 본다

GPU 값은 idle이나 sync가 섞일 수 있다. 해상도 스케일 테스트와 profilegpu로 shadow, post, translucency를 분리한다.

도구profilegpu, stat gpu
조정screen %, shadows, overdraw
RHIT / Sync

그래픽 API 제출과 대기를 따로 추적한다

RHIT가 길면 리소스 전환, command submission, render thread와 GPU 사이 동기화 대기 가능성을 캡처로 확인한다.

도구Insights timing
조정resource lifetime, batching
01

기준 캡처

같은 맵, 카메라, 입력, resolution scale에서 stat unit과 캡처를 남긴다.

02

Frame 근접 축 선택

가장 큰 숫자보다 Frame과 같이 움직이는 축을 우선 후보로 둔다.

03

원인 도구 전환

Game은 Insights, GPU는 profilegpu, Draw/RHIT는 렌더 제출 신호를 본다.

04

이동한 병목 확인

수정 뒤 다른 축이 Frame을 붙잡는지 다시 기록한다.

Frame

Frame은 고칠 대상이 아니라 결과다

Game, Draw, RHIT, GPU 중 어떤 축과 맞물려 움직이는지 본다.

Collision

Use Complex as Simple은 단순화가 아니다

시뮬레이션 대상은 단순 콜리전과 primitive component를 우선한다.

Thread

Async는 UObject 제약을 넘지 않는다

계산은 분리해도 Actor/Component 변경은 Game Thread로 되돌린다.

Shader

셰이더 실행 비용은 GPU에서 확인한다

Render Thread 병목과 pixel shader 비용을 같은 문제로 묶지 않는다.