# Performance Tuning

## Overview

This page explains how to tune VM performance in Private Cloud Director (PCD) by setting image properties. The recommendations listed below should yield positive results for the vast majority of use cases, but the actual outcome will depend on factors like NUMA node topology and the workloads running within the VM. &#x20;

**Note**: Most image property changes apply only to new VMs created after making the update. For existing VMs, plan to rebuild the VM to see the effect.

## Recommended Image Properties

To update image properties, navigate to **Virtual Machines** in the left-hand navigation menu > **Images & VM Snapshots** > **Images** tab. Select an image and click on **Edit Properties**. You can enter one or more of the configurations from this section in a key-value format. Click on **Update Properties** after you complete your updates.&#x20;

### OS Type

The `os_type` key indicates what OS is contained in the image.&#x20;

**Values**

Set the value to one of the following, depending on the image OS.

* `linux`
* `windows`

Please note that the January 2026 release of PCD includes a required drop-down for setting this value in the new image upload wizard. You only need to set this value manually for images uploaded prior to the January 2026 release.

### Machine Type

The `hw_machine_type` key indicates the virtualized chipset used by VMs. Set the value to `q35` to use the newer Q35 chipset for modern x86 workloads.

**Values**

PCD supports two main variants of machine type for x86 hosts:

* `pc`, which corresponds to Intel's I440FX chipset (released in 1996)
* `q35`, which corresponds to Intel's 82Q35 chipset (released in 2007)

The `pc` machine type is considered legacy, and does not support many modern features. Some long-term stable Linux distributions (CentOS, RHEL, possibly others) are moving to support `q35` only.

### Paravirtualized I/O

#### Disk Controller

The `hw_disk_bus` key sets the **virtual disk controller type** that the VM will see when it boots from the image. Setting the value to  `virtio` presents a **paravirtualized** disk device, which generally yields better performance than fully emulated legacy controllers.

**Value**

* `virtio` attaches disks using a paravirtualized controller/device model.

#### Virtual Network Interface Model

The `hw_vif_model` key sets the **virtual network adapter model** exposed to the guest operating system for VMs created from the image. Setting it to `virtio` presents a **paravirtualized** network device, which is commonly used for better network performance than fully emulated adapters.

**Value**

* `virtio` uses a paravirtualized network adapter model.

### QEMU Guest Agent

The `hw_qemu_guest_agent` controls whether QEMU Guest Agent support is enabled for VMs created from an image. When set to `yes`, the compute host can communicate with the guest operating system through a QEMU Machine Protocol (QMP) socket (assuming the QEMU guest agent is installed and running inside the VM). Set it to `no` to explicitly disable guest agent support.

**Values**

* `yes` to enable QEMU guest agent communication via QMP socket
* `no` to disable guest agent support


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/virtualized-clusters/performance-tuning.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
