UWP 앱의 에너지 사용 분석Analyze energy use in UWP apps

Visual Studio 에너지 소비 프로파일러를 사용하면 자체 배터리로 전부 또는 일부의 시간 동안 실행하는 저전력 태블릿 장치에서 UWP 앱의 전력 및 에너지 소비를 분석할 수 있습니다.The Visual Studio Energy Consumption profiler helps you analyze the power and energy consumption of UWP apps on low-power tablet devices that run all or part of the time on their own batteries. 배터리로 구동하는 장치에서 앱이 너무 많은 에너지를 사용할 경우 고객 불만족을 일으킬 수 있고, 결과적으로 고객이 설치를 제거할 수도 있습니다.On a battery-powered device, an app that uses too much energy can cause so much customer dissatisfaction that, eventually, customers might even uninstall it. 에너지 사용을 최적화하면 고객이 앱을 채택하고 사용하는 사례가 증가할 수 있습니다.Optimizing energy use can increase your app's adoption and use by customers.

에너지 소비 프로파일러 소개, 작동 방법 및 측정 대상What the Energy Consumption profiler is, how it works, and what it measures

에너지 소비 프로파일러는 세션을 프로파일링하는 중 장치의 디스플레이, CPU, 네트워크 연결 활동을 캡처합니다.The Energy Consumption profiler captures the activities of the display, CPU, and network connections of a device during a profiling session. 그런 다음 그러한 활동에 사용된 전력과 세션 프로파일링의 총 에너지량의 추정치를 생성합니다.It then generates estimates of the power used for those activities and the total amount of energy for the profiling session.

참고

에너지 프로파일러는 표준 참조 장치 하드웨어를 사용하여 응용 프로그램을 실행하는 저전력 태블릿 장치의 대표적 전력 및 에너지 사용을 추정합니다.The energy profiler estimates power and energy use by using a software model of standard reference device hardware that is representative of the low powered tablet devices your application might run on. 가장 정확한 추정치를 제공하려면 저전력 태블릿 장치에서 프로파일 데이터를 수집하는 것이 좋습니다.To provide the best estimates, we recommend that you collect the profile data on a low powered tablet device.

이 모델은 다양한 저전력 장치에 대해 상당히 정확한 추정치를 제공하지만 프로파일링하는 장치의 실제 값은 달라질 가능성이 높습니다.Although the model provides good estimates for a variety of low-powered devices, the actual values of the device you profile will likely be different. 이러한 값을 사용하여 다른 리소스 사용에 비해 많은 에너지를 사용하고 있어서 최적화해야 할 디스플레이, CPU, 네트워크 활동을 찾습니다.Use the values to find display, CPU, and network activities that are costly relative to other resource uses and so might be good candidates for optimization.

에너지 소비 프로파일러는 이러한 전원에너지에 대한 정의를 사용합니다.The Energy Consumption profiler uses these definitions of power and energy:

  • 전원 은 일정 시간 동안 일을 수행하는 데 사용된 힘의 효율을 측정합니다.Power measures the rate that force is used to perform work that is done in a period of time. 전기 과학에서 전력의 표준 단위는 와트입니다. 와트는 1암페어의 전류가 1볼트의 전위 차이를 통해 흐를 때 작업이 수행되는 속도로 정의됩니다.In electrical science, the standard unit of power is a watt, which is defined as the rate at which work is done when one ampere of current flows through an electrical potential difference of one volt. 전원 사용 그래프에서 단위가 mW (밀리와트)로 표시되고 1mW는 1W의 1/1000에 해당합니다.In the Power Usage graph, the units are displayed as milliwatts mW which are one thousandth of a watt.

    전력은 속도이므로 방향(일정 시간 동안 작업이 증가하거나 감소할 수 있음)과 속도(작업이 증가하거나 감소하는 양)가 있습니다.Note that because power is a rate, it has a direction (the work can increase or decrease in a period of time) and a speed (the amount that the work increases or decreases).

  • 에너지 는 배터리의 전력 용량과 같이 총 전력량을 용량 또는 전위로 측정하거나 일정 기간 동안 사용된 총 전력량으로 측정합니다.Energy measures the total amount of power, either as a capacity or potential, as in the power capacity of a battery, or as the total amounted of power expended over a period of time. 에너지 단위는 1시간 동안 1와트가 일정하게 적용된 전력량인 와트-시간입니다.The unit of energy is a watt-hour, the amount of power of one watt constantly applied for one hour. 에너지 요약에서 단위가 mW-h(밀리와트시)로 표시됩니다.In the Energy Summary, the units are displayed as milliwatt-hours mW-h.

    에너지 양, 사용한 전원, 사용한 전체 에너지Energy capacity, power used, total energy used

    예를 들어, 태블릿의 완전히 충전된 배터리에는 저장된 에너지가 상당히 많습니다.For example, a fully charged battery in a tablet has a certain amount of stored energy. 네트워크 통신, 값 계산, 그래픽 표시 등의 작업을 수행하는 데 에너지를 사용하므로 다른 속도로 배터리 전력이 소실됩니다.As the energy is used to perform tasks such as communicating over a network, calculating values, or displaying graphics, the power of the battery dissipates at different rates. 특정 기간 동안 소비된 총 전력도 에너지로 측정합니다.For any period of time, the total of the power consumed is also measured by energy.

