Analyzing the Example Streamline Report

Learn how to import, re-analyze and then explore the XaoS example Streamline report that is included in Arm DS-5 Development Studio.

Analyzing the Example Streamline Report

We include a sample Streamline report in Arm DS-5 Development Studio, giving you a quick way of exploring the features of Streamline performance analyzer. The sample report was captured by running the XaoS example on a Cortex-A7 & Cortex-A15 Versatile Express board.

Import the Linux Example Projects

The sample Streamline report is located in the XaoS example project, which can be found in

If you don't know how to import the DS-5 example projects, follow the steps described in this tutorial.

What is XaoS?

XaoS is an open-source "interactive fractal zoomer" application. In our case, it runs muli-threaded in order to generate an interesting report.

Open the Streamline Data view

By default, the Streamline Data view is located in the C/C++ perspective.

To show the Streamline Data view from a different perspective (for example, the DS-5 Debug perspective) click: Window > Show View > Streamline Data.

Add the project path to Streamline locations

To add a new Streamline data location you must click on the folder icon located at the top of view. The Analysis Data Locations dialog will pop open. Click Add button in this dialog to add a new path.

Now you can browse for your Streamline data location. Navigate to your workspace folder and then click xaos > Streamline > OK.

Re-analyze the report

The xaos-multithreaded-VE-A15x2-A7x3 capture will now be listed in the Streamline Data view. You will notice that it's marked with a yellow bar, meaning it needs to be re-analyzed. Double-click on it to open the Analyze dialog. You don't need to change any of the default configuration for now, just go ahead and click Analyze.

Why do I need to re-analyze the report?

Since the report was generated with a different version of DS-5, you need to re-analyze it in order to update it.

In the Analyze dialog box, you can load extra program images. This can be useful for gaining a more comprehensive idea of system execution, or alternatively, for focusing on one particular program. Streamline will load debug symbols if available. The options in this dialog are a subset of the full Capture Options dialog.

Exploring the sample report

The XaoS report will open in a new window automatically once you've re-analyzed it, giving you a summary view of CPU performance, branch mispredictions, memory and cache accesses, along with a sample of the frame buffer. Note that the yellow bar will now be colored blue in the Streamline Data view, meaning it's up-to-date.

In the panel underneath these charts, you'll see a heatmap for each process and thread. Click on individual processes or threads to reconfigure the charts to reflect them. You'll also see annotations on each thread and the frame buffer, which are being passed from the source code. These are a very useful profiling tool when you're working on your own code.

Along the top of the report, you'll see tabs which break the data down all the way to source code level. When using Streamline to profile your own software, you'll look for areas where the CPU is being pushed hard, or where the cache is being heavily used, and then try to identify which line of code is causing this.

I see a lot of <unknown code in "x">

This relates to the images that you use for analysis in the first place. By default, this capture only includes a couple of images, so whilst Streamline knows that function "x" is taking up a certain percentage of processor time, it doesn't know what this code is. 

Add the missing source code

In the Functions tab, try double-clicking on a function name such as calculate. This will take you to the corresponding line of source code. However, you'll see that the source file is missing.

Follow the on-screen hint to Click here to locate the file. You can find the source code for the XaoS example project in your workspace.

Once you've located the file, you'll see the source code appear: