# Choose a runner

> Pick GitLab-compatible SaaS tags and RealHW hardware markers.

Source: https://docs.realhw.dev/get-started/choose-a-runner/
Documentation index: https://docs.realhw.dev/llms.txt

Choose RealHW capacity in three layers:

1. Start with a GitLab-compatible SaaS tag for the generic runner shape.
2. Add RealHW hardware markers when the job needs specialized hardware.
3. Add `HW_*` variables only when the job needs an explicit reservation or placement override.

## Generic job

```yaml
unit-tests:
  tags:
    - saas-linux-medium-amd64
  script:
    - cargo test
```

## Hardware-specific job

```yaml
xdp-tests:
  tags:
    - saas-linux-large-amd64
    - nic:tier:25g
    - nic:driver:mlx5_core
  variables:
    HW_NIC_TIER: "25g"
  script:
    - ./run-xdp-tests.sh
```

## When to use variables

Tags describe eligible runner capacity. `HW_*` variables describe what this job must reserve now.

Use variables for explicit CPU or memory overrides, NIC tier reservation, SR-IOV VF count, NUMA policy, hugepage size, and placement preference.
