Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Mobile, Graphics, and Gaming blog Streamline for Developers
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • arm streamline
  • Graphics Week
  • Streamline Performance Analyzer
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Streamline for Developers

Stephen Barton
Stephen Barton
May 4, 2017
3 minute read time.

Introduction

Streamline is a great tool to work out where the bottleneck is for your application. It should be your first pass tool in finding out whether you are vertex, fragment, CPU or bandwidth bound. Up until now, for this tool to work you needed to have a rooted a device with Perf enabled in your kernel. As of DS-5 V5.27 this is no longer the case.

 

Figure 1: Overview for Streamline

Streamline can now run from a device in any state and get meaningful data out of it. Obviously, the more information in the system Streamline has access to, the more data it can provide the user with. Below is a list of different states of a system along with the information Streamline can provide in each case.

 

Figure 2: Streamline Capture Modes

  • Non-Rooted Support: This will give you access to any Mali based counters that are on your system and any operating system information that is available to it. You will also get access to some CPU time information. Any information related to CPU and the GPU that a regular user has access to in /proc will now appear in Streamline.
  • Rooted Support without Perf: This will give you the information that is available in the Non-Rooted support section, but as it is done through a root user the results will be a lot more comprehensive as the amount of data gator has access to will be much greater.
  • Rooted Support with Perf: The user will have access to all CPU counters and all GPU counters that are available in the system. They can also find out how much CPU usage is done per thread, per function call all the way to line by line account of CPU information. So, you can directly see how efficient all of your algorithms are.
  • Kernel Change: The user has full access to all that Streamline has to offer. This involves all of the GPU and CPU counters like the Rooted support with Perf option but also has access to call stack unwinding so you can see the CPU usage from the system all the way down to each individual function call.

 

Process

To use Streamline in Non-root mode for Android you need to install the gator application on the device. This can be found in the android folder in your installation. To install you can use the following command

 

adb install -r android/gator-application.apk

 

Once the application is installed you just need to run it and toggle on the gator. Gator will then scan the device and give you some extra information about data it can and can't get off the device in non-root mode.

You then need to connect the device Streamline. Pressing the eye button    in the Streamline tool will help here as it will list all the devices Streamline can connect to. Your device should be listed select it.

Now you can just click the counter configuration to select your counters.

New Counters

Figure 3: List of Non-root Counters

 

There is a completely new section of counters available to you when using non-root mode. They fall into a few sections:

  • CPU Times: This is the amount of CPU time that is spent doing various activities. Such as time spent doing System tasks, time spent doing user tasks and time spent in an idle task.
  • Memory: Here are various different memory options such as the current size of the stack. As well as the text area size and the Shared area size. As well as the amount of shared memory used.
  • System level information: Such as the number of running processes on the system and the number of Total processes on the system.

All of these counters are generated from the proc filesystem. So, you can find more information about any counter from the man page entry for the appropriate proc filesystem.

Once you have selected your counters you start your trace as normal and a trace will be generated.

Summary

The barriers have well and truly been lifted on this tool. You can get performance data out of any Android or Linux based target no matter if you are rooted or non-rooted. Allowing many more users to experience and benefit from the power associated with Streamline. You should use Streamline as your first pass triage tool. Working out whether you are CPU bound, vertex bound, fragment bound or bandwidth bound. If you are fragment or vertex bound you should move on to using the Mali Graphics Debugger to help you optimize further.

 

To find out more about Streamline please visit https://developer.arm.com/products/software-development-tools/ds-5-development-studio/streamline

Anonymous
Mobile, Graphics, and Gaming blog
  • Unlock the power of SVE and SME with SIMD Loops

    Vidya Praveen
    Vidya Praveen
    SIMD Loops is an open-source project designed to help developers learn SVE and SME through hands-on experimentation. It offers a clear, practical pathway to mastering Arm’s most advanced SIMD technologies…
    • September 19, 2025
  • What is Arm Performance Studio?

    Jai Schrem
    Jai Schrem
    Arm Performance Studio gives developers free tools to analyze performance, debug graphics, and optimize apps on Arm platforms.
    • August 27, 2025
  • How Neural Super Sampling works: Architecture, training, and inference

    Liam O'Neil
    Liam O'Neil
    A deep dive into a practical, ML-powered approach to temporal super sampling.
    • August 12, 2025