PART 06 · 강의 2/3

오디오 프로파일링

Unreal Insights, Audio Debug, CSV Profiling으로 오디오 성능을 분석하고 최적화합니다

01

오디오 성능 지표

모니터링해야 할 핵심 오디오 성능 메트릭

지표권장 범위의미
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 이내에 모든 소스를 믹싱해야 합니다.

02

콘솔 명령어 디버그

에디터 콘솔에서 사용할 수 있는 오디오 디버그 명령어

명령어기능
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
03

Unreal Insights 오디오 분석

Unreal Insights 툴로 오디오 CPU 사용량과 타이밍 분석

Unreal Insights는 UE5의 통합 프로파일링 도구로, 오디오 스레드의 CPU 사용량, 각 소스의 렌더링 시간, 메모리 할당을 상세히 분석할 수 있습니다.

Insights 사용 단계

-trace=audio 옵션으로 게임 실행
Unreal Insights 앱 실행
트레이스 파일 로드
Timing Insights에서 Audio 분석
커맨드라인 - 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 런타임 할당/해제 빈도
04

CSV 프로파일링과 LLM

장기간 데이터 수집과 메모리 추적

CSV 프로파일링은 장기간에 걸친 성능 데이터를 기록하여 트렌드를 분석합니다. LLM(Low Level Memory) 트래커는 오디오 메모리 사용량을 카테고리별로 추적합니다.

콘솔 - CSV 프로파일링
// CSV 프로파일링 시작 csvprofile start // 게임 플레이 (데이터 수집)... // CSV 프로파일링 종료 csvprofile stop // 결과 파일: Saved/Profiling/CSV/ // CsvToSVG.py로 그래프 생성 가능 // LLM 메모리 추적 활성화 -llm // 커맨드라인 인자 stat llm // 실시간 HUD

오디오 메모리 카테고리 (LLM)

LLM Tag내용
Audio전체 오디오 시스템 메모리
AudioMixerAudio Mixer 내부 버퍼와 구조체
AudioSoundWaves로드된 Sound Wave PCM 데이터
AudioDecompress디코딩 중인 오디오 데이터 버퍼
AudioMetaSoundMetaSound DSP 그래프 인스턴스
메모리 최적화 우선순위

일반적으로 AudioSoundWaves가 가장 큰 비중을 차지합니다. 1) 사용하지 않는 에셋을 언로드하고, 2) 긴 파일은 스트리밍으로 전환하고, 3) 압축 품질을 적절히 조정하여 메모리를 절약하세요.

SUMMARY

핵심 요약

  • 핵심 모니터링 지표: Active Voices, Audio Thread CPU, Audio Memory
  • stat AudioAudio3dVisualize로 실시간 디버깅이 가능하다
  • Unreal Insights의 Audio 트레이싱으로 소스별 렌더링 시간을 분석한다
  • CSV 프로파일링으로 장기간 트렌드를, LLM으로 카테고리별 메모리를 추적한다
  • AudioSoundWaves 메모리가 가장 크므로, 스트리밍과 압축으로 최적화한다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: stat Audio 명령어 분석

stat Audio를 활성화하고 게임플레이 중 표시되는 항목(Active Sources, Max Sources, Audio Memory, Audio Render Time 등)의 의미를 정리하세요. 사운드 50개를 동시 재생하면서 수치 변화를 관찰하세요.

실습 2: au.3dVisualize로 공간 오디오 디버깅

au.3dVisualize.Enabled=1 명령어로 3D 공간에서 오디오 소스의 위치와 Attenuation 범위를 시각화하세요. 비정상적으로 큰 Attenuation 범위나 누락된 소스를 식별하고 수정하세요.

심화 과제: 오디오 성능 자동화 테스트

Automation Test 프레임워크를 사용하여 오디오 성능 벤치마크를 자동화하세요. 특정 시나리오(대규모 전투 등)에서 Audio Thread CPU 사용률이 임계값을 초과하지 않는지 자동 검증하는 테스트를 작성하세요.