Re: [PATCH net-next] virtio-net: enable multiqueue by default

From: Jason Wang
Date: Fri Nov 25 2016 - 00:37:31 EST

On 2016å11æ25æ 12:43, Michael S. Tsirkin wrote:
On Fri, Nov 25, 2016 at 12:37:26PM +0800, Jason Wang wrote:
>We use single queue even if multiqueue is enabled and let admin to
>enable it through ethtool later. This is used to avoid possible
>regression (small packet TCP stream transmission). But looks like an
>overkill since:
>- single queue user can disable multiqueue when launching qemu
>- brings extra troubles for the management since it needs extra admin
> tool in guest to enable multiqueue
>- multiqueue performs much better than single queue in most of the
> cases
>So this patch enables multiqueue by default: if #queues is less than or
>equal to #vcpu, enable as much as queue pairs; if #queues is greater
>than #vcpu, enable #vcpu queue pairs.
>Cc: Hannes Frederic Sowa<hannes@xxxxxxxxxx>
>Cc: Michael S. Tsirkin<mst@xxxxxxxxxx>
>Cc: Neil Horman<nhorman@xxxxxxxxxx>
>Cc: Jeremy Eder<jeder@xxxxxxxxxx>
>Cc: Marko Myllynen<myllynen@xxxxxxxxxx>
>Cc: Maxime Coquelin<maxime.coquelin@xxxxxxxxxx>
>Signed-off-by: Jason Wang<jasowang@xxxxxxxxxx>
OK at some level but all uses of num_online_cpus()
like this are racy versus hotplug.
I know we already have this bug but shouldn't we fix it
before we add more?

Not sure I get the point, do you mean adding get/put_online_cpus()? But is it a real bug? We don't do any cpu specific things so I believe it's not necessary (unless we want to keep #queues == #vcpus magically but I don't think so). Admin need to re-configure #queues after cpu hotplug if they wish.