Version: 2020.2
Profiler overview
Audio Profiler module

The Profiler window

Unity 프로파일러에 액세스하려면 Window > Analysis > Profiler 로 이동하거나 키보드 단축키 Ctrl+7 (macOS의 Command+7)을 사용하십시오.

프로파일러는 애플리케이션 성능의 여러 영역을 기록한 후 해당 정보를 표시합니다. 이 정보를 사용하면 애플리케이션에서 최적화해야 할 사항에 대해 정보에 근거한 결정을 내리고 최적화를 통해 예상한 결과를 달성하는지 확인할 수 있습니다.

By default, the Profiler records and keeps the last 300 frames of your game, and shows you detailed information about every frame. You can increase the number of frames it records in the Preferences window (menu: File > Preferences), up to 2,000 frames. Note: If you increase this setting to a large number of frames, the Profiler’s overhead and memory usage might become more performance intensive.

스크립트 코드를 검사하고, 애플리케이션이 속도 저하를 유발하는 특정 에셋과 리소스를 사용하는 방식을 확인할 수 있습니다. 또한 여러 기기에서 애플리케이션의 성능을 비교할 수도 있습니다. 프로파일러에 있는 다양한 프로파일러 모듈을 프로파일링 세션에 추가하여 렌더링, 메모리, 오디오 등의 영역에 대한 자세한 정보를 얻을 수 있습니다.

이 페이지는 다음의 항목을 다룹니다.

Profiler window layout

프로파일러 창은 다음으로 구성됩니다.

The Profiler window, with the CPU Usage Profiler module selected
The Profiler window, with the CPU Usage Profiler module selected
  • A: 프로파일러 모듈. 애플리케이션에서 프로파일링할 수 있는 모든 모듈의 리스트입니다. 이 영역의 상단에 있는 드롭다운 메뉴를 사용하여 창에 모듈을 추가하거나 제거하십시오.
  • B: 프로파일러 컨트롤. 이 컨트롤을 사용하여 프로파일링할 기기와 Unity가 수행할 프로파일링 종류를 설정하고, 프레임 사이를 탐색하고, 데이터 기록을 시작하십시오.
  • C: 프레임 차트. 이 영역에는 프로파일러가 프로파일링하는 각 모듈의 차트가 있습니다. 프로파일러를 처음 열면 이 영역이 비어 있으며, 애플리케이션을 프로파일링할 때 정보로 채워집니다.
  • D: 모듈 세부 정보 창. 창의 이 영역에 있는 정보는 선택한 모듈에 따라 달라집니다. 예를 들어 CPU 사용 프로파일러 모듈을 선택하면 상세한 타임라인, 그리고 계층 구조 뷰로 전환할 수 있는 옵션이 포함됩니다. 렌더링 프로파일러 모듈을 선택하면 이 영역에 디버깅 정보 리스트가 표시됩니다. 프로파일러를 처음 열면 이 영역이 비어 있으며, 애플리케이션을 프로파일링할 때 정보로 채워집니다.

Profiler Preferences

The Preferences window contains additional Profiler window settings as follows:

Preference 설명
Frame count Set the maximum number of frames for the Profiler to capture. You can set this number between 300 and 2,000.
Show stats for ‘current frame’ By default, when you select the Current Frame button and enter Current Frame mode, the frame indicator line does not have annotations with the stats for the current frame. This is because the stats annotations might make it difficult to view data in real-time. To display the annotations, enable this setting.
Default recording state Select which recording state the Profiler should open in. Choose from Enabled, Disabled, or Remember. Enabled keeps the Record button enabled between sessions, while Disbled disables it, regardless of whether you turn it on or off during your profiling session. The Remember state remembers whether you have enabled or disabled the Record button during your session and keeps it at its last state next time you open the Profiler window.
Default editor target mode Select what mode the Attach to Player dropdown should target by default. Choose from either Playmode or Editor.

Profiler controls

프로파일러 컨트롤은 프로파일러 창 상단의 툴바에 있습니다. 이 컨트롤을 사용하여 프로파일러 데이터 기록을 시작하거나 중지하고 프로파일링된 프레임을 탐색하십시오.

컨트롤 기능
Attach to Player Select which target to profile your application on. By default, this is set to Playmode. You can also select Editor to profile the Unity Editor and display the resources that the Editor is currently using.

