CPU Profiler 상세
stat 명령어 체계와 Task Graph Insights로 CPU 병목을 식별합니다
stat 명령어 체계
가장 빠른 성능 확인 방법
stat 명령어는 게임 실행 중 실시간으로 성능 데이터를 화면에 표시합니다. 가장 기본적이고 빠른 프로파일링 방법입니다.
🎯 stat unit
기본 성능 개요
Frame, Game, Draw, GPU, RHIT, DynRes 시간
📈 stat unitgraph
시각적 그래프
stat unit + 실시간 그래프
🎮 stat game
게임 로직
틱, 블루프린트, 물리 시간
🐌 stat slow
느린 작업
임계값 초과 작업 목록
# 기본 성능 확인 (가장 많이 사용)
stat unit
# 프로파일 기록 시작/중지
stat startfile
stat stopfile
# 저장 위치: Saved/Profiling/*.ue4stats
병목 식별 방법
stat unit 결과 해석하기
stat unit의 결과에서 가장 높은 값이 병목입니다.
병목 유형별 진단
증상: Game 값이 가장 높음
원인: BP, Tick, 물리, AI
해결: Part 2 참조
증상: Draw 값이 가장 높음
원인: Draw Call, 머티리얼
해결: Part 3 참조
증상: GPU 값이 가장 높음
원인: 셰이더, 오버드로우
해결: Part 3 참조
60 FPS = 16.66ms 프레임 버짓. Game, Draw, GPU 모두 이 값을 넘지 않아야 합니다. 가장 높은 영역을 먼저 최적화하세요.
상세 stat 명령어
특정 시스템 분석
lightrendering
shadowrendering
initviews
physics
ai
particles
memoryplatform
streaming
llm
stat scenerendering # 씬 렌더링 시간
stat lightrendering # 조명 렌더링 시간
stat shadowrendering # 그림자 렌더링 시간
stat initviews # 뷰 초기화, 가시성 계산
stat anim # 애니메이션 시스템
stat physics # 물리 시뮬레이션
stat ai # AI 시스템
stat particles # 파티클 시스템
stat audio # 오디오 시스템
stat memory # 메모리 사용량 개요
stat memoryplatform # 플랫폼별 메모리
stat streaming # 텍스처 스트리밍
stat llm # Low-Level Memory Tracker
여러 stat 명령어를 동시에 활성화할 수 있습니다. 예: stat unit + stat game을 함께 사용하면 Game Thread의 세부 내역을 확인할 수 있습니다.
Task Graph Insights
병렬 작업 분석
UE5의 많은 작업은 Task Graph를 통해 병렬 처리됩니다. Unreal Insights에서 이를 분석할 수 있습니다.
Launched → Started 간격이 큼
원인: 스레드 경합
Started → Finished 간격이 큼
원인: 해당 작업 최적화 필요
# Task Graph 데이터를 포함한 트레이스
-trace=counters,cpu,frame,bookmark,gpu
# Unreal Insights에서 Tasks 탭이 표시됨
핵심 요약
- stat unit으로 병목 식별: Game/Draw/GPU 중 가장 높은 값이 병목
- 60 FPS = 16.66ms 프레임 버짓, 모든 스레드가 이 값 이하여야 함
- Game Thread Bound: Tick, 블루프린트, 물리 최적화 필요
- stat startfile/stopfile로 프로파일 기록하여 상세 분석
- Task Graph Insights로 병렬 작업의 대기 시간과 실행 시간 분석
다음 강의에서는 GPU Profiler와 RenderDoc, PIX, NSight 등 외부 도구를 활용한 GPU 병목 분석을 다룹니다.
도전 과제
배운 내용을 직접 실습해보세요
stat unit, stat game, stat scenerendering을 각각 실행하여 Game Thread, Draw Thread, GPU 시간을 비교하세요. 어떤 Thread가 병목인지 판단하고 근거를 정리합니다.
Unreal Insights의 Timing View에서 가장 긴 Game Thread 함수를 찾고, Call Tree를 탐색하여 병목의 근본 원인(Tick, Physics, Animation 등)을 식별하세요.
csvprofile 커맨드렛을 사용하여 자동화된 성능 테스트를 구축하세요. 10분간 게임플레이를 CSV로 기록하고, Excel/Python으로 프레임 시간 분포 그래프를 생성하여 P95 프레임 타임이 16.66ms 이하인지 검증합니다.