Version: 2017.1
프로파일러 개요
CPU 사용 프로파일러

프로파일러 창(Profiler window)

Unity 에디터에서 툴바를 통해 프로파일러 창에 엑세스합니다. Window > Profiler

프로파일러 작동 방식에 대한 개요는 프로파일러 개요를 참조하십시오.

프로파일 창
프로파일 창

프로파일러(Profiler) 컨트롤

프로파일러 컨트롤은 창 상단의 툴바에 있습니다. 컨트롤을 사용해 프로파일링을 켜거나 끌고 프로파일링된 프레임을 탐색할 수 있습니다. 트랜스포트 컨트롤은 툴바의 맨 오른쪽에 있습니다. 게임이 실행 중인 경우 프로파일러가 데이터를 수집할 때 트랜스포트 컨트롤을 클릭하면 게임이 일시중지됩니다. 각 컨트롤을 클릭하면 기록된 첫 프레임으로 이동하고, 1 프레임 뒤로 이동하고, 1 프레임 앞으로 이동하고, 마지막 프레임으로 이동합니다.

프로파일러는 기록된 프레임을 모두 보관하지 않으므로 프레임은 사실 메모리에 아직 저장되어 있는 가장 오래된 프레임이라고 생각해야 합니다. “현재” 트랜스포트 버튼을 클릭하면 수집된 데이터가 프로파일 통계 창에 실시간으로 표시됩니다. 액티브 프로파일러 팝업 메뉴에서 프로파일링을 에디터에서 수행할지 별도의 플레이어(예: 연결된 iOS 기기에서 실행 중인 게임)에서 수행할지 선택할 수 있습니다. 세이브 버튼을 클릭해 기록된 프레임을 파일에 쓸 수 있습니다. 반대로 로드 버튼을 클릭하면 이전에 저장된 데이터를 읽어옵니다. 플레이어에서 쓴 바이너리 프로파일 데이터도 로드할 수 있습니다. 바이너리 포맷을 활성화하려면 로그를 생성할 때 Profiler.enableBinaryLog를 설정합니다. Shift를 누른 상태에서 “로드”를 클릭하면 파일 콘텐츠가 메모리의 현재 프로파일 프레임에 추가됩니다.

세부 프로파일링

Deep Profile 을 켜면 모든 스크립트 코드가 프로파일링됩니다. 즉, 모든 함수 호출이 기록됩니다. 게임 코드에서 시간이 정확히 어디에 소요되었는지 알고 싶을 때 유용합니다.

세부 프로파일링(Deep Profiling)은 오버헤드가 매우 크고 메모리를 많이 사용하므로, 프로파일링 중에는 게임이 훨씬 더 느리게 실행됩니다. 복잡한 스크립트 코드를 사용하는 경우 세부 프로파일링이 전혀 불가능할 수도 있습니다. 스크립트가 간단한 작은 게임에서는 세부 프로파일링이 충분히 빠르게 작동합니다. 전체 게임에 세부 프로파일링을 사용함으로 인해 게임이 겨우 실행될 정도로 프레임 속도가 많이 떨어지는 경우 이 방법을 사용하지 않고 아래에 설명된 방법을 사용할 수 있습니다. 세부 프로파일링은 게임을 디자인하고 주요 기능을 구현하는 가장 좋은 방법을 결정할 때 더 유용할 수있습니다. 대형 게임에 세부 프로파일링을 사용할 경우 Unity에서 메모리가 부족해질 수 있기 때문에 세부 프로파일링이 불가능할 수 있습니다.

스크립트 코드 블록을 수동으로 프로파일링하면 세부 프로파일링을 사용할 때보다 오버헤드가 더 적습니다. Profiler.BeginSampleProfiler.EndSample 스크립팅 함수를 사용하여 코드 섹션 프로파일링을 활성화하고 비활성화할 수 있습니다.

SyncTime 보기(View SyncTime)