Unity also automatically detects any devices that are running on your network or connected via USB, and displays them in the drop-down. Click Enter IP in the drop-down to manually enter the IP address of the device you want to profile your application on. For more information, see Profiling your application.
Record 이 설정을 활성화하면 애플리케이션을 실행할 때 활성 모듈에 대한 프로파일링 정보를 기록할 수 있습니다. 이 버튼을 활성화하지 않으면 애플리케이션을 실행할 때 프로파일러가 데이터를 수집하지 않습니다.
Back arrow 한 프레임이 뒤로 이동합니다.
Forward arrow 한 프레임이 앞으로 이동합니다.
Current Frame When you click the Current Frame button, the frame indicator line jumps to the last recorded frame, and the Profiler enters Current Frame mode. While the Profiler collects data in this mode, it stays on the current frame and displays the data it collects in real-time. Click the button again to exit Current Frame mode.
Frame number Indicates the frame number you are currently looking at in the Profiler. The number on the left is the current frame selected, and the number on the right is the total number of frames combined that the Profiler collected during your entire Profiling session.
Clear 프로파일러 창의 모든 데이터를 지웁니다.
Clear on Play 이 설정을 활성화하면 다음 번에 플레이어 창에서 Play를 클릭하거나, 새 타겟 디바이스에 연결할 때 프로파일러 창의 모든 데이터가 지워집니다.
Deep Profile 이 설정을 활성화하면 모든 C# 메서드를 프로파일링합니다. 이 설정을 활성화하면 Unity는 모든 모노 호출에 계측을 추가하므로 스크립트를 더욱 자세히 조사할 수 있습니다. 세부 프로파일링을 참조하십시오.
Call Stacks To record call stacks for scripting memory allocations, click this toggle. Frames that the Profiler records when you enable this option have information about the selected samples on the full call stack that lead to a managed scripting allocation, even when Deep Profile is not active. By default, the Profiler records the full call stack information for GC.Alloc samples when you enable this setting, but you can change this to a different sample from the dropdown menu (UnsafeUtility.Malloc, JobHandle.Complete, or Native Allocations). For more information, see the Allocation call stacks section of the CPU Usage Profiler module page.
Load 저장된 프로파일러 데이터를 프로파일러 창에 로드합니다. Profiler.logFile API를 통해 플레이어가 파일에 작성한 바이너리 프로파일러 데이터도 로드할 수 있습니다.

Shift 버튼을 길게 누른 채 Load 버튼을 클릭하면 파일 콘텐츠를 현재 프로파일 프레임에 추가합니다.
Save 프로파일러 데이터를 프로젝트 폴더의 .data 파일에 저장합니다.
Context menu
Color Blind Mode 이 설정을 활성화하면 프로파일러가 그래프에서 더 높은 콘트라스트 컬러를 사용합니다. 이렇게 하면 적록 색맹(예: 제2색맹, 제1색맹, 제3색맹) 사용자들의 가시성을 향상할 수 있습니다.
Show stats for “current” frame By default, when you select the Current Frame button and enter Current Frame mode, the frame indicator line does not have annotations with the stats for the current frame. This is because the stats annotations might make it difficult to view data in real-time. To display the annotations, enable this setting.
Preferences Preferences 메뉴를 열면 프로파일러별 프로퍼티를 조정할 수 있습니다.

낮은 오버헤드를 유지하기 위해 Unity는 에디터 UI의 프레임을 다섯 번째에만 다시 그립니다. 이로 인해 업데이트가 살짝 불안정해집니다.

Deep Profiling

일반적으로 프로파일러는 ProfilerMarkers에 명시적으로 래핑된 코드 타이밍만 프로파일링합니다. 여기에는 엔진의 네이티브 코드에서 스크립팅 코드로의 호출에 대한 첫 번째 호출 스택 뎁스가 포함됩니다(예: MonoBehaviour’s Start, Update 또는 유사 메서드).

자체 코드에 더욱 명시적인 ProfilerMarker 계측을 추가하지 않고, 스크립팅 코드의 자식 샘플로 볼 수 있는 유일한 다른 샘플은 해당 API가 계측되었을 때 Unity의 API로 다시 호출되는 샘플입니다. 성능 오버헤드를 유발하는 대부분의 API 호출이 계측됩니다. 예를 들어 Camera.main API를 통한 메인 카메라 액세스는 “FindMainCamera” 샘플로 등록됩니다.

Deep Profile 설정을 활성화하면 프로파일러는 스크립트 코드의 모든 부분을 프로파일링하고 모든 함수 호출(Unity API로의 첫 번째 호출 뎁스 포함)을 기록합니다. 이러한 정보는 코드가 애플리케이션 성능에 영향을 미치는 위치를 파악하는 데 도움이 되지만 리소스 소모가 커집니다.

