[libvirt] [PATCH v2] Add support for virtio-net.tx_queue_size

Michal Privoznik mprivozn at redhat.com
Tue Jul 18 11:12:17 UTC 2017


[Adding MST who wrote qemu patches]

On 07/18/2017 12:21 PM, Peter Krempa wrote:
> On Tue, Jul 18, 2017 at 09:01:31 +0200, Michal Privoznik wrote:
>> 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.
> 
> Also add proper explanation what the benefits are, since upstream can't
> read the motivation from the bugzilla.
> 
>>>> Just like I've added support for setting rx_queue_size (in
>>>> c56cdf259 and friends), qemu just gained support for setting tx
>>>> ring size.
> 
> [...]
> 
>>>> 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
> 
> Refer to a proper version of qemu when this is supported, not a date.
> 
>>>> +        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
> 
> This statement is ridiculous by itself.

Why? There are more experienced users (for whom libvirt's just a stable
API) and less experienced ones (for whom libvirt's and tools on the top
of it are great for their automatic chose of parameters, e.g. gnome boxes).

> 
>> 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.
> 
> That's why I think it's wrong.  What's the drawback of setting it to
> maximum? Which workloads will hit it? Why is the default not sufficient?
> 
> And most notably, how do the users figure out that they need it?

I'll leave this for MST to answer.

> 
> In this case, there are no anchor points that users can use to figure
> out if they need a setting like this. In addition putting in a warning
> that a setting should not be touched makes it rather useless.

Well, it can be viewed as counter part to rx_queue_size which we already
have.

> 
> Is there any writeup that we could point users to which would explain
> this feature?
> 

I'm afraid there's nothing else than BZ I've linked and qemu patches.

Michal




More information about the libvir-list mailing list