Performance

This area of the documentation is about system tuning and will list various tools that can either help to determine the state of the system or to tune it for a given workload.

Note

Disclaimer - To tune you need to know your system and workload

Almost all tunable parameters can be good for one and bad for another type of workload or environment. If the system could do it for you, it probably would be the default setting already.

Not even the goal of tuning is the same for everyone; do you want to improve latency, throughput, thermal or work-unit-per-power? But those default settings generally have to aim for a good compromise on all of these aspects, no matter what you will do with your system.

Therefore you have to know your workload, your system and the important metrics of what you want to achieve. The more you know, the more you’ll be able to improve your system it to suit your needs by:

  • Identifying bottlenecks as unblocking them usually has the biggest impact for your workload

  • Identifying where your needs are different from the generic assumptions to change related tunables

  • Identifying architectural mismatches between the solution and your needs to allow adapting

To identify those aspects and to then apply static or dynamic tuning Ubuntu carries various tools, a few of them are outlined in more detail in the following sections.

  • Profile-Guided Optimization PGO

  • Obtain the hierarchical map of key computing elements using hwloc and lstopo

  • Check and control CPU governors, power and frequency with cpupower

  • Dynamic, adaptive system tuning with TuneD