IO_uring Passthrough For KVM Guests Is Yielding Fantastic Results
At the Linux Foundation's KVM Forum 2020 this week, Stefano Garzarella of Red Hat presented on the possibility of speeding up virtual machine I/O performance by sharing the host's IO_uring queues with guests. In doing so the virtual machines have near bare-metal performance with the proposed patches.
IO_uring has been one of the most incredible innovations to the Linux kernel of the past decade. New use-cases continue to be explored for this interface to allow for more efficient I/O. Those unfamiliar with IO_uring can see this whitepaper by Facebook's Jens Axboe who spearheaded the design and continues to advance its capabilities.
Garzarella at Red Hat has been exploring sharing of the IO_uring queues between the hosts and guests/VMs for improving I/O block performance without having to assign raw block devices to the VMs for getting near bare-metal speeds. Obviously though with the sharing of queues between the host and guests special precautions need to be taken for safety/security purposes.
With IO_uring passthrough, the submission and completion queues are memory mapped in the guest. With Linux 5.10 there is restrictions support added to IO_uring for handling use-cases such as this around untrusted applications/guests. Eventfd disabling is another recent feature for IO_uring that has come together for this effort. Other work is ongoing for this effort.
Those interested in all of the details can see this PDF slide deck from the KVM Forum 2020 presentation. But for end-users what is most interesting is how close the IO_uring passthrough takes it to near bare-metal I/O performance:
Damn nice job for all those involved in this effort and IO_uring.
IO_uring has been one of the most incredible innovations to the Linux kernel of the past decade. New use-cases continue to be explored for this interface to allow for more efficient I/O. Those unfamiliar with IO_uring can see this whitepaper by Facebook's Jens Axboe who spearheaded the design and continues to advance its capabilities.
Garzarella at Red Hat has been exploring sharing of the IO_uring queues between the hosts and guests/VMs for improving I/O block performance without having to assign raw block devices to the VMs for getting near bare-metal speeds. Obviously though with the sharing of queues between the host and guests special precautions need to be taken for safety/security purposes.
With IO_uring passthrough, the submission and completion queues are memory mapped in the guest. With Linux 5.10 there is restrictions support added to IO_uring for handling use-cases such as this around untrusted applications/guests. Eventfd disabling is another recent feature for IO_uring that has come together for this effort. Other work is ongoing for this effort.
Those interested in all of the details can see this PDF slide deck from the KVM Forum 2020 presentation. But for end-users what is most interesting is how close the IO_uring passthrough takes it to near bare-metal I/O performance:
Damn nice job for all those involved in this effort and IO_uring.
31 Comments