고정 프레임 속도로 실행하거나 수직 공백과 동기화하여 실행하는 경우 대기 시간이 “타겟 FPS 대기(Wait For Target FPS)”에 기록됩니다. 이 시간은 기본적으로 프로파일러에 표시되지 않습니다. “싱크타임 보기(View SyncTime)”를 토글하여 대기하는 데 시간을 얼마나 보냈는지 확인할 수 있습니다. 이 시간은 프레임을 잃기 전에 얼마나 여유가 있는지 나타내는 척도이기도 합니다.

프로파일러 타임라인(Profiler Timeline)

프로파일러 창의 상단에는 시간에 따른 성능 데이터가 표시됩니다. 게임을 실행하면 데이터가 각 프레임에 기록되고 최근에 일어난 수백 프레임의 이력이 표시됩니다. 특정 프레임을 클릭하면 세부 정보가 창 하단에 표시됩니다. 현재 선택된 타임라인 영역에 따라 표시되는 세부 정보가 다릅니다.

타임라인의 수직 스케일은 자동으로 관리되고 창의 수직 공간을 채우려고 합니다. 예를 들어 CPU 사용 영역 등에 대한 더 많은 세부 정보를 확인하려면 메모리 및 렌더링 영역을 제거할 수 있습니다. 타임라인과 통계 영역 사이에 있는 스플리터를 선택하고 아래로 드래그하여 타임라인 차트에 사용되는 화면 영역을 확대할 수도 있습니다.

타임라인은 CPU 사용, 렌더링 및 메모리 영역으로 구성됩니다. 패널의 닫기 버튼을 클릭해 각 영역을 제거하고 프로파일 컨트롤 바의 Add Area 드롭다운을 사용해 다시 추가할 수 있습니다.

레이블 영역에 있는 유색 사각형으로 관련 타임라인 표시 여부를 제어할 수 있습니다. 디스플레이에서 샘플을 제거하려면 컬러 키를 클릭합니다. 키가 흐리게 표시되고 데이터가 그래프에서 제거됩니다. 이렇게 하면 예를 들어 CPU 그래프에 스파이크가 표시된 원인을 확인하는 데 유용할 수 있습니다.

WebGL

다른 플랫폼에서와 마찬가지로 Unity 프로파일러를 WebGL에서도 사용할 수 있습니다. 하지만 WebGL에서는 실행 중인 플레이어에 연결할 수 없다는 중요한 차이점이 있습니다. WebGL은 통신에 WebSocket을 사용하므로 브라우저 쪽에서 수신 연결이 허용되지 않기 때문입니다. 대신 빌드 설정에서 “Autoconnect profiler” 체크박스를 사용해야 합니다. 드로우 콜은 현재 WebGL용으로 프로파일할 수 없습니다.

원격 프로파일링

다른 기기에서 실행 중인 게임이나 다른 컴퓨터에서 실행 중인 Unity 플레이어를 프로파일링하려면 Unity 에디터를 다른 플레이어 또는 컴퓨터에 연결합니다. Active Profiler 드롭다운에 로컬 네트워크에서 실행 중인 모든 Unity 플레이어가 표시됩니다. 플레이어는 플레이어 타입과 플레이어를 실행하는 호스트 이름 “iPhonePlayer (Toms iPhone)”으로 식별됩니다.

Unity 플레이어에 연결할 수 있으려면 플레이어를 Development build 로 실행해야 합니다(메뉴: File > Build Settings…).

다이얼로그에서 Development Build 옵션을 선택합니다. 여기서 Autoconnect Profiler 를 선택하여 데이터와 플레이어가 시작 시에 자동으로 연결되도록 설정할 수도 있습니다.

iOS

