[Rust-VMM] Call for GSoC and Outreachy project ideas for summer 2022
kbusch at kernel.org
Tue Feb 22 15:03:40 UTC 2022
On Tue, Feb 22, 2022 at 09:48:06AM +0000, Stefan Hajnoczi wrote:
> On Mon, 21 Feb 2022 at 12:00, Klaus Jensen <its at irrelevant.dk> wrote:
> > Yes, I'll go ahead as mentor for this.
> > @Keith, if you want to join in, let us know :)
Thank you for setting this up, I would be happy assist with the cause!
> > Suggested updated summary:
> > QEMU's NVMe emulation uses the traditional trap-and-emulation method to
> > emulate I/Os, thus the performance suffers due to frequent VM-exits.
> > Version 1.3 of the NVMe specification defines a new feature to update
> > doorbell registers using a Shadow Doorbell Buffer. This can be utilized
> > to enhance performance of emulated controllers by reducing the number of
> > Submission Queue Tail Doorbell writes.
> > Further more, it is possible to run emulation in a dedicated thread
> > called an IOThread. Emulating NVMe in a separate thread allows the vcpu
> > thread to continue execution and results in better performance.
> > Finally, it is possible for the emulation code to watch for changes to
> > the queue memory instead of waiting for doorbell writes. This technique
> > is called polling and reduces notification latency at the expense of an
> > another thread consuming CPU to detect queue activity.
> > The goal of this project is to add implement these optimizations so
> > QEMU's NVMe emulation performance becomes comparable to virtio-blk
> > performance.
> > Tasks include:
> > Add Shadow Doorbell Buffer support to reduce doorbell writes
> > Add Submission Queue polling
> > Add IOThread support so emulation can run in a dedicated thread
> > Maybe add a link to this previous discussion as well:
> > https://firstname.lastname@example.org/T/#u
> Great, I have added the project idea. I left in the sq doorbell
> ioeventfd task but moved it after the Shadow Doorbell Buffer support
> task and made it clear that the ioeventfd can only be used when the
> Shadow Doorbell Buffer is enabled:
Looks great, this seems like a very useful addition to have. I like that
the feature can be broken down into two parts. Hopefully that makes it
More information about the Rust-vmm