瀏覽代碼

vhost_net: conditionally enable tx polling

We always poll tx for socket, this is sub optimal since this will
slightly increase the waitqueue traversing time and more important,
vhost could not benefit from commit 9e641bdcfa4e ("net-tun:
restructure tun_do_read for better sleep/wakeup efficiency") even if
we've stopped rx polling during handle_rx(), tx poll were still left
in the waitqueue.

Pktgen from a remote host to VM over mlx4 on two 2.00GHz Xeon E5-2650
shows 11.7% improvements on rx PPS. (from 1.28Mpps to 1.44Mpps)

Cc: Wei Xu <wexu@redhat.com>
Cc: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jason Wang 7 年之前
父節點
當前提交
feb8892cb4
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      drivers/vhost/net.c

+ 2 - 0
drivers/vhost/net.c

@@ -471,6 +471,7 @@ static void handle_tx(struct vhost_net *net)
 		goto out;
 		goto out;
 
 
 	vhost_disable_notify(&net->dev, vq);
 	vhost_disable_notify(&net->dev, vq);
+	vhost_net_disable_vq(net, vq);
 
 
 	hdr_size = nvq->vhost_hlen;
 	hdr_size = nvq->vhost_hlen;
 	zcopy = nvq->ubufs;
 	zcopy = nvq->ubufs;
@@ -556,6 +557,7 @@ static void handle_tx(struct vhost_net *net)
 					% UIO_MAXIOV;
 					% UIO_MAXIOV;
 			}
 			}
 			vhost_discard_vq_desc(vq, 1);
 			vhost_discard_vq_desc(vq, 1);
+			vhost_net_enable_vq(net, vq);
 			break;
 			break;
 		}
 		}
 		if (err != len)
 		if (err != len)