iOS 기기에서는 다음 절차에 따라 원격 프로파일링을 활성화해야 합니다.

  1. iOS 기기를 WiFi 네트워크에 연결합니다. 프로파일러는 로컬 WiFi 네트워크를 사용해 프로파일링 데이터를 기기에서 Unity 에디터로 전송합니다.
  2. Unity 에디터의 Build Settings 다이얼로그(메뉴: File > Build Settings…)에서 Autoconnect Profiler 체크박스를 선택합니다.
  3. 기기를 Mac에 케이블로 연결합니다. Unity 에디터의 Build Settings 다이얼로그(메뉴: File__>__Build Settings…)에서 Autoconnect Profiler 체크박스를 선택한 후 Build & Run 을 선택합니다.
  4. 앱이 기기에서 실행되면 Unity 에디터의 프로파일러 창을 엽니다(Window > Profiler).

방화벽을 사용하는 경우 방화벽의 아웃바운드 규칙에서 54998 ~ 55511번 포트가 개방되었는지 확인합니다. 해당 포트는 Unity에서 원격 프로파일링에 사용됩니다.

참고: 때로는 Unity 에디터가 기기에 자동으로 연결되지 않을 수 있습니다. 이 경우 프로파일러 창의 Active Profiler 드롭다운 메뉴에서 해당 기기를 선택하여 프로파일 연결을 시작할 수 있습니다.

Android

Android기기에서는 WiFi 또는 ADB 두 가지 메서드로 원격 프로파일링을 활성화할 수 있습니다.

WiFi로 프로파일링하려면 다음 절차를 따르십시오.

  1. Android 기기에서 모바일 데이터를 비활성화해야 합니다.
  2. Android 기기를 WiFi 네트워크에 연결합니다. 프로파일러는 로컬 WiFi 네트워크를 사용해 프로파일링 데이터를 기기에서 Unity 에디터로 전송합니다.
  3. 기기를 Mac 또는 PC에 케이블로 연결합니다. Unity의 빌드 설정 다이얼로그에서 Development BuildAutoconnect Profiler 체크박스를 선택한 후 Unity 에디터에서 Build & Run 을 클릭합니다.
  4. 앱이 기기에서 실행되면 Unity 에디터의 프로파일러 창을 엽니다(메뉴: Window > Profiler).
  5. Unity 에디터가 기기에 자동으로 연결할 수 없는 경우 프로파일러 창의 Active Profiler 드롭다운 메뉴에서 해당 기기를 선택합니다.

참고: 기기를 인식할 수 있으려면 Android 기기와 (Unity 에디터를 실행하는) 호스트 컴퓨터가 모두 동일한 서브넷에 있어야 합니다.

ADB 프로파일링을 사용하려면 다음 절차를 따르십시오.

  • 디바이스를 Mac 또는 PC에 케이블로 연결하고 ADB에서 기기를 인식하는지(즉 adb devices 리스트에 기기가 표시되는지) 확인합니다.
  • Unity 에디터의 Build Settings 다이얼로그(메뉴: File > Build Settings…)에서 Development Build 확인란을 선택한 후 Build & Run 을 선택합니다.
  • 앱이 기기에서 실행되면 Unity 에디터의 프로파일러 창을 엽니다(메뉴: Window > Profiler).
  • 프로파일러 창의 Active Profiler 드롭다운 메뉴에서 AndroidProfiler(ADB@127.0.0.1:34999) 를 선택합니다. 참고: __Build & Run__을 클릭하면 Unity 에디터에서 애플리케이션의 adb 터널을 자동으로 생성합니다. 다른 애플리케이션을 프로파일링하거나 adb 서버를 재시작하려면 이 터널을 수동으로 설정해야 합니다. 수동으로 설정하려면 터미널 창/CMD 프롬프트를 열고 다음을 입력합니다.
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}

참고: 드롭다운 메뉴 항목은 Android를 타겟으로 선택한 경우에만 표시됩니다.

방화벽을 사용하는 경우 방화벽의 아웃바운드 규칙에서 54998 ~ 55511번 포트가 개방되었는지 확인합니다. 해당 포트는 Unity에서 원격 프로파일링에 사용됩니다.


• 2017–05–16 편집 리뷰 없이 페이지 수정됨

프로파일러 개요
CPU 사용 프로파일러