On 07/06/2012 02:38 PM, Stephen Hemminger wrote:
On Fri, 06 Jul 2012 11:20:06 +0800
Jason Wang<jasowang@xxxxxxxxxx> wrote:
On 07/05/2012 08:51 PM, Sasha Levin wrote:
On Thu, 2012-07-05 at 18:29 +0800, Jason Wang wrote:
@@ -1387,6 +1404,10 @@ static int virtnet_probe(struct virtio_device *vdev)
if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
vi->has_cvq = true;
+ /* Use single tx/rx queue pair as default */
+ vi->num_queue_pairs = 1;
+ vi->total_queue_pairs = num_queue_pairs;
The code is using this "default" even if the amount of queue pairs it
wants was specified during initialization. This basically limits any
device to use 1 pair when starting up.
Yes, currently the virtio-net driver would use 1 txq/txq by default
since multiqueue may not outperform in all kinds of workload. So it's
better to keep it as default and let user enable multiqueue by ethtool -L.
I would prefer that the driver sized number of queues based on number
of online CPU's. That is what real hardware does. What kind of workload
are you doing? If it is some DBMS benchmark then maybe the issue is that
some CPU's need to be reserved.
I run rr and stream test of netperf, and multiqueue shows improvement on
rr test and regression on small packet transmission in stream test. For
small packet transmission, multiqueue tends to send much more small
packets which also increase the cpu utilization. I suspect multiqueue is
faster and tcp does not merger big enough packet to send, but may need
more think.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html