성능 프로파일링

성능 프로파일링 및 조정은 과학보다는 예술에 가까운 복잡한 작업입니다. 게임에서 완벽하게 동기화되어야 하는 여러 움직이는 부분과 특정 장면의 복잡성으로 인해 문제를 이해하고 격리하기 어려울 수 있습니다. ChromeOS에서는 많은 도구가 ARM 칩셋을 염두에 두고 설계되었습니다. 아래는 이 과정을 빠르게 진행하는 데 도움이 되는 몇 가지 팁입니다.

ChromeOS에서 게임 성능을 구체적으로 최적화할 때 염두에 두어야 할 점은 기본 성능 문제가 모든 기기에서 공유되며 개선하면 모든 사용자의 성능과 배터리 수명에 도움이 된다는 것입니다. ChromeOS는 디스플레이가 더 크고 데스크톱 입력 기기를 사용하는 경향이 있어 특정 문제가 더 쉽게 드러날 수 있습니다. 예를 들어 비효율적인 텍스처 로드 알고리즘은 고급 휴대기기에서는 '잘 작동'하지만 4K 디스플레이가 있는 Chromebook에서는 따라가지 못할 수 있습니다. 알고리즘을 개선하면 모든 기기에서 게임이 개선됩니다.

프로파일링을 처음 사용하는 경우 다음과 같은 일반적인 접근 방식을 사용하는 것이 좋습니다.

  1. 성능이 다음에 의해 제한되는지 확인합니다.
    • CPU
    • GPU
    • 기타: 입력/디스크/네트워크
  2. 주요 원인 격리하기
  3. 최적화 시도
  4. 반복

대부분의 경우 게임은 'CPU 바운드' 또는 'GPU 바운드'로 표시됩니다. 아래의 프로파일링 팁과 도구를 사용하여 시스템이 각 프레임에서 '시간을 소비'하는 위치를 파악하세요. 예를 들어 GPU가 렌더링을 시작하기 전에 꼭짓점을 계산하고 로드하는 데 시간이 오래 걸리면 게임이 CPU에 바인딩될 수 있습니다. 대신 세부적인 GPU 기반 필터를 많이 사용하는 경우 게임이 GPU에 바인딩될 수 있습니다. 많은 휴대전화와 ChromeOS 기기에는 개별 그래픽 카드가 없습니다. GPU 필터가 빠르다고 가정하는 데스크톱 게임은 통합 GPU가 각 장면을 렌더링하는 데 너무 오래 걸린다는 것을 알 수 있습니다.

프로파일링 접근 방식에 관한 자세한 내용은 최적화 프로세스에 관한 ARM 가이드를 참고하세요.

도구

혼자서 병목 현상을 파악할 수도 있지만 올바른 도구를 사용하면 게임 성능을 더 쉽게 분석하고 올바른 부분에 집중할 수 있습니다. 다양한 도구가 있지만 Google에서 자주 사용하는 프로그램은 다음과 같습니다.

Android 스튜디오 프로파일러

Android 앱 프로파일링을 시작하는 가장 쉬운 방법은 통합 Android 스튜디오 프로파일러를 사용하는 것입니다. Android 스튜디오에서 '실행'을 누르는 대신 '프로파일'을 선택하여 앱을 실행하고 CPU, 메모리, 네트워크 사용량에 관한 실시간 통계를 확인하세요. 간단한 CPU 트레이스는 살펴볼 코드 영역을 격리하는 빠른 방법이 될 수 있습니다.

이 도구는 GPU 사용량이나 각 프레임 동기화 사이에 발생하는 상황에 대한 실제 통계를 제공하지 않으므로 도구 모음에 있으면 좋지만 게임을 최고 성능으로 실행하기에는 충분하지 않을 수 있습니다.

Snapdragon Profiler

게임 동작은 기기 간에 동일하므로 자세한 성능 정보를 얻는 좋은 방법은 Qualcomm 기반 ARM 휴대전화에서 Snapdragon Profiler를 사용하는 것입니다. ChromeOS 기기에서 직접 프로파일링하지는 않지만, 이를 통해 게임이 각 프레임에서 대부분의 시간을 어디에 소비하는지 알 수 있으며, 어떤 GPU 호출이 사용되는지 구체적으로 파악할 수 있습니다.

예를 들어 이방성 GPU 필터에 많은 시간이 소요되고 각 프레임에서 실행되는 작업이 지배적인 경우 이 설정을 변경하면 성능을 크게 개선할 수 있습니다.

