xl list list running domainsxl create cfg start a domU from configxl console dom attach to guest consolexl info host + hypervisor factsxl top live per-domain CPU/memxl migrate d host live migrate a guestxenstore-ls browse the xenstore treeArchitecture & Domain Roles
Xen is a type-1 (bare-metal) hypervisor: it owns CPU, memory, and interrupts, while all device access lives in privileged guest domains rather than the hypervisor itself.
hypervisordom0domUdriver domainstub domaintoolstack (xl/libxl)Execution Modes
| Mode | Privilege/MMU | Device I/O | Use |
|---|---|---|---|
PV | Paravirtualized; hypercalls, no HW virt needed | PV split drivers only | Legacy, no VT-x; now waning |
HVM | Full virt via VT-x/AMD-V + EPT/NPT | Emulated (QEMU) + PV drivers | Unmodified OSes, Windows |
PVH | HW virt for CPU/MMU, no emulated platform | PV drivers, no QEMU | Modern default; lean & fast |
HVM guests typically boot emulated then switch to PV drivers (PVHVM) for fast disk/net while keeping hardware page tables.
CPU Scheduling
credit2nullxl sched-credit2 -d dom -w 512xl vcpu-pin dom 0 2xl cpupool-listvcpus= / maxvcpus=Memory: Translation & Ballooning
Address layers
Guest-virtual → guest-physical (PFN) → machine/host (MFN). HVM/PVH use EPT/NPT for hardware nested translation; PV guests previously used direct/shadow page tables managed via hypercalls.
Reclaim & share
The balloon driver grows/shrinks a guest's footprint cooperatively; tmem and page-sharing/dedup let the host reclaim or pool memory beyond static assignment.
xl mem-set dom 2048xl mem-max dom 4096maxmem= / memory=dom0_mem=); over-ballooning starves backend buffers and can wedge guest I/O.Split I/O: Frontends, Backends & Plumbing
Virtual I/O uses a frontend in domU and a backend in dom0/driver domain, connected by three primitives that together form a ring channel.
blkfront / blkbacknetfront / netbackgrant referencesevent channelsI/O ringsxenstore handshakeXenStore
A small hierarchical key/value database in dom0 used for configuration, device discovery, and control signaling — not a data path.
xenstore-ls /local/domain/5xenstore-read pathxenstore-write path valxenstore-watch path