Re: Call for GSoC/Outreachy internship project ideas

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 29, 2024 at 8:40 PM Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote:
>
> On Mon, 29 Jan 2024 at 13:53, Eugenio Perez Martin <eperezma@xxxxxxxxxx> wrote:
> >
> > On Mon, Jan 15, 2024 at 5:33 PM Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote:
> > >
> > > Dear QEMU and KVM communities,
> > > QEMU will apply for the Google Summer of Code and Outreachy internship
> > > programs again this year. Regular contributors can submit project
> > > ideas that they'd like to mentor by replying to this email before
> > > January 30th.
> > >
> >
> >
> > === Add packed virtqueue to Shadow Virtqueue ===
>
> Yes! I'm a fan of packed virtqueues, so I'm excited to see this project idea :).
>

It's about time! :).


> > Summary: Add the packed virtqueue format support to QEMU's Shadow Virtqueue.
> >
> > To perform a virtual machine live migration with an external device to
> > qemu, qemu needs a way to know which memory the device modifies so it
> > is able to resend it. Otherwise the guest would resume with invalid /
> > outdated memory in the destination.
> >
> > This is especially hard with passthrough hardware devices, as
> > transports like PCI imposes a few security and performance challenges.
> > As a method to overcome this for virtio devices, qemu can offer an
> > emulated virtqueue to the device, called Shadow Virtqueue (SVQ),
> > instead of allowing the device to communicate directly with the guest.
> > SVQ will then forward the writes to the guest, being the effective
> > writer in the guest memory and knowing when a portion of it needs to
> > be resent.
> >
> > Compared with original Split Virtqueues, already supported by Shadow
> > Virtqueue, Packed virtqueue is a more compact representation that uses
> > less memory size and allows both devices and drivers to exchange the
> > same amount of information with less memory operations.
> >
> > The task is to complete the packed virtqueue support for SVQ, using
> > the kernel virtio ring driver as a reference. There is already a setup
> > that can be used to test the changes.
> >
> > Links:
> > * https://www.redhat.com/en/blog/virtio-devices-and-drivers-overview-headjack-and-phone
> > * https://www.redhat.com/en/blog/virtqueues-and-virtio-ring-how-data-travels
> > * https://www.redhat.com/en/blog/packed-virtqueue-how-reduce-overhead-virtio
> > * https://www.youtube.com/watch?v=x9ARoNVzS04
> >
> > Details:
> > * Skill level: Intermediate
> > * Language: C
>
> I have added this project idea to the wiki. I made minor edits (e.g.
> consistently using "guest" instead of both "virtual machine" and
> "guest" to minimize the amount of terminology). I also added a link to
> the vhost-shadow-virtqueue.c source code so applicants have a starting
> point for researching the code.
>
> https://wiki.qemu.org/Internships/ProjectIdeas/PackedShadowVirtqueue
>

Good points, thank you very much!

> Please edit the page to clarify the following:
> - Project size: 90 (small), 175 (medium), or 350 (large) hours
> - A list of suggested tasks for the coding period that applicants can
> research and refine for their project plan
>
> Possible stretch goals if the intern completes packed svq support
> early or maybe you have your own ideas:
> - Split/rename vhost-shadow-virtqueue.c into a VIRTIO driver-side
> virtqueue API (which could be used by any other feature that acts as a
> VIRTIO driver, like vhost-user clients) and shadow virtqueue logic
> - Implement packed virtqueue support in other components where it is
> not yet supported (like kernel vhost)
>

Added, good ideas! Please let me know if you think something should be
further corrected or feel free to modify yourself.

Thanks!






[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux