개발자는 언리얼 엔진(UE) 프로젝트를 프로파일링하기 위해 게임을 에디터에서 플레이(PIE) 모드로 실행하는 도중 다음과 같은 통계 명령(stat commands) 을 콘솔에 입력할 수 있습니다.
원본 이미지를 보려면 클릭하세요.
에디터의 통계(Stat) 메뉴를 찾으려면 뷰포트 세팅(Viewport Setting) 버튼 옆의 드롭다운 화살표를 선택합니다.
원본 이미지를 보려면 클릭하세요.
LOG
명령과 함께 에디터를 실행하면 개발자는 통계 덤프(dump) 에서 유용한 정보를 기록할 수 있습니다. 그렇게 하려면 에디터(게임 프로젝트)를 LOG
명령과 함께 실행하여 로그 파일 생성을 활성화합니다(예: UnrealEditor.exe -silent LOG=MyLog.txt
).
통계 명령 테이블
stat
뒤에 한 칸을 띄우고 다음 명령을 입력하여 명령을 활성화합니다.
명령 이름 | 명령 설명 |
---|---|
AI | 퍼셉션 시스템 및 전반적인 AI 퍼포먼스 정보를 표시합니다. |
AI_EQS | 인바이런먼트 쿼리 시스템(Environment Query System, EQS)의 퍼포먼스, 디버그, 메모리 통계를 표시합니다. |
AIBehaviorTree | 비헤이비어 트리의 퍼포먼스 및 메모리 통계를 표시합니다. |
AICrowd | 크라우드 매니저의 퍼포먼스 및 스텝 정보를 표시합니다. |
Anim | 스킨을 입힌 메시가 틱당 계산되는 데 걸리는 시간을 표시합니다. |
AsyncLoad / AsyncLoadGameThread | 비동기 로딩 퍼포먼스 통계를 표시합니다. |
Audio / AudioThreadCommands | 웨이브 인스턴스나 버퍼 퍼포먼스 등의 오디오 통계입니다. |
Canvas | 타일, 윤곽선, 텍스트 등 캔버스 유저 인터페이스 항목의 퍼포먼스 정보를 표시하는 캔버스 통계입니다. |
Collision / CollisionTags | 콜리전의 퍼포먼스, 디버그, 메모리 정보를 표시합니다. |
CommandListMarkers | 명령 목록과 퍼포먼스 정보를 함께 표시합니다. |
Component | 컴포넌트 목록과 퍼포먼스 정보를 함께 표시합니다. |
Compression | 압축 통계를 표시합니다. |
CPULoad | CPU 활용을 표시합니다. |
CPUStalls | CPU 스톨 관련 정보를 표시합니다. |
D3D11RHI | Direct3D 11 RHI 통계를 표시합니다. |
DDC | 파생 데이터 캐시(Derived Data Cache, DDC) 통계를 표시합니다. |
DumpHitches | t.HitchFrameTimeThreshold 를 바탕으로 '히치'가 탐지될 때마다 로그에 기록됩니다. |
Dumpticks | 틱 함수 관련 정보를 덤프합니다. |
Engine | 프레임 시간, 렌더링되는 트라이앵글 수 카운터 등 일반적인 렌더링 통계를 표시합니다. |
FPS | 초당 프레임 수(FPS) 카운터를 표시합니다. |
Game | 다양한 게임플레이 틱이 얼마나 걸리는지 피드백을 제공합니다. |
GameplayTags | 게임플레이 태그 정보를 표시합니다. |
GC | 가비지 컬렉션 통계를 표시합니다. |
GeometryCache | 지오메트리 캐시 시스템의 퍼포먼스 및 메모리 통계를 표시합니다. |
GPU | 프레임 GPU 통계를 표시합니다. |
GPUParticles | GPU 파티클의 퍼포먼스 정보를 표시합니다. |
Help | 모든 통계 명령을 목록으로 표시합니다. |
Hitches | t.HitchFrameTimeThreshold 를 설정하여 히치로 간주될 시간(단위: 초)을 정의합니다. 모든 히치를 로그/Visual Studio 디버그로 덤프합니다. 예: [0327.87] LogEngine:Warning: HITCH @ 00m:01s:643ms,1643,72,2. |
IMEWindows | Windows Text Input Method System의 정보를 표시합니다. |
InitViews | 비저빌리티 컬링이 얼마나 걸렸는지, 얼마나 효율적이었는지에 관한 정보를 표시합니다. 표시되는 섹션 수는 렌더링 스레드 퍼포먼스와 관련하여 단연 중요한 통계입니다. 이는 STAT INITVIEWS 아래 표시되는 스태틱 메시 엘리먼트에 의해 좌우됩니다. 그러나 표시되는 다이내믹 프리미티브 또한 영향을 미칩니다. |
KismetCompiler | 키즈멧 컴파일러 정보를 표시합니다. |
KismetReinstancer | 키즈멧 리인스턴서 정보를 표시합니다. |
Levels | 레벨 스트리밍 정보를 표시합니다. |
LightRendering | 라이팅 및 새도 렌더링에 얼마나 걸리는지 피드백을 제공합니다. |
LinkerCount | 링커 카운터를 표시합니다. |
LinkerLoad | 링커 로드 정보를 표시합니다. |
List | 통계 또는 저장된 세트 그룹이나 지정된 그룹 내의 통계를 사용과 함께 표시합니다. <Groups/Sets/Group><br> |
LLM | 로우 레벨 메모리 트래커(Low Level Memory Tracker, LLM) 카운터를 표시합니다. |
LLMFull | 전체 LLM 카운터 그룹을 표시합니다. |
LLMOverhead | LLM 오버헤드 카운터를 표시합니다. |
LLMPlatform | LLM 플랫폼 카운터를 표시합니다. |
LoadTime / LoadTimeVerbose | 로드 시간 퍼포먼스 정보를 표시합니다. |
MapBuildData | 맵 빌드 데이터를 표시합니다. |
MathVerbose | 수학 연산의 퍼포먼스 정보를 표시합니다. |
Memory | 언리얼 엔진의 여러 서브시스템에서 사용되는 메모리 사용량 통계를 표시합니다. |
MemoryAllocator | 메모리 할당 정보를 표시합니다. |
MemoryPlatform | 메모리 플랫폼 정보를 표시합니다. |
MemoryStaticMesh | 스태틱 메시의 메모리 통계를 표시합니다. |
NamedEvents | 외부 프로파일러를 위해 명명된 이벤트를 활성화합니다. |
Navigation | 내비게이션 시스템의 퍼포먼스 및 메모리 정보를 표시합니다. |
NET | 네트워크 시스템 통계를 표시합니다. |
Object / ObjectVerbose | 오브젝트 메모리 및 퍼포먼스 정보를 표시합니다. |
Online | 온라인 시스템 카운터를 표시합니다. |
Pakfile | Pakfile 시스템 통계를 표시합니다. |
ParallelCommandListMarkers | 병렬 명령 목록을 퍼포먼스 정보와 함께 표시합니다. |
Particles | 파티클 시스템 퍼포먼스 정보를 표시합니다. |
Physics | 피직스 퍼포먼스 통계를 표시합니다. |
PhysXTasks | PhysX 태스크 정보를 표시합니다. |
PhysXVehicleManager | PhysX 비히클 매니저 통계를 표시합니다. |
PlayerController | 플레이어 컨트롤러 퍼포먼스 정보를 표시합니다. |
Quick | 전체 퍼포먼스 데이터 그룹을 빠르게 표시합니다. |
RenderTargetPool | 렌더 타깃 풀의 메모리 및 퍼포먼스 통계를 표시합니다. |
RenderThreadCommands | 렌더 스레드 명령을 퍼포먼스 정보와 함께 목록으로 표시합니다. |
RHI | RHI 메모리 및 퍼포먼스 통계를 표시합니다. |
RHICMDLIST | RHI 명령 목록을 퍼포먼스 통계와 함께 표시합니다. |
SceneMemory | 씬 메모리 카운터를 표시합니다. |
SceneRendering | 일반 렌더링 통계를 표시합니다. 렌더링 프로세스에서 퍼포먼스가 느린 일반 영역을 찾는 용도로 쓰기에 좋습니다. |
SceneUpdate | 월드 업데이트 관련 정보를 표시합니다. 씬에서 라이트를 추가, 업데이트, 제거에 걸리는 시간과 프리미티브를 추가 및 제거하는 데 걸리는 시간을 포함합니다. |
Script | 스크립트 통계를 표시합니다. |
ShaderCompiling | 셰이더 컴파일링 정보를 표시합니다. |
Shaders | 셰이더 압축 통계를 표시합니다. |
ShadowRendering | 섀도 계산이 얼마나 걸리는지 표시합니다. 실제 섀도 렌더링 시간은 stat LightRendering 명령에서 따로 다룹니다. |
Slate / SlateVerbose | 슬레이트 퍼포먼스 통계를 표시합니다. |
SlateMemory | 슬레이트 메모리 카운터를 표시합니다. |
SoundCues | 활성화된 SoundCues를 표시합니다. |
SoundMixes | 활성화된 SoundMixes를 표시합니다. |
Sounds |
|
SoundWaves | 활성화된 SoundWaves를 표시합니다. |
SplitScreen | 분할 화면 정보를 표시합니다. |
StartFile | 통계 캡처를 시작하고 프로파일링 디렉터리에 새 파일을 만듭니다. 이 작업을 중지하려면 stat StopFile 명령을 사용합니다. |
StatSystem | 통계 시스템의 퍼포먼스 및 메모리 정보를 표시합니다. |
StopFile | stat StartFile 명령으로 시작된 통계 캡처를 마무리하고 Profiling 디렉터리에 생성된 파일을 닫습니다. |
Streaming | 스트리밍 에셋의 기본 통계를 표시합니다. 메모리 스트리밍 텍스처가 사용량, 씬에 있는 스트리밍 텍스처의 양 등이 표시됩니다. |
StreamingDetails | 스트리밍 관련 추가 통계입니다. 예컨대 일반 텍스처 스트리밍을 보다 구체적인 그룹(라이트맵, 스태틱 텍스처, 다이내믹 텍스처)으로 분할합니다. |
StreamingOverview | 스트리밍 에셋 관련 통계 개요를 표시합니다. |
TargetPlatform | 타깃 플랫폼 정보를 표시합니다. |
TaskGraphTasks | TaskGraph 태스크의 퍼포먼스 데이터를 표시합니다. |
Text | 텍스트의 퍼포먼스 통계를 표시합니다. |
TextureGroup | 텍스처 그룹 메모리 카운터를 표시합니다. |
Threading | 스레딩 정보를 표시합니다. |
ThreadPoolAsyncTasks | ThreadPool 비동기 태스크 카운터를 표시합니다. |
Threads | 스레드 정보를 표시합니다. |
Tickables | 틱 가능 항목의 퍼포먼스 통계를 표시합니다. |
TickGroups | 틱 그룹의 퍼포먼스 통계를 표시합니다. |
UI | UI 퍼포먼스 정보를 표시합니다. |
Unit | 전반적인 프레임 시간과 게임 스레드, 렌더링 스레드, GPU 시간입니다. 시작하기에 좋은 통계 명령입니다. 개발자가 프로파일링 작업에 집중하도록 돕기 때문입니다. |
UnitGraph | 통계 유닛 데이터가 있는 그래프를 보려면 stat Raw 를 사용하여 필터링되지 않은 데이터를 표시합니다. |
UObjectHash | 해시된 UObject 인포메이션을 표시합니다. |
UObjects | 게임 내 UObject의 퍼포먼스 통계를 표시합니다. |
명령 선택
레벨
stat levels 명령은 퍼시스턴트 레벨 아래에 그룹화된 레벨 스트리밍 정보를 표시합니다.
사용 사례
이 명령은 현재 활성 레벨 목록과 그 표시 여부 및 사전 로딩, 로딩, 언로딩 여부를 보려는 개발자에게 유용합니다. 또한 이 명령은 요청 로드부터 완료 로드까지 몇 초가 걸렸는지 표시합니다.
사용
스트리밍 레벨 정보를 표시하려면 stat levels
를 PIE 콘솔(PIE Console) 에 입력합니다. 레벨이 어떤 스테이트에 있는지 판정하려면 아래의 레벨 컬러 코드 테이블을 참조합니다.
레벨 컬러 코드
컬러 코드 | 설명 |
---|---|
녹색 | 레벨이 로드되어 있고 표시됩니다. |
빨간색 | 레벨이 언로드되어 있습니다. |
주황색 | 레벨이 표시되는 프로세스를 거치고 있습니다. |
노란색 | 레벨이 로드되었으나 표시되지 않습니다. |
파란색 | 레벨이 언로드되었으나 여전히 메모리에 남아 있습니다. 가비지 컬렉션이 일어나면 클린업될 것입니다. |
보라색 | 레벨이 사전 로드 중입니다. |
StartFile
원본 이미지를 보려면 클릭하세요.
stat startfile 명령은 통계 캡처를 시작하고 Profiling 디렉터리에 새 파일을 생성합니다. 일반적으로 엔진은 통계 캡처를 <프로젝트_디렉터리>\Saved\Profiling\UnrealStats
폴더에 저장합니다.
사용 사례
세션 프론트엔드 프로파일러(Session Frontend Profiler) 로 프로젝트 퍼포먼스를 프로파일링하려면 통계 샘플을 캡처하고 *.uestats
파일에 로깅합니다.
사용
통계를 캡처하고 *.uestats
파일에 로그하려면 stat startfile
명령을 PIE 콘솔 에 입력합니다.
StartFile
이 대형 uestats
파일로 디스크를 가득 채우지 않게 하려면 stat StopFile
을 실행합니다. 또한 PIE 모드가 닫혀도 StartFile
은 백그라운드에서 계속 실행되며, 그 결과 로그 파일의 용량이 과도하게 커질 수 있습니다. 프로젝트 퍼포먼스 로깅을 중단하려면 StopFile
명령을 사용해야 합니다.
통계 로드하기
통계를 세션 프론트엔드 프로파일러 로 로드하려면 다음 단계를 따릅니다.
- 언리얼 에디터 메뉴 바(Unreal Editor Menu Bar) 에서 툴(Tools) >세션 프론트엔드(Session Frontend) 를 선택합니다.
- 세션 프론트엔드 가 열린 상태에서 프로파일러(Profiler) 탭을 선택합니다.
- 프로파일링할 파일을 열려면 로드(Load) 를 선택합니다. 파일 탐색기(File Explorer) 창이 표시되며, 이 창에서 프로파일링할
uestats
파일을 선택하여 열 수 있습니다. uestats
파일을 선택한 다음 열기(Open) 를 눌러 파일을 로드합니다.
최종 결과
세션 프론트엔드 가 파일을 로드한 뒤 캡처 데이터를 프로파일러 에서 보면서 추가 분석을 수행할 수 있습니다. 세션 프론트엔드 에서 프로파일 캡처를 검토하는 방법에 대한 상세 정보는 프로파일러 툴 레퍼런스(Profiler Tool Reference)를 참조하세요.
StopFile
원본 이미지를 보려면 클릭하세요.
stat stopfile 명령은 StartFile 명령으로 시작된 통계 캡처를 중지합니다. 또한 StopFile 명령은 Profiling
디렉터리에 생성된 파일을 닫습니다.
사용 사례
StartFile이 대형 uestats
파일로 디스크를 가득 채우지 않게 하려면 stat StopFile 을 실행합니다. 또한 PIE 모드가 닫혀도 StartFile은 백그라운드에서 계속 실행되며, 그 결과 로그 파일의 용량이 과도하게 커질 수 있습니다. 프로젝트 퍼포먼스 로깅을 중단하려면 StopFile 명령을 사용해야 합니다.
사용
통계 캡처 및 로그를 중지하려면 stat stopfile
명령을 PIE 콘솔 에 입력합니다.
Unit
사용 사례
일반적으로 개발자는 게임 스레드, 드로 (렌더링) 스레드 또는 GPU 에 병목 구간(퍼포먼스에 부정적 영향)이 있는지 판정하고자 합니다.
원본 이미지를 보려면 클릭하세요.
stat unit 명령은 프로젝트의 프레임, 게임, 드로, GPU, RHIT, DynRes 스레드의 퍼포먼스 정보를 표시합니다.
통계
이름 | 설명 |
---|---|
프레임 | 프레임 시간은 게임의 프레임 하나를 생성하는 데 걸린 총 시간입니다. 게임 스레드와 드로 스레드는 둘 다 한 프레임이 끝나기 전에 동기화되므로, 프레임 시간은 다음 스레드 중 하나의 시간과 가까운 경우가 많습니다. |
게임 | 프레임 시간이 게임 시간에 가까운 경우 게임 스레드 때문에 게임 퍼포먼스에 병목 구간(부정적인 영향)이 발생하는 것일 수 있습니다. |
드로 | 프레임 시간이 드로 시간에 가까운 경우 렌더링 스레드 때문에 게임 퍼포먼스에 병목 구간이 발생하는 것일 수 있습니다. |
GPU | GPU 시간은 비디오 카드가 씬을 렌더링할 때 얼마나 오래 걸리는지 측정합니다. GPU 시간은 프레임과 동기화되므로 프레임 시간과 유사할 확률이 높습니다. |
RHIT | RHI 스레드 시간은 보통 프레임과 동기화되므로 프레임 시간과 유사할 확률이 높습니다. |
DynRes | 지원되고 활성화된 경우 동적 해상도는 1차 스크린 퍼센티지 X 2차 스크린 퍼센티지를 표시합니다. |
사용
프로젝트의 병목 구간을 판정하려면 디버그 빌드가 아닌 빌드에서 게임을 실행하고 stat unit
명령을 PIE 콘솔 에 입력합니다.