무엇을 찾고 계신가요?
Hero background image
프로필 분석기로 게임을 최적화하는 방법
이 페이지에서는 프로파일 애널라이저를 Unity 및 네이티브 플랫폼 프로파일링 툴에 추가하는 방법에 대해 자세히 소개합니다. 자세히 알아보기 전에 이 소개 가이드를 확인하세요.

프로파일 애널라이저는 이 전자책에서 다루는 여러 기능 중 하나입니다. Unity 게임 프로파일링에 대한 궁극의 가이드. Unity에서의 애플리케이션 프로파일링, 메모리 관리, 전력 소비 최적화 등에 대한 팁 등 자세한 내용을 유니티 조직 내외부의 전문가들이 모여 70여 페이지가 넘는 가이드에 담았습니다.

Youtube video thumbnail

프로필 분석기 연습

성능을 개선할 수 있는 부분을 알고 싶으신가요? 변경 전후 성능을 비교해야 하나요? Unity 버전 업데이트가 게임에 미치는 영향을 알고 있나요? 프로필 분석기는 이러한 종류의 질문에 답하는 데 도움이 됩니다.

표준 Unity 프로파일러를 사용하면 단일 프레임 분석을 수행할 수 있지만, 프로파일 애널라이저는 Unity 프로파일러 프레임 세트에서 캡처한 프로파일링 마커 데이터를 집계하고 시각화할 수 있습니다.

Profile Analyzer에 대한 개요

프로필 분석기는 어디에 노력을 집중해야 하는지 파악하는 데 도움이 됩니다. 두 개의 Unity 퍼포먼스 프로파일링 캡처를 나란히 비교하고 변경 사항의 영향을 검사할 수 있는 방법을 제공합니다.

프로파일 애널라이저는 Unity 프로파일러에서 이미 제공되는 단일 프레임 분석을 보완합니다. 다양한 Unity 프로파일러 프레임의 프레임 및 마커 데이터를 집계하고 시각화하여 여러 프레임에 걸쳐 시간 경과에 따른 높은 수준의 성능 패턴을 확인할 수 있도록 도와줍니다.

프로파일 분석기는 현재 프로파일러 세션 프레임 또는 이전에 저장한 캡처의 여러 프레임에 대해 CPU 성능 분석을 수행합니다. 이 도구에는 캡처에 저장된 정보를 빠르게 분석하는 데 도움이 되는 통계 및 시각화 기능이 포함되어 있습니다. 또한 종합 필터링 기능을 사용하면 관심 있는 섹션으로 드릴다운할 수 있습니다. 두 데이터 세트를 비교하는 데 사용하거나 다른 도구로 분석하기 위해 원시 데이터를 내보낼 수 있습니다.

창 > 패키지 관리자를 통해 프로필 분석기를 설치할 수 있습니다.

프로필 분석기
시작하기

이 프로파일링 팁은 프로필 분석기를 시작하는 데 도움이 될 수 있습니다:

대표적이고 반복 가능한 캡처를 얻으세요.

다른 모든 애플리케이션을 닫습니다. 실행 중인 게임에서 직접 프로파일 데이터를 출력하기 위해 C# 스크립트에서 Profiler.logFile을 사용할 수 있으므로 에디터가 열려 있지 않아도 됩니다. 나중에 Unity 프로파일러에 로드할 수 있는 .raw 파일을 작성합니다.

CPU 하드웨어 성능 스케일링 또는 부스트 기능을 비활성화하여 인텔 스피드스텝 또는 AMD 프리시전 부스트와 같은 클럭 주파수에 변화가 생기지 않도록 합니다.

프로필 분석기는 프로젝트의 개발 수명 주기 동안 발생할 수 있는 최적화 및 성능 관련 질문에 답하는 데 도움이 될 수 있습니다. 예를 들어 300프레임 게임플레이 캡처 또는 20초 로딩 시퀀스를 예로 들 수 있습니다:

메인 및 렌더 스레드에서 가장 큰 CPU 비용은 얼마인가요?

각 마커의 평균/중앙값/총 비용은 얼마인가요?

프로필 분석기를 사용하여 여러 프레임에 걸쳐 실행된 코드의 성능 특성을 자세히 분석하거나 분석 전후의 다른 세션 캡처까지 살펴보세요.

프로필 분석기로 데이터를 비교할 때의 추가 팁:

깊이 레벨 4를 선택하여 사용자 스크립트(Unity 엔진 API 레벨 무시)를 드릴다운합니다(깊이 레벨은 계층 구조에서 마커의 위치에 대한 정보를 표시합니다). 이 수준으로 필터링한 후 타임라인 모드에서 프로파일러를 보면 호출 스택 깊이를 연관시켜 여기에서 선택할 수 있습니다. 모노비헤이비어 스크립트는 파란색으로 표시되며 네 번째 아래 레벨에 있습니다. 이렇게 하면 특정 로직과 게임플레이 스크립트가 다른 "노이즈" 없이 그 자체로 부담을 주는지 빠르게 확인할 수 있습니다.

