Am I required to have the Application Insights Profiler enabled in order to see the Optimization Insights?
Yes. The Application Insights (App Insights) Profiler collects profiling data used as an input to generate the Optimization Insights. We recommend using the App Insights Profiler, since it helps you diagnose performance issues in your application.
Learn more about how to enable the App Insights Profiler.
Optimization Insights uses Microsoft’s internal profiling data and Artificial Intelligence (AI) algorithms to detect performance bugs.
- Microsoft’s internal profiler collects random samples of stack traces from Microsoft's own services and applications running on Azure, which amount to thousands of traces collected daily.
- Microsoft then leverages this data to build detection techniques that can:
- Distinguish between what is and isn’t a client’s application code in a trace.
- Determine when a function is being used inefficiently.
- Base techniques on best practices learned from thousands of .NET application traces that are:
- Internal to Microsoft.
- Currently in production.
Microsoft's App Insights Profiler and Optimization Insights work together to provide a holistic approach to performance issue detection.
Application Insights focuses on tracing specific requests, down to the millisecond. It provides an excellent "big picture" view of issues within your application and general best practices to address them.
Optimization Insights draws from Application Insights, requiring you to have your profiler enabled in order to take advantage of Optimization Insights. On top of the big picture provided by Application Insights, Optimization Insights:
- Displays aggregated data gathered over time.
- By default, data samples are collected at least once an hour, with only one trace per role name per hour.
- Connects data with the methods and functions in your application code.
- Narrows down on the culprit for bottle-necking within the code.
The estimated CPU and Memory are determined based on:
- The amount of activity in your app
- Similar usages seen in internal Microsoft apps used for training
In addition to the Memory and CPU percentages, we also include:
- The actual allocation sizes (in bytes)
- A breakdown of the allocated types made within the call
For Memory, the number is just a percentage of all allocations made within the trace. For example, if an issue takes 24%, that means you spent 24% of all your allocations within that call.
For CPU, the percentage is based on the number of CPUs in your machine (4 core, 8 core, etc.) and the trace time. For example, if your trace is 10 seconds long and you have 4 CPUs, you have a total of 40 seconds of CPU time. If the insight says the line of code is using 5% of the CPU, that means it’s using 5% of 40 seconds, which is 2 seconds.
We’ve developed a model by analyzing internal Microsoft code to learn how much CPU time each line of code should be using. We generate insights when your code takes more CPU time than we think it should.
Since Optimization Insights works entirely offline using the profiles uploaded by the App Insights Profiler, there's no extra overhead.
We recommend routinely reviewing Optimization Insights. New performance issues can be detected based on:
- The application load.
- How the application is exercised by the users.
Many users check which Optimization Insights are generated when they run their load tests.
How do I go about prioritizing a particular recommendation provided by Optimization Insights relative to other recommendations as well as other tasks that developers need to work on?
We recommend that you prioritize issue remediation based on the values shown in the Count and Impact columns.
Optimization Insights are included at no additional costs for App Insights Profiler customers. However, although minor, there are indirect costs associated with running the App Insights Profiler. First, the Profiler’s metadata is sent to your App Insights resource, which Application Insights charges for. In the basic pricing plan, your application can send a certain allowance of data each month free of charge. Second, the Profiler uploads profiles to the same region where your Application Insights was created. Therefore, if your application is running in a different region than that of your App Insights resource, we have to send profiler data across different regions. As a result, although very small, you will incur networking costs.
We will provide more information on this topic once the product becomes generally available in 2022.
The roadmap for Optimization Insights is not currently public. However, we are continuously working on making the product better and would love to hear your feedback! If you have any suggestions or questions, please send us an email at [email protected].
How long does it take for the Optimization Insights to appear in the UI after the profiler data is collected?
The Optimization Insights are shown in near real time as the profiler data is ingested and analyzed.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.