[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