애니메이터나 엔진 피직스 등 Unity 엔진의 다른 영역에 대해서도 동일한 방식으로 뎁스 스택 레벨 3을 사용하여 데이터를 필터링합니다.

프레임 요약 섹션의 오른쪽에서 강조 표시된 메서드의 성능 범위 히스토그램을 확인할 수 있습니다. 최대 프레임 번호(최대 타이밍이 발견된 정확한 프레임) 위에 커서를 올리면 클릭 가능한 링크가 표시되어 Unity 프로파일러에서 선택한 프레임을 확인할 수 있습니다. 이 보기를 사용하여 높은 최대 프레임 시간에 잠재적으로 영향을 미칠 수 있는 다른 요인을 분석할 수 있습니다.

데이터 캡처
특정 함수에 대한 성능 검토하기

함수 호출이 성능에 어떤 영향을 미치는지 확인하려면 Unity 프로파일러 또는 Profiler.logFile 메서드를 사용하여 데이터를 캡처하세요. Unity 프로파일러를 사용하는 경우 데이터 가져오기 버튼을 클릭하여 프로파일 애널라이저에 데이터를 로드할 수 있습니다. 그렇지 않으면 이전에 저장한 데이터 캡처를 파일에서 로드할 수 있습니다.

이렇게 하면 분석이 즉시 시작되고 데이터가 프레임 시간 그래프에 채워집니다. 그래프에서 흰색과 청록색 막대를 확인할 수 있습니다. 흰색 막대는 프레임 지속 시간을 나타내고 청록색 막대는 현재 선택된 마커를 나타냅니다. 이를 통해 선택한 마커의 총 프레임 시간에 대한 기여도를 비교할 수 있습니다.

필터를 사용하여 마커를 검색할 수 있습니다. Marker Details가 자동으로 업데이트되어 선택한 하위 세트가 반영되고, Count 열에서는 발생한 횟수를 확인할 수 있습니다. 프레임 시간 그래프는 마커를 강조 표시합니다. 마커를 선택하면 마커 요약 세부 정보 패널도 업데이트되어 해당 특정 마커에 대한 분석 통계를 표시합니다.

대표 프레임
대표 프레임 찾기

성과를 분석할 때는 보고 있는 데이터가 대표성을 갖는지 확인해야 합니다. 데이터에 노이즈가 있는 경우 오른쪽 상단의 Frame Summary를 사용해 평균 프레임을 쉽게 선택할 수 있습니다. Median으로 표시된 프레임을 클릭하기만 하면 프로파일러가 관련된 분석을 표시합니다. 또는 프레임 시간 그래프를 사용하여 마우스 오른쪽 버튼을 클릭하고 중앙값 프레임 선택을 선택합니다.

분석을 선택한 프레임으로 제한할 수도 있습니다. 표시되는 모든 통계는 특정 선택 항목을 반영하도록 업데이트됩니다.

단일 프레임의 단일 데이터 포인트에 의존하지 않고 대표 프레임 그룹을 선택하여 여러 데이터 포인트를 분석할 수 있습니다. 프레임 시간 그래프와 프레임 길이별 순서를 마우스 오른쪽 버튼으로 클릭하면 데이터의 일부 노이즈를 부드럽게 처리하는 대표 샘플을 위해 중간 프레임 주변의 프레임 집합을 선택할 수 있습니다.

프로필 분석기 프로젝트 설정
프로젝트 설정 변경의 효과

프로필 분석기는 그래픽 작업 활성화와 같은 프로젝트 전체 설정을 적용할 때 성능 차이를 파악하는 데 도움이 될 수 있습니다. 이 기능을 사용하려면 기준치를 캡처하고 변경 사항을 적용한 후 다시 캡처합니다. 게임을 실행하고 Unity 프로파일러로 샘플링한 다음 캡처를 프로파일 애널라이저로 가져온 다음 두 번째 캡처를 가져옵니다.

프레임 요약 섹션에서 두 캡처의 결과를 나란히 확인할 수 있습니다.

GPU 바운드
GPU 바운드인지 확인하기

성능에 병목 현상이 없는지 확인하려면 메인 스레드에서 Gfx.WaitForPresentOnGfxThread 마커를 확인하세요. 필터 영역에 Gfx.WaitForPresentOnGfxThread를 입력하면 찾을 수 있습니다. 해당 마커의 중앙값이 0이 아닌 경우 CPU는 GPU가 활동을 완료할 때까지 기다렸다가 계속할 수 있습니다.

