jiangyiwen
2018-Dec-12 09:35 UTC
[PATCH v2 5/5] VSOCK: batch sending rx buffer to increase bandwidth
Batch sending rx buffer can improve total bandwidth. Signed-off-by: Yiwen Jiang <jiangyiwen at huawei.com> --- drivers/vhost/vsock.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index 9600133..a4bf0a1 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c @@ -151,9 +151,11 @@ static int get_rx_bufs(struct vhost_virtqueue *vq, struct vhost_virtqueue *vq) { struct vhost_virtqueue *tx_vq = &vsock->vqs[VSOCK_VQ_TX]; - bool added = false; bool restart_tx = false; size_t vsock_hlen; + int batch_count = 0; + +#define VHOST_VSOCK_BATCH 16 mutex_lock(&vq->mutex); @@ -194,8 +196,9 @@ static int get_rx_bufs(struct vhost_virtqueue *vq, list_del_init(&pkt->list); spin_unlock_bh(&vsock->send_pkt_list_lock); - headcount = get_rx_bufs(vq, vq->heads, vsock_hlen + pkt->len, - &in, likely(vsock->mergeable) ? UIO_MAXIOV : 1); + headcount = get_rx_bufs(vq, vq->heads + batch_count, + vsock_hlen + pkt->len, &in, + likely(vsock->mergeable) ? UIO_MAXIOV : 1); if (headcount <= 0) { spin_lock_bh(&vsock->send_pkt_list_lock); list_add(&pkt->list, &vsock->send_pkt_list); @@ -238,8 +241,12 @@ static int get_rx_bufs(struct vhost_virtqueue *vq, remain_len -= tmp_len; } - vhost_add_used_n(vq, vq->heads, headcount); - added = true; + batch_count += headcount; + if (batch_count > VHOST_VSOCK_BATCH) { + vhost_add_used_and_signal_n(&vsock->dev, vq, + vq->heads, batch_count); + batch_count = 0; + } if (pkt->reply) { int val; @@ -258,8 +265,11 @@ static int get_rx_bufs(struct vhost_virtqueue *vq, virtio_transport_free_pkt(pkt); } - if (added) - vhost_signal(&vsock->dev, vq); + + if (batch_count) { + vhost_add_used_and_signal_n(&vsock->dev, vq, + vq->heads, batch_count); + } out: mutex_unlock(&vq->mutex); -- 1.8.3.1
Stefan Hajnoczi
2018-Dec-13 15:17 UTC
[PATCH v2 5/5] VSOCK: batch sending rx buffer to increase bandwidth
On Wed, Dec 12, 2018 at 05:35:27PM +0800, jiangyiwen wrote:> Batch sending rx buffer can improve total bandwidth. > > Signed-off-by: Yiwen Jiang <jiangyiwen at huawei.com> > ---Please send patches with git-send-email --thread --no-chain-reply-to so that your patch series email thread looks like this: * [PATCH 00/NN] My feature +-- [PATCH 01/NN] First patch +-- [PATCH 02/NN] Second patch . . . +-- [PATCH NN/NN] Last patch This way it's much easier to view the entire series. At the moment you are sending each patch as an independent email and there is no relationship between the emails. Thanks, Stefan -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 455 bytes Desc: not available URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20181213/4d3ce287/attachment.sig>
jiangyiwen
2018-Dec-14 01:05 UTC
[PATCH v2 5/5] VSOCK: batch sending rx buffer to increase bandwidth
On 2018/12/13 23:17, Stefan Hajnoczi wrote:> On Wed, Dec 12, 2018 at 05:35:27PM +0800, jiangyiwen wrote: >> Batch sending rx buffer can improve total bandwidth. >> >> Signed-off-by: Yiwen Jiang <jiangyiwen at huawei.com> >> --- > > Please send patches with git-send-email --thread --no-chain-reply-to so > that your patch series email thread looks like this: > > * [PATCH 00/NN] My feature > +-- [PATCH 01/NN] First patch > +-- [PATCH 02/NN] Second patch > . > . > . > +-- [PATCH NN/NN] Last patch > > This way it's much easier to view the entire series. At the moment you > are sending each patch as an independent email and there is no > relationship between the emails. > > Thanks, > Stefan >Thanks Stefan, I have not send a series of patches before, and I will use email thread form in the later version. Thanks again, Yiwen.
Reasonably Related Threads
- [PATCH v2 5/5] VSOCK: batch sending rx buffer to increase bandwidth
- [PATCH 5/5] VSOCK: batch sending rx buffer to increase bandwidth
- [PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
- [PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
- [PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host