오디오 프로파일링
Unreal Insights, Audio Debug, CSV Profiling으로 오디오 성능을 분석하고 최적화합니다
오디오 성능 지표
모니터링해야 할 핵심 오디오 성능 메트릭
| 지표 | 권장 범위 | 의미 |
|---|---|---|
| Active Voices | PC: <64, 모바일: <24 | 현재 렌더링 중인 사운드 소스 수 |
| Virtual Voices | <128 | 가상화된(렌더링 중단) 소스 수 |
| Audio Thread CPU | <5% | 오디오 스레드 CPU 사용률 |
| Audio Render CPU | <10% | 오디오 렌더 스레드 CPU 사용률 |
| Audio Memory | 프로젝트별 상이 | 로드된 오디오 에셋의 메모리 사용량 |
| Decode Time | <2ms per buffer | 오디오 디코딩에 소요되는 시간 |
오디오 글리치(클릭, 팝, 드롭아웃)가 발생하면 오디오 렌더 스레드가 버퍼 기한(deadline)을 넘긴 것입니다. 1024 samples / 48kHz = ~21ms 이내에 모든 소스를 믹싱해야 합니다.
콘솔 명령어 디버그
에디터 콘솔에서 사용할 수 있는 오디오 디버그 명령어
| 명령어 | 기능 |
|---|---|
Audio3dVisualize 1 |
3D 뷰포트에 오디오 소스 위치와 감쇠 구체 시각화 |
stat Audio |
오디오 통계 (Active Voices, CPU 사용률, 메모리) |
stat AudioMixer |
Audio Mixer 상세 통계 |
stat SoundWaves |
현재 로드된 Sound Wave 에셋 목록과 메모리 |
stat SoundCues |
활성 Sound Cue 인스턴스 목록 |
au.Debug.SoloSoundClass [Name] |
특정 Sound Class만 솔로 청취 |
au.Debug.MuteSoundClass [Name] |
특정 Sound Class 뮤트 |
au.Debug.SoloSoundWave [Name] |
특정 Sound Wave만 솔로 청취 |
// 에디터 콘솔 (~키)에서 입력
// 1. 오디오 통계 HUD 표시
stat Audio
// 2. 3D 공간에 오디오 소스 시각화
Audio3dVisualize 1
// 3. 특정 Sound Class만 들리게 (나머지 뮤트)
au.Debug.SoloSoundClass SFX
// 4. 모든 오디오 뮤트 해제
au.Debug.ResetSoloMute
// 5. 최대 동시 채널 수 변경 (실시간)
au.MaxChannels 48
Unreal Insights 오디오 분석
Unreal Insights 툴로 오디오 CPU 사용량과 타이밍 분석
Unreal Insights는 UE5의 통합 프로파일링 도구로, 오디오 스레드의 CPU 사용량, 각 소스의 렌더링 시간, 메모리 할당을 상세히 분석할 수 있습니다.
Insights 사용 단계
// 에디터에서 트레이싱 활성화
// 커맨드라인 인자 추가:
-trace=cpu,audio,memory -tracehost=localhost
// 또는 콘솔 명령어로 런타임 활성화
Trace.Start audio,cpu
Trace.Stop
분석 포인트
| 확인 항목 | 위치 | 주의 기준 |
|---|---|---|
| Audio Thread 시간 | Timing Insights > Audio Thread | 프레임당 2ms 초과 시 주의 |
| Source 렌더링 시간 | Audio Thread > RenderAudio | 단일 소스가 0.5ms 초과 시 주의 |
| 디코딩 시간 | Audio Thread > Decode | 스트리밍 에셋의 디코딩 병목 |
| 메모리 할당 | Memory Insights > Audio | 런타임 할당/해제 빈도 |
CSV 프로파일링과 LLM
장기간 데이터 수집과 메모리 추적
CSV 프로파일링은 장기간에 걸친 성능 데이터를 기록하여 트렌드를 분석합니다. LLM(Low Level Memory) 트래커는 오디오 메모리 사용량을 카테고리별로 추적합니다.
// CSV 프로파일링 시작
csvprofile start
// 게임 플레이 (데이터 수집)...
// CSV 프로파일링 종료
csvprofile stop
// 결과 파일: Saved/Profiling/CSV/
// CsvToSVG.py로 그래프 생성 가능
// LLM 메모리 추적 활성화
-llm // 커맨드라인 인자
stat llm // 실시간 HUD
오디오 메모리 카테고리 (LLM)
| LLM Tag | 내용 |
|---|---|
Audio | 전체 오디오 시스템 메모리 |
AudioMixer | Audio Mixer 내부 버퍼와 구조체 |
AudioSoundWaves | 로드된 Sound Wave PCM 데이터 |
AudioDecompress | 디코딩 중인 오디오 데이터 버퍼 |
AudioMetaSound | MetaSound DSP 그래프 인스턴스 |
일반적으로 AudioSoundWaves가 가장 큰 비중을 차지합니다. 1) 사용하지 않는 에셋을 언로드하고, 2) 긴 파일은 스트리밍으로 전환하고, 3) 압축 품질을 적절히 조정하여 메모리를 절약하세요.
핵심 요약
- 핵심 모니터링 지표: Active Voices, Audio Thread CPU, Audio Memory
- stat Audio와 Audio3dVisualize로 실시간 디버깅이 가능하다
- Unreal Insights의 Audio 트레이싱으로 소스별 렌더링 시간을 분석한다
- CSV 프로파일링으로 장기간 트렌드를, LLM으로 카테고리별 메모리를 추적한다
- AudioSoundWaves 메모리가 가장 크므로, 스트리밍과 압축으로 최적화한다
도전 과제
배운 내용을 직접 실습해보세요
stat Audio를 활성화하고 게임플레이 중 표시되는 항목(Active Sources, Max Sources, Audio Memory, Audio Render Time 등)의 의미를 정리하세요. 사운드 50개를 동시 재생하면서 수치 변화를 관찰하세요.
au.3dVisualize.Enabled=1 명령어로 3D 공간에서 오디오 소스의 위치와 Attenuation 범위를 시각화하세요. 비정상적으로 큰 Attenuation 범위나 누락된 소스를 식별하고 수정하세요.
Automation Test 프레임워크를 사용하여 오디오 성능 벤치마크를 자동화하세요. 특정 시나리오(대규모 전투 등)에서 Audio Thread CPU 사용률이 임계값을 초과하지 않는지 자동 검증하는 테스트를 작성하세요.