Msi vs Msi-X Interrupts — The Quiet Modernisation
A short, friendly explainer of how modern devices signal the operating system and why drivers prefer the newer style.
A short, friendly explainer of how modern devices signal the operating system and why drivers prefer the newer style.
Older devices got the operating system's attention by toggling a dedicated wire — an interrupt request line. The lines were shared, hand-out was complex, and a misbehaving device could affect everyone on the same line.
Message-signalled interrupts replace the wire with a memory write. The device writes a small value to a special address; the system sees the write and runs the right handler. Cleaner, faster, and naturally per-device.
Msi gives a device up to thirty-two interrupt vectors but they must be allocated as a contiguous block. Msi-X allows up to two thousand and forty-eight vectors, each independently configured. For multi-queue devices like high-end network adapters and Nvme drives, Msi-X is essential.
A modern driver checks what the device supports and asks for Msi-X first, falling back to Msi and then legacy lines only if neither newer style is available.
With Msi-X, each queue on a multi-queue device can interrupt a different processor core. Network drivers spread incoming traffic across cores; storage drivers spread completions; the result is far better scaling under load.
A driver that incorrectly falls back to legacy interrupts on hardware that supports Msi-X can be the silent cause of poor performance — Device Manager properties show which mode is in use for any given driver.
Hand-picked articles that pair well with this one.
Plain-English explainers, fix walkthroughs, and concept articles for every part of your system.