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

# CPUPartitionConfig

> CPUPartitionConfig is a CPU partition config document.
CPUPartitionConfig declares the host CPUs each fixed Talos workload root may run on.

The roots are `init`, `system`, `podruntime`, `kubepods`, `taloscontainers` and
`virtualMachines`. A root left out of the document is unrestricted; a root listed in
the document must name at least one CPU. Roots may overlap each other.

The document does not require virtual machines: omit `virtualMachines` to partition
the host services and Kubernetes pods of an ordinary node.

The virtual machine root may be divided into named, pairwise disjoint slices. An
exclusive slice must not overlap any other root, and every other root must then be
bounded explicitly.

In container mode the document is validated but declares no policy.


```yaml theme={null}
apiVersion: v1alpha1
kind: CPUPartitionConfig
# Host CPUs for machined and the early boot services.
init:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for Talos system services (apid, trustd, udevd, ...).
system:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for the Kubernetes runtime components (containerd, the kubelet, etcd).
podruntime:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for Kubernetes pods.
kubepods:
    cpus: 2-7 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
```

```yaml theme={null}
apiVersion: v1alpha1
kind: CPUPartitionConfig
# Host CPUs for machined and the early boot services.
init:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for Talos system services (apid, trustd, udevd, ...).
system:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for the Kubernetes runtime components (containerd, the kubelet, etcd).
podruntime:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for Kubernetes pods.
kubepods:
    cpus: 2-3 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for containers declared via `ContainerConfig`.
taloscontainers:
    cpus: 0-1 # Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.
# Host CPUs for virtual machines, optionally divided into named slices.
virtualMachines:
    cpus: 4-7 # Host CPUs of the virtual machine root, as a Linux CPU list.
    # Named, pairwise disjoint subsets of `cpus`.
    slices:
        - name: database # Unique slice name: 1 to 63 ASCII letters, digits and hyphens. `shared` is reserved.
          cpus: 6-7 # Host CPUs of the slice, as a Linux CPU list within the virtual machine root.
          exclusive: true # Keep the slice's CPUs out of every other root.
```

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`init`</td>
      <td>[CPUPartitionRoot](#init)</td>
      <td>Host CPUs for machined and the early boot services.</td>

      <td />
    </tr>

    <tr>
      <td>`system`</td>
      <td>[CPUPartitionRoot](#system)</td>
      <td>Host CPUs for Talos system services (apid, trustd, udevd, ...).</td>

      <td />
    </tr>

    <tr>
      <td>`podruntime`</td>
      <td>[CPUPartitionRoot](#podruntime)</td>
      <td>Host CPUs for the Kubernetes runtime components (containerd, the kubelet, etcd).</td>

      <td />
    </tr>

    <tr>
      <td>`kubepods`</td>
      <td>[CPUPartitionRoot](#kubepods)</td>
      <td>Host CPUs for Kubernetes pods.</td>

      <td />
    </tr>

    <tr>
      <td>`taloscontainers`</td>
      <td>[CPUPartitionRoot](#taloscontainers)</td>
      <td>Host CPUs for containers declared via `ContainerConfig`.</td>

      <td />
    </tr>

    <tr>
      <td>`virtualMachines`</td>
      <td>[CPUPartitionVirtualMachines](#virtualmachines)</td>
      <td>Host CPUs for virtual machines, optionally divided into named slices.</td>

      <td />
    </tr>
  </tbody>
</table>

## init

CPUPartitionRoot bounds one fixed root to a set of host CPUs.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.\
      \
      CPU IDs are the kernel's logical CPU numbers, SMT threads included.</td>

      <td />
    </tr>
  </tbody>
</table>

## system

CPUPartitionRoot bounds one fixed root to a set of host CPUs.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.\
      \
      CPU IDs are the kernel's logical CPU numbers, SMT threads included.</td>

      <td />
    </tr>
  </tbody>
</table>

## podruntime

CPUPartitionRoot bounds one fixed root to a set of host CPUs.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.\
      \
      CPU IDs are the kernel's logical CPU numbers, SMT threads included.</td>

      <td />
    </tr>
  </tbody>
</table>

## kubepods

CPUPartitionRoot bounds one fixed root to a set of host CPUs.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.\
      \
      CPU IDs are the kernel's logical CPU numbers, SMT threads included.</td>

      <td />
    </tr>
  </tbody>
</table>

## taloscontainers

CPUPartitionRoot bounds one fixed root to a set of host CPUs.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs as a Linux CPU list, e.g. `0-1` or `0,2-3`.\
      \
      CPU IDs are the kernel's logical CPU numbers, SMT threads included.</td>

      <td />
    </tr>
  </tbody>
</table>

## virtualMachines

CPUPartitionVirtualMachines bounds the virtual machine root and divides it into slices.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs of the virtual machine root, as a Linux CPU list.</td>

      <td />
    </tr>

    <tr>
      <td>`slices`</td>
      <td>[CPUPartitionSlice](#slices%5B%5D)</td>
      <td>Named, pairwise disjoint subsets of `cpus`.\
      \
      A configuration patch replaces this list as a whole.</td>

      <td />
    </tr>
  </tbody>
</table>

### slices\[]

CPUPartitionSlice is one named subset of the virtual machine root.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`name`</td>
      <td>string</td>
      <td>Unique slice name: 1 to 63 ASCII letters, digits and hyphens. `shared` is reserved.</td>

      <td />
    </tr>

    <tr>
      <td>`cpus`</td>
      <td>string</td>
      <td>Host CPUs of the slice, as a Linux CPU list within the virtual machine root.</td>

      <td />
    </tr>

    <tr>
      <td>`exclusive`</td>
      <td>bool</td>
      <td>Keep the slice's CPUs out of every other root.</td>

      <td />
    </tr>
  </tbody>
</table>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.