GPU 시간이 짧고 규칙적인데 CPU 시간이 지배적이고 프레임 동기화가 누락되는 경우 텍스처 로드/프레임 준비 알고리즘을 살펴보세요.

자세한 내용은 공식 사용 문서를 참고하세요.

ARM Mobile Studio

유용한 ARM 기기 프로파일러로는 ARM Mobile Studio도 있습니다. 일부 개발자는 Snapdragon Profiler보다 선호할 수 있지만 비슷한 방식으로 사용할 수 있습니다. 공식 사용 문서를 참고하세요.

Android GPU 검사기

Android GPU 검사기는 Google에서 개발한 새로운 도구로, OpenGL과 Vulkan을 모두 사용하여 게임의 성능을 최대한 끌어올릴 수 있도록 특별히 설계되었습니다. 현재 개발자 프리뷰 상태이며 설정하는 데 약간의 작업이 필요할 수 있고 현재 소수의 기기에서만 작동합니다. 향후 그래픽 프로파일링에 사용할 주요 도구 중 하나가 될 것으로 예상됩니다. 공식 문서를 참고하세요.

ARC 개요 추적

위의 ARC 그래픽 추적 도구와 유사하게 작동하는 더 일반화된 도구인 ARC 개요 추적도 있습니다. 이 트레이서는 앱 및 ChromeOS 성능에 관한 대략적인 측정항목을 제공합니다. 읽기에는 앱과 Chrome 자체의 FPS, CPU 사용량, GPU 사용량, 전력 소비량 등이 표시됩니다. 이 도구를 여러 번 실행하면 각 실행의 그래프가 색상으로 구분되어 함께 표시됩니다. 각 추적 모델은 다운로드 폴더에 저장되며 나중에 비교할 수 있도록 다시 가져올 수 있습니다. 일반적인 앱 상태 확인의 경우 ARC 개요 추적부터 시작하는 것이 좋습니다.

ChromeOS의 브라우저에서 chrome://arc-overview-tracing를 방문하여 이 도구에 액세스하세요.

다음 단계

병목 현상을 발견했지만 어떻게 해야 할지 잘 모르겠나요? 또는 문제를 발견하고 해결했지만 다음 단계를 잘 모르겠는 경우도 있습니다. 아래에 일반적인 Android 및 엔진 관련 팁과 리소스 목록을 정리해 두었습니다.

일반적인 도움말

Android 개발자 포털에는 애플리케이션의 성능을 높이는 데 도움이 되는 유용한 팁이 있습니다. 로드 시간 고려사항, 멀티스레딩 활용 방법, 입력 지연 처리 방법 등을 확인할 수 있습니다.

특히 성능이 낮은 머신을 타겟팅하거나 고급 아키텍처의 한계를 뛰어넘는 경우 초기에 자주 프로파일링해야 합니다. 앱의 성능 통계를 추적하면 프레임 속도를 저하시킨 변경사항과 목표로 하는 원활한 환경을 유지하는 데 도움이 되는 변경사항을 파악할 수 있습니다.

Unity 엔진

Unity는 일반적인 Android 문서 외에도 엔진을 사용하여 성능이 우수한 ChromeOS 애플리케이션을 만들 수 있도록 ChromeOS 전용 문서를 제공합니다. x86 빌드를 만드는 방법을 비롯해 시작하기, 입력, 디버깅, 빌드에 관한 ChromeOS 문서를 확인하세요. 성능에 관한 콘텐츠는 최적화 이해성능 및 최적화 과정을 참고하세요.

Unity 게임 프로파일링 및 최적화에 관한 ARM 가이드와 관련 권장사항을 읽어보세요. 이 가이드에서는 ARM Mobile Studio의 한 측면인 Streamline 도구를 사용하여 Unity에서 예시 게임을 프로파일링하는 과정을 안내합니다.

Unreal 엔진

Unreal에서는 엔진에서 제공하는 다양한 옵션과 설정을 최대한 활용하는 방법을 알려주는 자체 성능 가이드라인팁과 요령 문서를 작성했습니다. 여기에서는 세부사항 수준 팁, 조명을 최대한 활용하는 방법, 재질 품질 설정 및 셰이더에 관한 단계별 가이드 등 다양한 제안을 확인할 수 있습니다.

그래픽 기반 최적화에 관한 자세한 내용은 ARM에서 작성한 모바일 게임 최적화 가이드를 참고하세요. 일반적인 최적화 도움말과 Unreal 관련 그래픽 고려사항은 여기에서 확인할 수 있습니다.