[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] 答复: Can we increase vring size over 1024?
From: |
Lilijun (Jerry) |
Subject: |
[Qemu-devel] 答复: Can we increase vring size over 1024? |
Date: |
Mon, 5 Sep 2016 03:21:44 +0000 |
Hi Stefan,
In our test case, the virtio TX queue is not big enough. The packets throughput
sent by application in VM is not stable, Sometimes it become very large and
exceed the service capability of the backend virtual switch, then they were
dropped unfortunately.
To enlarge application and virtual switch's buffer ring may result other
difficult problems, So we'd like to increase the virtio TX queue size to 4K or
8K.
Thanks.
-----邮件原件-----
发件人: Stefan Hajnoczi [mailto:address@hidden
发送时间: 2016年9月2日 21:40
收件人: Gonglei (Arei)
抄送: address@hidden; address@hidden; address@hidden; address@hidden; Huangpeng
(Peter); address@hidden; address@hidden; Lilijun (Jerry)
主题: Re: [Qemu-devel] Can we increase vring size over 1024?
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-10
> 24-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