Analyzing an example Streamline report with Arm DS
Learn how to import, re-analyze, and then explore the XaoS example report included in Streamline. The report was generated running the XaoS example included in Arm Development Studio (Arm DS).
Introduction Import the Linux example project Import the Streamline example report Re-analyze the report Exploring the example report Add the missing source code Example - How to analyze the Streamline capture Add the project path to Streamline locations
Example - How to analyze the Streamline capture
In the Timeline view, you can see a timeline with information such as CPU activity, branch mispredictions, and instructions executed. You can click the timeline to set a cross-section market at 1.75 seconds of execution. That point in the execution time corresponds to one of the activity peaks in the Cortex-A7 core.
In the heat map below, you can see the CPU activity for the different processes. At 1.75s, you notice that the xaos #2750
process is in orange color, using 36.37% of the CPU Activity.
Go to the Call Paths view selecting the Call Paths tab. The main
code is contained within the xaos #2750
process and thread. We want to see which functions in main
are using more resources. If you click main
, you can see that more than half of the samples (52.81%) in main
correspond to the function VisualAnnotateImage
. That corresponds to a 11.11% of samples in the xaos #2750
process.
Now, select the Functions tab to see the Functions view. You can see that the function VisualAnnotateImage
appears at the top and that it is one of the functions with the highest number of samples. Double-click the function to open the Code view for the VisualAnnotateImage
function.
One of the advantages of Streamline is that you can obtain a performance analysis from a high level and general perspective to the lowest level possible. In this example, we began detecting one of the processes with the highest CPU activity. Then, we detected one of the functions with more samples, within the main code that is executed in that process. Now, we can reach the lowest level possible, which is detecting which instructions are executed more frequently.
In the Code view, you see the code for the VisualAnnotateImage
function, which is included in annotate.c
. Select the highlighted icon in the following image to also show the assembly code:
The code in line 174 (for
loop) corresponds to the 49.04% of the samples in the function. If you click the line 174, you can see the associated assembly code in green. You have been able to locate the instructions that are constantly executed in your code. This procedure can help you detecting bottlenecks in your code. The instruction ADD r2,r2,#3
corresponds to the 30.05% of the samples in the VisualAnnotateImage
function.