VRT-120 · Virtualization & Containers

virtio Device Drivers

The paravirtualised device model: virtqueues, transports and writing a virtio driver.

Advanced 3 days in person6 half-days online Max 14 in person

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

Kernel module development experienceVRT-101-level KVM knowledgeRing buffer / DMA concepts

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

  1. Lab: instrument virtqueue activity with virtio tracepoints and watch descriptor flow and notifications under load
  2. Lab: benchmark virtio-blk vs virtio-scsi vs a passed-through device on the same fio workload and explain the gap
  3. Lab: switch a guest NIC between virtio and vhost paths and measure throughput and latency differences
  4. 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

DatesWhereSeatsEarly birdRegular
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 OctOMR 920
15 Nov – 22 Nov 20266 half-days Gulf bandLive online · 09:00–13:00 GMT+3 13 of 20 US$1,580until 16 OctUS$1,750
16 Nov – 18 Nov 20263 full days OttawaIn person · Kanata North Tech Park 4 of 14 CAD 2,930until 17 OctCAD 3,260
16 Nov – 18 Nov 20263 full days TorontoIn person · MaRS Discovery District 9 of 14 CAD 2,930until 17 OctCAD 3,260
16 Nov – 23 Nov 20266 half-days Europe bandLive online · 09:00–13:00 CET 18 of 20 US$1,580until 17 OctUS$1,750
23 Nov – 25 Nov 20263 full days LondonIn person · Shoreditch Works 4 of 14 GBP 1,680until 24 OctGBP 1,870
23 Nov – 30 Nov 20266 half-days Americas bandLive online · 13:00–17:00 ET 7 of 20 US$1,580until 24 OctUS$1,750
30 Nov – 2 Dec 20263 full days BerlinIn person · Factory Görlitzer Park 9 of 14 EUR 1,990until 31 OctEUR 2,210

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