Analyzing CPU load
The CPU in a smartphone is made up of a number of cores, a cluster of large and powerful cores, such as the Cortex-A73, and a cluster of smaller and efficient cores, such as the Cortex-A53. Heavy tasks that require a lot of processing power are handled by the powerful cores, and smaller tasks by the more efficient cores. This enables the device to be both high performing and energy efficient (for more information, see big.LITTLE). In Streamline, you can see the overall usage of the CPU by observing the activity on each CPU cluster and core in the system, and how that workload is split across threads.
The CPU Activity charts show the activity of each processor cluster, presented as the percentage of each time slice that the CPU was running. Expand each chart to show the individual cores present inside the cluster. Note that this is the percentage of the time slice at the CPU frequency that is being used, not as a percentage of peak performance.
If an application is CPU bound, quite often the bottleneck is caused by a single thread that is running all of the time. The thread activity panel below the charts can be used to see when each application thread is running. Select threads in this thread view to filter the CPU charts and the Call Paths and Functions views by those threads.
Scheduling bound applications, where neither CPU nor GPU is busy all of the time due to poor synchronization, can been seen in this view as activity oscillating between the impacted CPU thread and the Mali GPU. The CPU thread will block and wait for the GPU to complete, and then the GPU will go idle waiting for the CPU to submit more work to process. Read more information about workload pipelining.
If you identify that the CPU is causing performance issues in your application, use the Call Paths or Functions views to look for function-level hotspots in your code. The Functions view lists all functions that were called during the capture session alongside sample, instance, and usage data. If you used the caliper controls to filter data in the Timeline view, the data in the Functions view reflects this selection.
Refer to our optimization advice for CPU bound content for ideas on how to reduce CPU workloads.