애플리케이션에 대해 세부 프로파일링을 수행하면 Unity는 프로파일러 계측을 모든 스크립트 메서드에 주입하여 모든 함수 호출을 기록합니다. 이는 애플리케이션 코드가 가장 많은 시간을 소비하는 위치를 이해하는 데 도움이 됩니다.

세부 프로파일링은 리소스와 메모리를 많이 사용합니다. 따라서 애플리케이션이 프로파일링되는 동안 매우 느리게 실행됩니다. 세부 프로파일링은 간단한 스크립팅을 사용하는 소규모 게임에 적합합니다. 복잡한 스크립트 코드를 사용하는 경우 애플리케이션에서 세부 프로파일링을 전혀 사용하지 못할 수 있으며, 대형 애플리케이션이 많은 경우에는 세부 프로파일링으로 인해 Unity의 메모리가 부족해질 수 있습니다.

프로파일러로 스트리밍하기 위해 사용하는 링 버퍼에 저장할 샘플이 너무 많아지는 문제가 발생하면 Unity는 오류 메시지를 표시합니다. 링 버퍼의 크기를 늘리려면 프로파일링하는 플레이어의 Profiler.maxUsedMemory 프로퍼티를 조정하십시오.

세부 프로파일링으로 인해 애플리케이션의 프레임 속도가 너무 낮아져 실행이 불가능해지면 스크립트 코드의 블록을 수동으로 프로파일링할 수 있습니다(세부 프로파일링보다 성능 부하가 적음). ProfilerMarkers를 사용하여 스크립트 블록을 마크업하는 데 필요한 계측을 수동으로 추가하십시오. CPU 사용 프로파일러 모듈에서 볼 수 있습니다.

세부 프로파일링을 사용하지 않고 GC.Alloc 샘플을 유발하는 호출 스택을 찾고 싶은 경우 Allocation call stacks 컬렉션을 활성화할 수 있습니다. 프로파일러 컨트롤에서 Call Stacks 설정을 활성화한 후 타임라인 뷰에서 GC.Alloc 샘플을 선택하거나, 계층 구조 뷰에서 Show Related Objects panel 패널을 사용하여 이러한 샘플에 대한 호출 스택을 찾을 수 있습니다. 자세한 내용은 CPU 프로파일러 모듈 페이지에서 할당 호출 스택에 대한 설명을 참조하십시오.

Profiler modules

프로파일러 창 상단은 게임의 특정 영역을 프로파일링하는 프로파일러 모듈로 구성됩니다. 애플리케이션을 프로파일링할 때 Unity는 해당 차트에 각 모듈과 관련된 데이터를 표시합니다.

CPU Usage 모듈은 애플리케이션이 각 프레임에 소비하는 시간에 대한 최고의 요약 정보를 제공합니다. 다른 모듈들은 더욱 구체적인 데이터를 수집하며, 특정 영역을 자세히 살펴보거나 애플리케이션의 중요 요소(예: 메모리 사용량, 렌더링, 오디오 통계)를 모니터링하도록 도와줍니다.

각 모듈에는 고유한 차트가 있습니다. 모듈을 선택하면 창의 하단 섹션에 모듈 세부 정보 창이 나타납니다. 이 창에서 모듈이 수집하는 세부 데이터를 확인할 수 있습니다.

