본문 바로가기

Dev/Unity

[Unity] Profiling 프로파일링 - 모바일 게임 성능 최적화 팁 (1)

반응형

 

 


Profiling - 모바일 게임 성능 최적화 팁 (1)

Unity 공식 document인 "Optimize your mobile game performance" 를 정리한 내용입니다.

 

 

 

 

 

 

1. Unity Profiler가 무엇인가?

Application의 성능 데이터(CPU, Memory, Renderer, ...)를 알려주는 툴

 

Unity Profiler를 통해서 개발 중인 Application의 성능 개선이 필요한 영역을 확인하고 개선 포인트를 모색할 수 있다.

 

Window > Analysis > Profiler에서 Unity Profiler를 확인할 수 있다.

 

 

 

 

2. 성능 최적화에서의 Profiling

Unity 프로파일러

런타임 시 성능 저하 또는 중단의 원인을 감지하고

특정 프레임(또는 시점)에 발생하는 상황을 이해하는 데 도움이 될 수 있음

 

 

Project에서 최적화를 수행하기 전에 최적화 전/후 비교를 위해서 먼저 Profiler.data 파일을 저장할 필요가 있다.
그렇다면 Profiling 진행은 어떤 방식으로 진행하는 것일까?

문서에는 다음과 같이 기재 되어있다.

  • 개발 초기부터 자주 Profiling을 실행
  • 올바른 영역을 최적화
  • Target Platform에서 Profiling을 실행
  • Profile Analyzer 사용
  • Frame당 정해진 시간 예산으로 작업
  • GPU Bound or CPU Bound 여부 판단
  • Device 온도 고려
  • 지원하는 최저사양의 Device에서 테스트

 

개발 초기부터 자주 Profiling을 실행

출시가 얼마 남지 않은 시점에 Profiling하는 것 보다 개발 초기부터 여러 오류나 성능 문제를 발생 즉시 조사해야 한다. 

 

 

올바른 영역을 최적화

최적화를 진행할 영역을 잘 선정해야 하는데, 실제 bottle neck 지점을 파악하고 실질적으로 최적화가 필요한 부분에 집중해야 한다.
( 엉뚱한 영역을 수정해서 오히려 게임 성능을 저하시킬 수 있다.) 

 

 

Target Platform에서 Profiling을 실행

Unity Editor에서 Profiling을 진행하면 여러 시스템의 상대적인 성능 정보를 얻을 수 있지만,

가능하면 실제 Target Platform에서 Profiling을 진행하자.

Android : Android Studio & Android Profiler
iOS : Xcode & Instruments

 

 

Profile Analyzer 사용

About the Profile Analyzer package | Profile Analyzer | 1.0.3 (unity3d.com)

 

 

Frame당 정해진 시간 예산으로 작업

각 Frame은 Application이 목표로 하는 초당 프레임 수 (fps)를 기반으로 시간 예산을 가진다.

예를 들어, 60fps의 목표를 가지는 경우 목표 시간 예상은 프레임당 16.66ms(1000ms/60fps)이다.

 

모바일 기기에서는 기기의 과열로 인해 OS에서 쓰로틀링할 수 있으므로 이 시간을 지속적으로 사용하지 않는 것이 좋다.
즉, 컷씬이나 로딩 시퀀스 같은 짧은 시간 동안에는 예산을 초과해도 무방하지만 긴 시간 동안 초과하는 것은 바람직하지 않다.

 

 

GPU Bound or CPU Bound 여부 판단

Profiler를 통해 CPU 혹은 GPU에 문제가 있는지 파악할 수 있다.

 

CPU Bound

프로그램이 CPU의 성능에 의해 제약을 받는 경우

예를 들어,
복잡한 수학 계산 or 논리 연산이 많이 필요한 경우

많은 데이터 처리를 필요로 하는 경우

멀티 스레드 프로그램에서 스레드 관리와 같은 작업이 CPU에 부담을 주는 경우
CPU Bound가 발생할 수 있다.

 

 

GPU Bound 

프로그램이 GPU의 성능에 의해 제약을 받는 경우

 

예를 들어,

그래픽 렌더링 작업이 많은 경우

병렬 연산이 많은 경우 (딥러닝 등)

GPU Bound가 발생할 수 있다.

 

 

Device 온도 고려

Profiling 타임을 짧은 간격으로 진행하자.

물리적인 열기가 성능에 직접적인 영향(쓰로틀링 등)을 미칠 수 있기 때문에 Profiling 과열을 방지해야 한다.

 

 

지원하는 최저사양의 Device에서 테스트

Application이 지원하려는 기기 중 최저 사양의 기기에서 테스트한다.

 

 

 

 

 

 


 

 

cpdm

 

choppadontbiteme.tistory.com

 

반응형