VRT-120 · Virtualization & Containers
virtio Device Drivers
The paravirtualised device model: virtqueues, transports and writing a virtio driver.
Who this course is for
Kernel and virtualisation engineers who want to understand the paravirtualised device model deeply enough to tune it, debug it, and implement it — for a custom virtio device or an offload path like vhost-user.
Prerequisites
Course outline
Day 1 — The virtio model and virtqueues
- The virtio specification: device status lifecycle and feature negotiation
- Transports: virtio-pci and virtio-mmio
- Virtqueue anatomy: descriptor table, available and used rings
- Notifications, event suppression (EVENT_IDX) and interrupt moderation
- Where the guest/host boundary actually runs
Day 2 — The kernel's virtio stack in practice
- virtio-net and virtio-blk read in source
- virtio-scsi: when it beats virtio-blk and why
- Performance levers: multiqueue, NAPI, descriptor batching, indirect descriptors
- Measuring virtio overhead against passthrough on the same workload
- Common failure modes: stuck queues, feature mismatch, ballooning interactions
Day 3 — vhost, offload paths and writing a driver
- vhost: moving the data path into the host kernel
- vhost-user: the data path in a userspace process, and vDPA beyond it
- Defining a custom virtio device and its config space
- Writing the guest driver: probe, virtqueue setup, request/completion flow
- Testing against a QEMU device model you can instrument
Hands-on labs
Labs follow the academy model — 35% principles, 20% guided investigation, 45% engineering studio. Every claim you make in a lab is backed by a trace, a counter or a measurement you captured yourself. How we teach
- Lab: instrument virtqueue activity with virtio tracepoints and watch descriptor flow and notifications under load
- Lab: benchmark virtio-blk vs virtio-scsi vs a passed-through device on the same fio workload and explain the gap
- Lab: switch a guest NIC between virtio and vhost paths and measure throughput and latency differences
- Lab: write a guest driver for a custom QEMU virtio device and exchange real data through your own virtqueue
Capstone project
Implement a small but real virtio device pair: a QEMU-side device model (provided as a scaffold) and the Linux guest driver that binds to it, negotiates features and moves data over a virtqueue you configured. The deliverable is the driver source, a trace of feature negotiation and descriptor flow, and a short performance note comparing your device's overhead with the virtio-net measurements from the labs.
What you leave with
- A source-level understanding of virtqueues and feature negotiation
- Measured knowledge of virtio vs vhost vs passthrough trade-offs
- The ability to read and debug the in-kernel virtio drivers
- A working custom virtio driver you wrote and can extend
- Fluency with the virtio spec as a working document
How it runs
Every course follows the same model: 35% principles, 20% guided investigation, 45% engineering studio. You leave with working code, raw measurements and an evidence-based report — not a certificate of attendance. Read the methodology or see a full sample lesson.
Material is adapted to your kernel version, hardware and workload before a private delivery. For public cohorts, the environment is provided and configured.
Questions
Who is this course for?
Kernel and virtualisation engineers who want to understand the paravirtualised device model deeply enough to tune it, debug it, and implement it — for a custom virtio device or an offload path like vhost-user. It sits at advanced level within the Virtualization & Containers track.
What do I need to know already?
Specific prerequisites for this course: Kernel module development experience; VRT-101-level KVM knowledge; Ring buffer / DMA concepts. We confirm levels before the cohort starts and adapt if a group is stronger or weaker than expected.
Can this run privately for my team?
Yes. Any course runs on-site at your offices anywhere, or live online for a distributed team, with labs adapted to your hardware and codebase.
What is the difference between in-person and online?
In person is 3 full days with hardware on your desk, capped at 14. Online is 6 half-day sessions across about two weeks so you can keep working, capped at 20, with remote lab access.
Do you invoice companies?
Yes. Purchase orders are accepted and invoicing is available in USD, EUR, GBP, SAR and CAD.
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 1 Nov – 3 Nov 20263 full days | RiyadhIn person · KAFD Conference Centre | 9 of 14 | — | SAR 9,000 | |
| 1 Nov – 3 Nov 20263 full days | Kuwait CityIn person · Al Hamra Tower | 4 of 14 | — | KWD 740 | |
| 8 Nov – 10 Nov 20263 full days | MuscatIn person · Knowledge Oasis Muscat | 9 of 14 | OMR 830until 9 Oct | ||
| 15 Nov – 22 Nov 20266 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 13 of 20 | US$1,580until 16 Oct | ||
| 16 Nov – 18 Nov 20263 full days | OttawaIn person · Kanata North Tech Park | 4 of 14 | CAD 2,930until 17 Oct | ||
| 16 Nov – 18 Nov 20263 full days | TorontoIn person · MaRS Discovery District | 9 of 14 | CAD 2,930until 17 Oct | ||
| 16 Nov – 23 Nov 20266 half-days | Europe bandLive online · 09:00–13:00 CET | 18 of 20 | US$1,580until 17 Oct | ||
| 23 Nov – 25 Nov 20263 full days | LondonIn person · Shoreditch Works | 4 of 14 | GBP 1,680until 24 Oct | ||
| 23 Nov – 30 Nov 20266 half-days | Americas bandLive online · 13:00–17:00 ET | 7 of 20 | US$1,580until 24 Oct | ||
| 30 Nov – 2 Dec 20263 full days | BerlinIn person · Factory Görlitzer Park | 9 of 14 | EUR 1,990until 31 Oct |
Dates shown for the next few months. If nothing fits, tell us where and when — cohorts are added on demand, and private delivery can be scheduled any week.
More in Virtualization & Containers
VRT-1014 days
KVM Internals
How Linux becomes a hypervisor: vCPU execution, memory virtualisation and the QEMU relationship.
Practitioner-taught
SAR 12,000Next 18 Oct
VRT-1103 days
VFIO & Device Passthrough
Giving a guest direct access to real hardware — the mechanism behind GPU passthrough.
Practitioner-taught
SAR 9,000Next 15 Nov
VRT-2013 days
Namespaces & cgroups from Scratch
Build a container by hand with the primitives, so the abstraction stops being magic.
Practitioner-taught
SAR 7,880Next 8 Nov
VRT-2103 days
Container Runtimes & the OCI Spec
What runc, containerd and the OCI specifications actually define, and how images become running processes.
Practitioner-taught
SAR 7,880Next 18 Oct
VRT-2203 days
Container Security & seccomp
Making containers a real security boundary rather than an organisational one.
Practitioner-taught
SAR 9,000Next 22 Nov