프레임 시간 그래프에서 해당 마커를 확인하여 프레임 시간에 얼마나 기여하는지 확인할 수 있습니다. CPU가 GPU를 기다리는 경우 GPU에 바인딩되어 있을 가능성이 높습니다. 이 시나리오를 확인하려면 렌더 스레드 프로파일에서 Gfx.PresentFrame 또는 <GraphicsAPIName>.WaitForLastPresent 마커가 있는지 확인합니다. 다음을 확인하세요. Unity 게임 프로파일링에 대한 궁극의 가이드 전자책에서 추가 도움말을 확인하거나 GPU 프로파일링 툴을 살펴보고 최적화할 수 있는 부분을 찾아보세요.

프로필 분석기
데이터 세트 관리

프로필 분석기 창의 상단 섹션에서 데이터를 관리할 수 있습니다. 여기에서 Unity 프로파일러를 열고 Unity 프로파일러에서 '데이터 가져오기'를 하거나 이전에 저장한 파일(모든 Unity 버전)을 로드할 수 있습니다.

데이터를 로드하면 프레임 시간 그래프에서 데이터를 확인할 수 있습니다. 이 영역은 다양한 샘플을 선택할 수 있는 대화형 영역으로, 마커 세부정보 테이블의 모든 요약 정보가 선택한 내용을 반영하여 자동으로 업데이트됩니다. 프레임 시간 그래프를 마우스 오른쪽 버튼으로 클릭하면 고급 선택 옵션에 액세스할 수 있습니다.

저장 버튼을 클릭하여 분석 데이터를 .pdata 파일로 저장합니다. 파일 형식에는 프로필 분석기 저장 파일(.pdata)과 프로파일러 저장 파일(.data 또는 .raw)의 두 가지가 있습니다. 두 파일을 같은 디렉터리에 저장하는 것이 좋습니다.

프레임 요약
프레임 요약

프로파일 분석기 창의 오른쪽에 있는 프레임 요약에는 프로파일러에서 특정 프레임으로 이동할 수 있는 버튼과 함께 최소, 최대 및 중앙값을 포함한 프레임 시간에 대한 하이라이트가 표시됩니다. 이 영역에는 프레임 시간 분포 히스토그램과 박스 및 위스커 플롯도 표시됩니다.

마커 테이블
마커 테이블

마커 세부 정보

이 섹션에서는 모든 스택 깊이를 포함하여 프로파일러의 마커 데이터에 대한 마커 테이블을 확인할 수 있습니다. 모든 마커에 대한 Unity 프로파일러 데이터가 집계되어 중간값 및 기타 프레임 시간이 제공되며, 이 표에도 표시됩니다. 이러한 세부 정보를 특정 스택 깊이 '슬라이스'로 필터링할 수도 있습니다.

마커 요약

오른쪽의 마커 요약 영역에는 선택한 마커와 프레임 시간에 대한 마커의 기여도에 대한 집계된 정보가 포함되어 있습니다. 이 정보는 히스토그램과 상자 및 수염 그림으로 시각적으로도 표시됩니다.

요약의 맨 아래에는 집계된 데이터 세트 내의 개별 마커 인스턴스에 대한 최소 및 최대 시간이 나와 있습니다.

필터
필터

이름별

하위 문자열 또는 하위 문자열 모음을 입력하여 특정 이름을 가진 마커에 검토의 초점을 맞출 수 있습니다. 이름에 공백이 포함된 경우 하위 문자열 주위에 따옴표를 넣어야 합니다.

관심이 없는 마커는 제외할 수 있습니다. 예를 들어, 작업의 유휴 시간이나 프로파일러 자체의 일부인 마커를 기준으로 마커를 제외할 수 있습니다.

표에서 관심 있는 마커를 마우스 오른쪽 버튼으로 클릭하고 필터 선택 항목에 추가하여 마커 필터를 채울 수도 있습니다.

필터 제거

또한 표와 그래프 모두에서 하나의 마커와 이 마커 아래의 모든 하위 샘플을 데이터에서 숨기도록 선택할 수 있습니다. 이 옵션은 주로 iOS 및 Android 기기에서 동기화/대기 시간을 제거하기 위한 옵션입니다. 두 개의 공통 마커가 이미 사전 구성되어 있으며 제거라는 드롭다운을 통해 선택할 수 있습니다: 없음. 이러한 마커를 FPS 대기현재 대기라고 합니다. 고급 사용 사례의 경우 오른쪽 클릭 컨텍스트 메뉴에서 마커 제거 옵션을 선택하여 마커를 제거할 수 있습니다.

한 번에 하나의 마커만 제거할 수 있으며, 드롭다운에서 없음을 선택하여 마커를 다시 추가할 수 있습니다.

