[libvirt] [PATCH v2] Add support for virtio-net.tx_queue_size
Michal Privoznik
mprivozn at redhat.com
Tue Jul 18 07:01:31 UTC 2017
On 07/18/2017 08:23 AM, Peter Krempa wrote:
> On Mon, Jul 17, 2017 at 15:39:56 +0200, Michal Privoznik wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1462653
>
> This bugzilla is not public.
Okay, I'll drop it from the commit message.
>
>>
>> Just like I've added support for setting rx_queue_size (in
>> c56cdf259 and friends), qemu just gained support for setting tx
>> ring size.
>>
>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>> ---
>>
>> diff to v1:
>> - Resend after 2e7d4916967 which introduced yet another qemu capability and
>> thus made my patch not apply cleanly.
>>
>> docs/formatdomain.html.in | 16 +++++++++++++++-
>> docs/schemas/domaincommon.rng | 5 +++++
>> src/conf/domain_conf.c | 16 ++++++++++++++++
>> src/conf/domain_conf.h | 1 +
>> src/qemu/qemu_capabilities.c | 4 ++++
>> src/qemu/qemu_capabilities.h | 3 +++
>> src/qemu/qemu_command.c | 8 ++++++++
>> src/qemu/qemu_domain.c | 16 +++++++++++-----
>> ...e.args => qemuxml2argv-net-virtio-rxtxqueuesize.args} | 4 ++--
>> ...ize.xml => qemuxml2argv-net-virtio-rxtxqueuesize.xml} | 2 +-
>> tests/qemuxml2argvtest.c | 5 +++--
>> ...e.xml => qemuxml2xmlout-net-virtio-rxtxqueuesize.xml} | 2 +-
>> tests/qemuxml2xmltest.c | 2 +-
>> 13 files changed, 71 insertions(+), 13 deletions(-)
>> rename tests/qemuxml2argvdata/{qemuxml2argv-net-virtio-rxqueuesize.args => qemuxml2argv-net-virtio-rxtxqueuesize.args} (85%)
>> rename tests/qemuxml2argvdata/{qemuxml2argv-net-virtio-rxqueuesize.xml => qemuxml2argv-net-virtio-rxtxqueuesize.xml} (93%)
>> rename tests/qemuxml2xmloutdata/{qemuxml2xmlout-net-virtio-rxqueuesize.xml => qemuxml2xmlout-net-virtio-rxtxqueuesize.xml} (96%)
>>
>> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
>> index c12efcf78..58662cf48 100644
>> --- a/docs/formatdomain.html.in
>> +++ b/docs/formatdomain.html.in
>
> [...]
>
>> @@ -5201,6 +5201,20 @@ qemu-kvm -net nic,model=? /dev/null
>> <b>In general you should leave this option alone, unless you
>> are very certain you know what you are doing.</b>
>> </dd>
>> + <dt><code>tx_queue_size</code></dt>
>> + <dd>
>> + The optional <code>tx_queue_size</code> attribute controls
>> + the size of virtio ring for each queue as described above.
>> + The default value is hypervisor dependent and may change
>> + across its releases. Moreover, some hypervisors may pose
>> + some restrictions on actual value. For instance, latest
>> + QEMU (as of 2017-07-13) requires value to be a power of two
>> + from [256, 1024] range.
>> + <span class="since">Since 3.6.0 (QEMU and KVM only)</span><br/><br/>
>
> This is ridiculous. Since we can't figure out how to set this, how are
> users supposed to figure this out?
Well, you've cut off the line that reads;
<b>In general you should leave this option alone, unless you
are very certain you know what you are doing.</b>
So only users that know how virtio works under the hood are expected to
also know what rx/tx queue size is and how to set it. But frankly, I
think users setting this are always gonna go with the highest value
avaliable (1024). Such detailed description is a copy of rx_virtio_queue
size description which is result of review.
>
> Is it really needed? How should it be configured? Can't we or qemu pick
> a sane value?
>
No. Some users need bigger virtio rings otherwise they see a packet
drop. So this is a fine tuning that heavily depends on the use case.
Thus libvirt should not try to come up with some value.
Michal
More information about the libvir-list
mailing list