> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get started with performance tuning and optimization

You can use the performance build to measure system performance. Additionally, you can compile the debug tools to analyze and resolve any performance issues.

## **Prerequisites**

To start developing your software using Qualcomm<sup>®</sup> Linux<sup>®</sup>, set up your infrastructure as described in the [Build Qualcomm Linux using Yocto](https://dragonwingdocs.qualcomm.com/Key-Documents/Yocto-Guide/build-qualcomm-linux). The build guide also explains the common build workflows.

## **Performance analysis and tuning process workflow**

The following figure shows a workflow to achieve the expected system performance:

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/OKFyShYzKWv2bmj8/System/Performance/media/k2l-performance/qual_linux_perform_workflow.svg?fit=max&auto=format&n=OKFyShYzKWv2bmj8&q=85&s=1ef1fca0a6f1a8a41c923cf740f221be" alt="Figure : Workflow to measure the Qualcomm Linux system performance" width="1210" height="310" data-path="System/Performance/media/k2l-performance/qual_linux_perform_workflow.svg" />

  <p className="text-sm text-gray-700">
    Figure : Workflow to measure the Qualcomm Linux system performance
  </p>
</div>

The workflow diagram summarizes the performance analysis and tuning process in six steps:

1. Prepare a performance build using analysis tools.
2. Measure key performance indicators (KPIs) such as system benchmarks and boot time.
3. Troubleshoot performance issues including CPU workload and memory usage.
4. Apply tuning and customizations to address identified issues.
5. Evaluate KPI targets to determine if performance goals are met. If performance goals aren't met, troubleshoot and tune according to system requirements. This forms an iterative loop for continuous performance improvement.
6. Report unresolved issues at [Qualcomm support](https://www.qualcomm.com/support/).

## **Prepare performance build**

It's recommended to use the performance build for performance measurement or debugging. To prepare a performance build use the following command:

```text theme={null}
kas build meta-qcom/ci/<machine>.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/performance.yml
```

For more information, see [Build Qualcomm Linux using Yocto](https://dragonwingdocs.qualcomm.com/Key-Documents/Yocto-Guide/build-qualcomm-linux).

The performance build uses the following kernel configuration fragments from the source code:

`meta-qcom/recipes-kernel/linux/linux-qcom-6.18/configs/bsp-additions.cfg`

These kernel configurations are defined in the source code kernel recipe at

`meta-qcom/recipes-kernel/linux/linux-qcom_6.18.bb`

## **Compile performance tools**

The tools to debug performance issues include LTTng, GCC, G++, htop, perf utility, iotop, and lmbench.

To compile the debug tools, add them to the `qcom-multimedia-image.bb` distribution image in the source code in the following path:

`meta-qcom-distro/recipes-products/images/`

```text theme={null}
diff --git a/recipes-products/images/qcom-multimedia-image.bb b/recipes-products/images/qcom-multimedia-image.bb
index 23a2f40..5295bf9 100644
--- a/recipes-products/images/qcom-multimedia-image.bb
+++ b/recipes-products/images/qcom-multimedia-image.bb
@@ -10,4 +10,20 @@ REQUIRED_DISTRO_FEATURES += "wayland"
CORE_IMAGE_BASE_INSTALL += " \
      packagegroup-qcom-multimedia \
      packagegroup-qcom-iot-base-utils \
+     lttng-tools \
+     lttng-tools-dev \
+     lttng-modules \
+     lttng-modules-dev \
+     lttng-ust \
+     lttng-ust-dev \
+     liburcu-dev \
+     gcc \
+     g++ \
+     iotop \
+     htop \
+     perf \
+     lmbench \
"
```

## **Next steps**

* [Features impacting performance](./features-impacting-performance)