사용자 표시로 시나리오 식별Identify scenarios with user marks

프로파일링 데이터에 사용자 표시 를 추가하여 타임라인 눈금자의 영역을 식별할 수 있습니다.You can add user marks to your profiling data to help identify areas in the timeline ruler.

시간 표시 막대의 사용자 표시User marks in the timeline

이 표시는 메서드 실행 시 타임라인에 주황색 삼각형으로 표시됩니다.The mark appears as an orange triangle in the timeline at the time the method executed. 이 표시를 마우스로 가리키면 메시지와 시간이 도구 설명으로 표시됩니다.The message and the time are displayed as a tooltip when you hover over the mark. 두 개 이상의 사용자 표시가 서로 가까이 있으면 표시가 병합되고 도구 설명 데이터가 결합됩니다.If two or more user marks are close together, the marks are merged and the tooltip data is combined. 타임라인을 확대하면 표시가 분리되어 표시됩니다.You can zoom in on the timeline to separate the marks.

C#, Visual Basic, C++ 코드에 표시 추가Add marks to C#, Visual Basic, C++ code

C#, Visual Basic, C++ 코드에 사용자 표시를 추가하려면 먼저 Windows.Foundation.Diagnostics LoggingChannel 개체를 만듭니다.To add a user mark to C#, Visual Basic, C++ code, first create a Windows.Foundation.Diagnostics LoggingChannel object. 그런 다음 LoggingChannel.LogMessage 메서드의 표시할 코드의 지점에 호출을 삽입합니다.Then insert calls to LoggingChannel.LogMessage methods at the points in your code that you want to mark. 호출에 LoggingLevel.Information 을 사용합니다.Use LoggingLevel.Information in the calls.

메서드가 실행되면 프로파일링 데이터에 사용자 표시와 메시지가 추가됩니다.When the method executes, a user mark is added to the profiling data along with a message.

참고

예제는 Windows SDK 샘플 LoggingSession 샘플을 참조하세요.See the Windows SDK Sample LoggingSession sample for examples.

JavaScript 코드에 표시 추가Add marks to JavaScript code

사용자 표시를 추가하려면 표시할 코드의 지점에 다음 코드를 추가합니다.To add user marks add the following code at the points in your code that you want to mark:

if (performance && performance.mark) {  
    performance.mark(markDescription);  
}  

markDescription 은 사용자 표시 도구 설명에 표시할 메시지가 포함되는 문자열입니다.markDescription is a string that contains the message to display in the user mark tooltip.

프로파일링을 위한 환경 구성Configure your environment for profiling

더 정확하게 예측하려면 배터리 전원을 사용하는 저전력 장치에서 앱의 에너지 사용을 프로파일링합니다.To obtain the good estimates, you'll want to profile the energy use of the app on a low-powered device that is being powered by its batteries. Visual Studio는 이러한 장치에서 대부분 실행되지 않으므로 Visual Studio 원격 도구를 사용하여 장치에 Visual Studio 컴퓨터를 연결해야 합니다.Because Visual Studio does not run on most of these devices, you'll need to connect your Visual Studio computer to the device using the Visual Studio remote tools. 원격 장치에 연결하려면 Visual Studio 프로젝트와 원격 장치를 모두 구성해야 합니다.To connect to a remote device, you need to configure both the Visual Studio project and the remote device. 자세한 내용은 원격 컴퓨터에서 UWP 앱 실행을 참조하세요.See Run UWP apps on a remote machine for more information.

  • UWP 시뮬레이터 또는 Visual Studio 컴퓨터에서 에너지 프로파일링이 권장되지 않습니다.We don't recommend energy profiling on the UWP simulator or on the Visual Studio computer. 실제 장치에서 프로파일링할 경우 실제에 훨씬 더 가까운 데이터가 제공됩니다.Profiling on the actual device provides far more realistic data.
    • 대상 장치에 배터리 전원을 연결한 상태에서 프로파일링합니다.Profile on the target device while it is powered by its batteries.
    • 동일한 리소스(네트워크, CPU 또는 디스플레이)를 사용할 수 있는 다른 앱을 닫습니다.Close other apps that might use the same resources (network, CPU, or display).