스레드

특정 작업자 스레드에 대한 데이터를 보도록 선택할 수 있습니다. 집계된 내용을 모두 보려면 스레드 선택 팝업 창 상단의 '모두'를 선택합니다.

깊이

대부분의 Unity 서브시스템에는 해당 레벨의 높은 레벨 마커가 있으므로 깊이 3을 살펴볼 것을 권장합니다. 이렇게 하면 렌더링, 애니메이션, 물리와 같은 주요 하위시스템의 기여도를 확인할 수 있습니다. 뎁스 3은 최신 Unity 릴리스에 적합합니다. 이전 릴리스의 경우 다른 깊이로 전환할 수 있습니다.)

부모

상위 마커를 기준으로 필터링하려면 마커 테이블에서 마커를 마우스 오른쪽 버튼으로 클릭하고 상위 마커 필터로 설정을 선택합니다.

분석 유형

기본적으로 프로필 분석기에는 마커의 총 시간이 표시되지만 셀프 시간으로 변경할 수 있습니다. 셀프 타임은 세부적으로 드릴다운하여 실제 시간을 어디에 사용했는지 확인하려는 경우에 유용합니다.

단위

기본 단위는 밀리초이지만 더 작은 타이밍의 경우 마이크로초로 전환할 수 있습니다.

중앙 프레임의 상위 10개 마커
중앙 프레임의 상위 10개 마커

창의 이 부분에는 선택한 필터의 상위 10개 마커가 표시됩니다. 이 툴을 사용하는 가장 좋은 방법은 분석 유형에서 메인 스레드 및 총 시간을 선택하고 깊이 3의 하위 시스템을 포함하여 Unity 하위 시스템을 살펴보는 것입니다. 이렇게 하면 렌더링과 물리와 애니메이션 시간을 비교하는 등 각 주요 시스템의 기여 비율이 표시됩니다.

비교 보기에서 비율 드롭다운을 사용하여 프로필 분석기가 마커를 서로 비교하여 그리는 방식을 조정합니다:

정규화하면 선택한 깊이의 자체 시간을 기준으로 두 데이터 세트가 표시됩니다.

가장 길다는 선택한 깊이에서 두 세트의 절대 차이를 표시합니다.

추가 보고 및 분석을 위해 데이터 막대 위로 마우스를 가져가면 정확한 백분율과 지표를 확인할 수 있습니다.

데이터 세트 비교하기
데이터 세트 비교하기

프로필 분석기 창 상단에서 비교 탭으로 전환하여 분석할 데이터 세트 두 개를 선택할 수 있습니다. 한 데이터 세트는 파란색으로 표시되고 다른 데이터 세트는 주황색으로 표시됩니다. 또는 단일 데이터 집합의 두 하위 영역을 비교하도록 선택할 수 있습니다(예: 중앙값 프레임과 이상값 프레임을 비교하기 위해).

마커 비교 테이블은 파란색과 주황색으로 데이터를 시각적으로 표시하므로 두 데이터 세트 중 특정 영역에서 어느 것이 느리게 실행되는지 빠르게 확인할 수 있습니다.

스캔 중 하나에 마커가 없는 경우 해당 열에 대시가 표시됩니다. 마커의 이름이 변경된 경우(예: 다른 Unity 버전을 사용하는 경우) 이런 문제가 발생할 수 있습니다.

데이터 익스포트하기

프로필 분석기에서 데이터를 내보내 CSV 파일 형식으로 추가 사용자 지정 처리를 할 수 있다는 점을 기억하세요. 마커 테이블, 프레임 시간 그래프, 비교 테이블 또는 프레임 시간 그래프 비교의 내용을 내보낼 수 있습니다.

프로필 분석기, 프로파일러 또는 프로젝트에 특정 기능을 사용하는 방법에 대해 궁금한 점이 있으면 포럼에서 토론에 참여하세요.

리소스 더 보기

다양한 플랫폼과 장치에서 프로파일링을 통해 게임 성능을 개선하면 성공으로 향하는 길은 보다 뚜렷해지고, 플레이어 기반도 크게 확장할 수 있습니다.

이 글의 서두에서 언급했듯이, 전자책인 Unity 게임 프로파일링에 대한 궁극적인 가이드 에서는 Unity 프로젝트 프로파일링에 대한 더 많은 지침을 제공합니다.

이 세션은 유나이트 코펜하겐에서도 시청할 수 있습니다. 2019년에 작성되었지만 여전히 프로필 분석기에 대한 유용한 팁을 제공합니다.

마지막으로 베스트 프랙티스 허브에서 Unity의 모든 고급 가이드와 문서를 찾아보세요.

이 콘텐츠가 마음에 드셨나요?