Who is this for?

This Learning Path is for software developers and performance engineers who want to optimize applications on Arm-based servers using Arm Performix.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Configure Arm Performix and use its recipes to guide performance analysis on Arm-based systems
  • Profile a C++ application with the Code Hotspots recipe to identify functions consuming the most CPU time
  • Use CPU Microarchitecture and Instruction Mix recipes to pinpoint pipeline bottlenecks and missed SIMD opportunities
  • Optimize the application with Arm Neon intrinsics and compare Performix runs to validate changes in runtime and bottleneck behavior

Prerequisites

Before starting, you will need the following:

  • SSH access to an Arm Linux server with at least three Performance Monitor Unit (PMU) counters
  • Arm Performix installed on your local machine. For installation instructions, see the Arm Performix install guide .
  • A C++ compiler such as GCC or Clang installed on the target Linux server

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll configure Arm Performix, connect it to an Arm Linux target over SSH, and build a C++ dot-product program. First, you’ll use the Code Hotspots, CPU Microarchitecture, and Instruction Mix recipes to identify CPU bottlenecks and missed SIMD use in the baseline sample program. Then, you’ll vectorize the hot loop with Arm Neon intrinsics, rebuild, and rerun the recipes. After rerunning the recipes, you’ll compare runtime, hotspots, and pipeline behavior.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which path should I use for my binary when I run a recipe?
Enter the path on the target system relative to the target user’s home directory. For example, use a path such as performix-analysis/dot_scalar. If Performix can’t start the binary, check the relative path and file permissions on the target.
What result should I expect from the Code Hotspots recipe?
You should see a list of functions ranked by CPU time. Use this view to choose which functions to inspect or optimize first.
How do I run the CPU Microarchitecture recipe with the same parameters as before?
Specify the same binary path and arguments you used previously, for example, performix-analysis/dot_scalar 16777216 2000. Then, run the recipe to get a Topdown breakdown of pipeline usage.
How do I know from the Instruction Mix recipe that my run is scalar-only?
Look for results dominated by scalar operations with no SIMD usage reported. This indicates missed vectorization opportunities.
After I add Neon intrinsics, what should I compare between runs?
Compare total runtime, changes in hotspot rankings, and shifts in the CPU Microarchitecture breakdown. In Instruction Mix, check for increased SIMD usage relative to the scalar run.
Next