Re: [Qemu-devel] Can we increase vring size over 1024?

Stefan Hajnoczi
2016-09-02T13:39:46Z

[-- Attachment #1: Type: text/plain, Size: 1797 bytes --]

On Fri, Sep 02, 2016 at 06:55:35AM +0000, Gonglei (Arei) wrote:
> Michael, you made a presentation about the virto 1.1's new features in KVM Forum last week.
> That's wonderful!
>
> And I'd like to know can we increase vring size over 1024, such as 4096 or 8192?
>
> My colleage had asked the same question in 2014, but she didn't get a definite answare,
> So, I want to rewake up the dissusstion about this. Becase for the virtio-crypto device,
> I also need to increase the vring size to get better performance and thoughput, but the Qemu
> side limit the thought as VIRTQUEUE_MAX_SIZE is 1024.
>
> [QA-virtio]:Why vring size is limited to 1024?
> http://qemu.11.n7.nabble.com/QA-virtio-Why-vring-size-is-limited-to-1024-td292450.html
>
> Avi Kivity said that google cloud exposed the vring size to 16k.

VIRTIO 1.0 allows the driver to choose the ring size (the device
provides the maximum value), so in theory QEMU could offer large maximum
values to VIRTIO 1.0 guests. But existing drivers may use the device's
maximum value (~16k) instead of choosing a reasonable smaller value
(~1k), leading to much larger virtqueues in cases that don't need them.

I'd like to understand the root cause for the performance issue you see
with virtio-net 1024 ring size. Which queue is too small: rx or tx?

Are rx packets dropped because 1) the guest is not servicing the
virtqueue quickly enough or 2) is the physical NIC delivering more
packets than the rx virtqueue size?

In case #1 the guest needs to move packets from the rx virtqueue to a
software queue as quickly as possible. The virtqueue is not designed to
be the incoming packet queue for the application.

In case #2 it may be possible to adjust code in the host to handle this
gracefully.

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]