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.

Example Streamline Timeline view for analysis

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.

Example Streamline Call Paths view for analysis

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.

Example Streamline Functions view for analysis

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:

Streamline Code view selection for analysis

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.

Example Streamline Code view for analysis

Previous Next