Profiler module 기능
CPU Usage 애플리케이션이 가장 많은 시간을 소비하는 위치(예: 물리, 스크립트, 애니메이션, 가비지 컬렉션)에 대한 요약 정보를 제공합니다. 이 모듈에는 애플리케이션에 대한 광범위한 프로파일링 정보가 들어 있으며, 이러한 정보를 사용하면 애플리케이션의 특정 문제를 조사하기 위해 추가로 사용할 모듈을 쉽게 결정할 수 있습니다. 이 모듈은 닫아도 계속 활성 상태를 유지합니다. CPU 사용 프로파일러 모듈을 참조하십시오.
GPU Usage 그래픽스 처리와 관련된 정보를 표시합니다. 이 모듈은 성능 부하가 높아서 기본적으로 활성화되지 않습니다. GPU 사용 프로파일러 모듈을 참조하십시오.
Rendering Unity가 애플리케이션에서 그래픽스를 렌더링하는 방식에 대한 정보를 표시합니다. 여기에는 정적 및 동적 배칭, SetPass 및 드로우 콜, 삼각형, 버텍스 등에 대한 내용이 포함됩니다. 렌더링 프로파일러 모듈을 참조하십시오.
Memory Unity가 애플리케이션에서 메모리를 할당하는 방식에 대한 정보를 표시합니다. 이 정보는 스크립팅 할당(GC.Alloc)이 가비지 컬렉션을 유발하는 방식이나, 애플리케이션의 에셋 메모리 사용량 추세를 확인할 때 특히 도움이 됩니다. 메모리 프로파일러 모듈을 참조하십시오.
Audio Displays information related to the audio in your application, such as when and how many audio sources play, how much CPU usage the Audio system requires, and how much memory Unity allocates to it. See Audio Profiler module.
Video Displays information related to video in your application. See Video Profiler module.
Physics 물리 엔진이 처리한 애플리케이션의 물리에 대한 정보를 표시합니다. 물리 프로파일러 모듈을 참조하십시오.
Physics (2D) Similar to the Physics Profiler module, this module displays information about where the physics engine has processed 2D physics in your application. See 2D Physics Profiler module.
Network Messages
(deprecated)
멀티플레이어 고수준 API가 송수신하는 저수준 패킷 및 메시지에 관한 정보를 표시합니다.
참고: 멀티플레이어 고수준 API는 지원이 중단되었습니다.
Network Operations
(deprecated)
멀티플레이어 고수준 API가 송수신하는 메시지에 어떤 타입이나 작업이 있는지에 대한 세분화된 정보(예: SyncVars 또는 Commands가 전송된 횟수)를 표시합니다.
참고: 멀티플레이어 고수준 API는 지원이 중단되었습니다.
UI Displays information about how Unity handles UI batching for your application, including why and how Unity batches items. See UI and UI Details Profiler module.
UI Details Similar to the UI Module, this module’s chart adds data about batch and vertices count, as well as markers which include information about user input events that trigger UI changes. See UI and UI Details Profiler module
Global Illumination Unity가 애플리케이션의 전역 조명 하위 시스템에 소비하는 CPU 리소스 양에 대한 정보를 표시합니다. 전역 조명 프로파일러 창을 참조하십시오.
Virtual Texturing Displays statistics about Streaming Virtual Texturing in your application. See the Virtual Texturing Profiler module.

Profiler module overhead

GPU, UI 및 오디오 프로파일러 모듈을 비롯한 일부 프로파일러 모듈은 데이터 수집 부하가 큽니다. 이러한 모듈이 애플리케이션의 성능에 영향을 미치지 않도록 하려면 Profiler Module 드롭다운에서 해당 모듈을 선택 해제하여 비활성화하십시오. 그러면 창에서 모듈이 제거되고, 프로파일러가 해당 모듈의 데이터 수집을 중지하며, 프로파일러의 성능 부하가 감소합니다.

이는 CPU 사용 모듈에는 적용되지 않습니다. 이 모듈은 다른 모듈들이 사용하기 때문에 비활성화되어도 데이터 수집을 멈추지 않습니다.

모듈을 추가하려면 Profiler Module 드롭다운을 선택하고 활성화할 프로파일러를 선택하십시오. 드롭다운에서 프로파일러 모듈을 선택하면 데이터 수집을 시작하지만, 활성 상태가 아닌 기간에 대한 데이터는 보여주지 않습니다.

To avoid the overhead of the GPU Profiler module, it is not active by default. The GPU Profiler module must be active at the start of your application to hook into the graphics driver. If you add it later, it has no effect on most platforms, and the Profiler displays the message “GPU profiling is not supported by the graphics card driver (or it was disabled because of driver bugs)”.

프로파일러가 프로파일러 창이 아니라 Profiler.logFile API를 통해 데이터를 수집하고 디스크로 전송하도록 명령하려는 경우 Profiler.SetAreaEnabled()를 통해 프로파일러 모듈을 비활성화할 수 있습니다.

외부 IDE를 통해 스크립트를 디버깅하는 일부 설정도 성능 부하를 유발할 수 있습니다. 이러한 성능 부하를 피하고 더욱 정확한 측정치를 얻으려면 Editor Attaching 설정(메뉴: Preferences > External Tools)을 비활성화하십시오. 마찬가지로, 빌드 플레이어를 프로파일링할 때에는 Build Settings 를 열고 Script Debugging 을 비활성화하면 성능 부하를 피할 수 있습니다.

Profiler frame charts

