# Advanced reservations

> Use HW variables for explicit resource requests.

Source: https://docs.realhw.dev/hardware-markers/advanced-reservations/
Documentation index: https://docs.realhw.dev/llms.txt

Use `HW_*` variables when tags are not specific enough.

Tags select eligible capacity. Variables request concrete resources for this job.

## Common variables

| Variable | Use |
|---|---|
| `HW_CPU` | Override the CPU count inferred from the SaaS tag. |
| `HW_MEMORY` | Override the memory inferred from the SaaS tag. |
| `HW_GPU_COUNT` | Reserve a specific number of GPUs. |
| `HW_GPU_MODEL` | Request a specific GPU model. |
| `HW_NIC_TIER` | Reserve a NIC tier such as `25g`. |
| `HW_NIC_DRIVER` | Request a NIC driver such as `mlx5_core`. |
| `HW_SRIOV_VF_COUNT` | Reserve SR-IOV virtual functions. |
| `HW_NUMA_POLICY` | Use `any`, `single-node`, or `spread`. |
| `HW_HUGEPAGE_BYTES` | Reserve hugepage bytes. |
| `HW_PREEMPTIBLE` | Allow preemptible capacity for generic jobs. |
| `HW_PLACEMENT` | Use `auto`, `bare-metal`, or `cloud`. |

## Example

```yaml
packet-test:
  tags:
    - saas-linux-large-amd64
    - nic:tier:25g
  variables:
    HW_CPU: "8"
    HW_MEMORY: "16Gi"
    HW_NIC_TIER: "25g"
    HW_SRIOV_VF_COUNT: "1"
    HW_NUMA_POLICY: "single-node"
  script:
    - ./run_packet_test.sh
```