앱의 에너지 프로파일 데이터 수집Collect energy profile data for your app

  1. 디버그 메뉴에서 디버그하지 않고 진단 시작을 선택합니다.On the Debug menu, choose Start Diagnostics Without Debugging.

    진단 허브에서 에너지 소비 선택Choose Energy Consumption in the diagnostics hub

  2. 에너지 소비 를 선택한 다음 시작을 선택합니다.Choose Energy Consumption and then choose Start.

    참고

    에너지 소비 프로파일러를 시작하면 VsEtwCollector.exe 실행 권한을 요청하는 사용자 계정 제어 창이 나타날 수 있습니다.When you start the Energy Consumption profiler, you might see a User Account Control window requesting your permission to run VsEtwCollector.exe. 를 선택합니다.Choose Yes.

  3. 데이터를 수집하려면 앱을 실행합니다.Exercise your app to collect data.

  4. 프로파일링을 중지하려면 Visual Studio로 다시 전환하고(Alt + Tab) 진단 허브 페이지에서 수집 중지 를 선택합니다.To stop profiling, switch back to Visual Studio (Alt + Tab) and choose Stop collection on the Diagnostic hub page.

    데이터 수집 중지Stop collecting data

    Visual Studio에서 수집된 데이터를 분석하고 결과를 표시합니다.Visual Studio analyzes the collected data and displays the results.

설치된 에너지 프로파일 데이터 수집Collect energy profile data for an installed app

에너지 소비 도구는 Visual Studio 솔루션에서 시작하거나 Microsoft Store에서 설치하는 UWP 앱에서만 실행할 수 있습니다.The Energy Consumption tool can only be run on UWP apps that are launched from a Visual Studio solution or are installed from the Microsoft Store. 솔루션을 Visual Studio에서 열 경우 기본 대상은 시작 프로젝트입니다.When a solution is open in Visual Studio, the default target is the Startup Project. 설치된 앱을 대상으로 하려면To target an installed app:

  1. 대상 변경 을 선택한 다음 설치된 응용 프로그램을 선택합니다.Choose Change Target and then choose Installed App.

  2. 설치된 응용 프로그램 패키지 선택 목록에서 대상을 선택합니다.From the Select Installed App Package list, choose the target.

  3. 진단 허브 페이지에서 에너지 소비 를 선택합니다.Choose Energy Consumption on the diagnostics hub page.

  4. 프로파일링을 시작하려면 시작 을 선택합니다.Choose Start to begin profiling.

    프로파일링을 중지하려면 Visual Studio로 다시 전환하고(Alt + Tab) 진단 허브 페이지에서 수집 중지 를 선택합니다.To stop profiling, switch back to Visual Studio (Alt + Tab) and choose Stop collection on the Diagnostic hub page.

에너지 프로파일 데이터 분석Analyze energy profile data

에너지 프로필 데이터가 Visual Studio 문서 창에 표시됩니다.The energy profile data is displayed in Visual Studio document window:

에너지 프로파일러 보고서 페이지Energy profiler report page

1단계Step 1 보고서 파일의 이름은 ReportYYYYMMDD-HHMM.diagsession입니다.The report file is named ReportYYYYMMDD-HHMM.diagsession. 보고서를 저장할 경우 이름을 변경할 수 있습니다.You can change the name if you decide to save the report.
2단계Step 2 타임라인에는 프로파일링 세션 길이, 응용 프로그램 수명 주기 시작 이벤트 및 사용자 표시가 표시됩니다.The timeline shows the length of the profiling session, app lifecycle activation events, and user marks.
3단계Step 3 파란색 막대를 끌어 타임라인의 부분의 선택하여 보고서를 타임라인의 일부분으로 제한할 수 있습니다.You can restrict the report to a part of the timeline by dragging the blue bars to select a region of the timeline.
4단계Step 4 전원 사용 그래프는 프로파일링 세션 동안 장치 리소스로 발생하는 전원 출력의 변화를 나타내는 다중선형 차트입니다.The Power Usage graph is a multi-line chart that displays the change in the power output that is caused by a device resource during a profiling session. 에너지 소비 프로파일러는 CPU, 네트워크 작업 및 화면 디스플레이에서 사용하는 전력을 추적합니다.The Energy Consumption profiler tracks the power used by the CPU, network activity, and the screen display.
5단계Step 5 리소스(설정/해제) 그래프는 네트워크 에너지 소비에 대한 자세한 정보를 제공합니다.The Resources (On/Off) graph provides details of network energy costs. 네트워크 표시줄은 네트워크 연결이 열려 있던 시간을 나타냅니다.The Network bar represents the time that the network connection was open. 데이터 전송 하위 막대는 앱에서 네트워크를 통해 데이터를 수신하거나 송신하는 시간을 나타냅니다.The Data Transfer child bar is the time that the app was receiving or sending data over the network.
6단계Step 6 에너지 사용 요약 에서는 선택한 타임라인에서 CPU, 네트워크 작업 및 화면 디스플레이 사용에 비례하는 총 에너지양을 보여 줍니다.The Energy Usage Summary shows the proportional amount of the total energy that was used in the selected timeline by the CPU, network activity, and the screen display.