프로파일러 창의 상단에는 시간 경과에 따른 성능 데이터가 프레임별로 표시됩니다. 애플리케이션을 실행하면 프로파일러는 각 프레임에 대한 데이터를 기록합니다. 기본적으로 프로파일러 창에는 프로파일링되는 마지막 300프레임의 이력이 표시됩니다. Preferences 창에서 프로파일러가 프로파일링하는 프레임의 수를 최대 2,000개까지 늘릴 수 있습니다.

프로파일러 창의 프로파일러 프레임 차트 영역을 클릭하면 흰색 줄이 나타나 애플리케이션의 한 개 프레임을 강조 표시합니다. 프레임 간에 이동하려면 프로파일러 창의 툴바에 있는 이동 컨트롤을 사용하십시오.

Unity는 차트의 수직 스케일을 자동으로 관리하고, 차트는 창의 수직 공간을 채우려고 시도합니다. 차트에서 더욱 자세한 내용을 보기 위해 다른 프로파일러 모듈을 제거하거나, 차트와 상세 통계 영역 사이의 분할선을 드래그하여 차트의 화면 영역을 늘릴 수 있습니다.

To toggle hiding and displaying a metric in a chart, click the colored square next to its label in its module. This can be useful to identify the causes of spikes. In stacked charts such as the CPU Usage Profiler’s chart, you can reorder the metric labels to affect the stacking order, which helps make more prominent metrics more visible.

각 프로파일러 모듈은 다른 성능 데이터 지표를 수집하여 별도 차트로 표시합니다. 프레임을 클릭하면 Unity는 프로파일러 창 하단의 모듈 세부 정보 창에 해당 프레임에 대한 상세 정보를 표시합니다. 이러한 창에 표시되는 세부 정보 타입은 선택한 프로파일러 모듈에 따라 다릅니다. 각 모듈이 이 영역에 표시하는 세부 정보에 대한 자세한 내용은 프로파일러 모듈의 개별 문서를 참조하십시오.

Standalone Profiler

To use the Standalone Profiler, go to Window > Analysis > Profiler (Standalone process). When you select the Standalone Profiler, Unity launches the Profiler outside of the Unity Editor’s process, and instead launches the Profiler in a new, separate process.

Launching the Profiler in its own dedicated process ensures cleaner Profiler data when you target the Editor or Play mode. It also reduces overhead, because the Profiler isn’t profiling itself or sharing a process with your application or the Editor. The functionality and controls of the Profiler remain the same as when you run the Profiler in the same process as the Editor.

Menu selection for the Standalone Profiler
Menu selection for the Standalone Profiler

When you start a separate process for the Profiler window, it takes longer to start up than opening it in the same process as the Editor. You cannot dock any Editor windows that are connected to the separate process to the main process’s windows. Additionally, when you restart the Editor, Unity does not re-open the windows in the out-of-process Profiler.

Command line arguments

커맨드 라인(예: Windows의 명령 프롬프트, macOS의 터미널, Linux 셸, Android용 adb)을 통해 빌드된 플레이어 또는 Unity 에디터를 시작하는 경우 커맨드 라인 인자를 전달하여 일부 프로파일러 설정을 지정할 수 있습니다.

커맨드 라인 인자 설명
-deepprofiling 빌드된 플레이어에서 세부 프로파일링을 활성화합니다.
-profiler-enable 플레이어 또는 에디터의 시작을 프로파일링합니다. 이 인자를 플레이어에서 사용하면 빌드 설정의 Autoconnect Profiler 옵션을 활성화한 상태로 플레이어를 빌드하는 것과 동일한 효과를 얻을 수 있습니다.

이 인자를 에디터에서 사용하면 에디터 시작 시 프로파일러 정보를 수집하여 프로파일러 창에 표시합니다.
-profiler-log-file <Path/To/Log/File.raw> 이 인자는 프로파일러가 시작 시 프로파일 데이터를 .raw 파일로 스트리밍하도록 설정합니다. 플레이어와 에디터 모두에서 사용할 수 있습니다.
-profiler-capture-frame-count <NumberOfFrames> 이 인자는 시작 시 .raw 파일로 스트리밍할 때 프로파일에서 캡처할 프레임 수를 설정합니다. 플레이어에서만 작동합니다.
-profiler-maxusedmemory 기본적으로 maxUsedMemory는 플레이어의 경우 16MB, 에디터의 경우 256MB입니다. 이 인자를 사용하여 시작 시 maxUsedMemory 파라미터를 커스텀 크기로 설정할 수 있습니다(예: -profiler-maxusedmemory 16777216). 크기는 바이트로 설정됩니다.

  • Added Out-of-process Profiler in 2020.1 NewIn20201
Profiler overview
Audio Profiler module