에너지 프로필 데이터를 분석하려면To analyze the energy profile data

리소스 전력이 가장 많이 사용되는 부분을 찾습니다.Find an area where resource power peaked. 최고 영역을 앱의 기능에 연결합니다.Relate the peak area to the functionality of your app. 그런 다음 타임라인에서 타임라인 제어 막대를 사용하여 영역을 확대합니다.Then use the timeline control bars on the timeline to zoom in on the area. 네트워크 사용에 초점을 두는 경우 리소스(설정/해제) 그래프에서 네트워크 노드를 확장하여 앱이 연결을 통해 데이터를 수신하거나 전송하는 시간에 대해 네트워크 연결이 열리는 시간을 비교합니다.If you are focused on network usage, expand the Network node in the Resources (On/Off) graph to compare the time that the network connection was open to the time that the app was receiving or transferring data over the connection. 네트워크가 불필요하게 열리는 시간을 줄이는 것은 매우 효과적인 최적화입니다.Reducing the time that the network is unnecessarily opened is a very effective optimization.

에너지 사용 최적화Optimize energy use

네트워크 연결에서는 데이터 전송 이외에 연결 초기화, 유지, 종료의 에너지 비용이 발생합니다.In addition to transmitting data, network connections incur energy costs for initializing, maintaining, and shutting down the connection. 일부 네트워크는 단일 연결에서 더 많은 데이터를 전송할 수 있도록 데이터가 전송 또는 수신된 후 일정 기간 동안 연결을 유지합니다.Some networks maintain the connection for a period of time after data is sent or received to allow more data over to be transmitted over a single connection. 리소스(설정/해제) 창을 사용하여 앱이 연결과 상호 작용하는 방법을 검사할 수 있습니다.You can use the Resources (On/Off) pane to examine the way your app interacts with the connection.

리소스(설정/해제) 창Resources (On/Off) pane

네트워크데이터 전송 막대에서 일련의 작은 데이터 패킷을 가끔 전송하기 위해 오랜 시간 동안 연결이 열려 있다고 표시되는 경우, 데이터를 한번에 전송하도록 일괄 처리하여 네트워크가 열려 있는 시간을 줄이고 에너지 소비도 절약할 수 있습니다.If the Network and Data Transfer bars show that the connection is open for long periods to intermittently transmit a series of small data packets, you can batch the data to send it in one transmission, reduce the time that the network is open, and thus save energy costs.

에너지 소비 요약 창Energy Consumption Summary pane

디스플레이의 에너지 비용에 대한 제어 권한이 적습니다.You have less control over the energy costs of the display. 대부분의 화면은 어두운 색을 표시할 때보다 밝은 색을 표시할 때 더 많은 에너지를 필요로 하므로 어두운 배경을 사용하는 것은 비용을 줄이는 한 가지 방법입니다.Most screens require more energy to display light colors than darker colors, so using a dark background is one way to reduce costs.

기타 리소스Other resources

  • Windows 개발자 센터에 나와 있는 C#/VB/C++ 및 XAMLJavaScript 및 HTML연결 상태 및 원가 관리 섹션에서는 앱이 네트워크 트래픽 비용을 최소화하는 데 사용할 수 있는 네트워크 연결 정보를 제공하는 Windows API에 대해 설명합니다.The Connection state and cost management sections for C#/VB/C++ and XAML and JavaScript and HTML in the Windows Dev Center describe the Windows APIs that provide network connectivity information that your app can use to minimize the cost of network traffic.

    UWP 앱에 대한 Visual Studio 시뮬레이터를 사용하여 네트워크 정보 API의 데이터 연결 속성을 시뮬레이션할 수 있습니다.The Visual Studio simulator for UWP apps enables you to simulate data connection properties of the network information APIs. 시뮬레이터에서 UWP 앱 실행을 참조하세요.See Run UWP apps in the simulator

  • JavaScript 함수 타이밍CPU 사용 도구를 사용하면 비효율적 함수 때문에 발생하는 CPU 로드를 줄일 수 있습니다.The JavaScript Function Timing and the CPU Usage tools can help you reduce the CPU load when it is caused by inefficient functions. CPU 사용량 분석을 참조하세요.See Analyze CPU usage.

참고 항목See also

Visual Studio의 프로파일링Profiling in Visual Studio
프로파일링 기능 둘러보기Profiling feature tour