All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Shirley Ma <mashirle@us.ibm.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	eric.dumazet@gmail.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, ebiederm@xmission.com,
	davem@davemloft.net
Subject: Re: [V2 PATCH 9/9] vhost: zerocopy: poll vq in zerocopy callback
Date: Mon, 21 May 2012 14:05:24 +0800	[thread overview]
Message-ID: <4FB9DB24.2040408@redhat.com> (raw)
In-Reply-To: <1337354974.12999.12.camel@oc3660625478.ibm.com>

On 05/18/2012 11:29 PM, Shirley Ma wrote:
> On Fri, 2012-05-18 at 17:58 +0800, Jason Wang wrote:
>> On 05/17/2012 11:34 PM, Shirley Ma wrote:
>>> On Thu, 2012-05-17 at 10:50 +0800, Jason Wang wrote:
>>>> The problem is we may stop the tx queue when there no enough
>> capacity
>>>> to
>>>> place packets, at this moment  we depends on the tx interrupt to
>>>> re-enable the tx queue. So if we didn't poll the vhost during
>>>> callback,
>>>> guest may lose the tx interrupt to re-enable the tx queue which
>> could
>>>> stall the whole tx queue.
>>> VHOST_MAX_PEND should handle the capacity.
>>>
>>> Hasn't the above situation been handled in handle_tx() code?:
>>> ...
>>>                           if (unlikely(num_pends>   VHOST_MAX_PEND)) {
>>>                                   tx_poll_start(net, sock);
>>>
>> set_bit(SOCK_ASYNC_NOSPACE,&sock->flags);
>>>                                   break;
>>>                           }
>>> ...
>>>
>>> Thanks
>>> Shirley
>> It may not help in because:
>>
>> - tx polling depends on skb_orphan() which is often called by device
>> driver when it place the packet into the queue of the devices instead
>> of  when the packets were sent. So it was too early for vhost to be
>> notified.
> Then do you think it's better to replace with vhost_poll_queue here
> instead?

Just like what does this patch do - calling vhost_poll_queue() in 
vhost_zerocopy_callback().
>> - it only works when the pending DMAs exceeds VHOST_MAX_PEND, it's
>> highly possible that guest needs to be notified when the pending
>> packets
>> isn't so much.
> In which situation the guest needs to be notified when there is no TX
> besides buffers run out?

Consider guest call virtqueue_enable_cb_delayed() which means it only 
need to be notified when 3/4 of pending buffers ( about 178 buffers 
(256-MAX_SKB_FRAGS-2)*3/4 ) were sent by host. So vhost_net would notify 
guest when about 60 buffers were pending. Since tx polling is only 
enabled when pending packets exceeds VHOST_MAX_PEND 128, so tx work 
would not be notified to run and guest would never get the interrupt it 
expected to re-enable the queue.

And just like what we've discussed, tx polling based adding and 
signaling is too early for vhost.
>> So this piece of code may not help and could be removed and we need
>> to
>> poll the virt-queue during zerocopy callback ( through it could be
>> further optimized but may not be easy).
> Thanks
> Shirley
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2012-05-21  6:05 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-02  3:41 [V2 PATCH 0/9] vhost/macvtap zeropcopy fixes Jason Wang
2012-05-02  3:41 ` [V2 PATCH 1/9] macvtap: zerocopy: fix offset calculation when building skb Jason Wang
2012-05-15 17:17   ` Shirley Ma
2012-05-02  3:41 ` [V2 PATCH 2/9] macvtap: zerocopy: fix truesize underestimation Jason Wang
2012-05-15 17:26   ` Shirley Ma
2012-05-16  3:04     ` Jason Wang
2012-05-16 15:03       ` Shirley Ma
2012-05-17  2:59         ` Jason Wang
2012-05-17 15:28           ` Shirley Ma
2012-05-18 10:10             ` Jason Wang
2012-05-18 15:22               ` Shirley Ma
2012-05-21  6:15                 ` Jason Wang
2012-05-02  3:41 ` [V2 PATCH 3/9] macvtap: zerocopy: put page when fail to get all requested user pages Jason Wang
2012-05-15 17:33   ` Shirley Ma
2012-05-02  3:42 ` [V2 PATCH 4/9] macvtap: zerocopy: set SKBTX_DEV_ZEROCOPY only when skb is built successfully Jason Wang
2012-05-15 17:44   ` Shirley Ma
2012-05-16  3:17     ` Jason Wang
2012-05-02  3:42 ` [V2 PATCH 5/9] macvtap: zerocopy: validate vectors before building skb Jason Wang
2012-05-02  3:42 ` [V2 PATCH 6/9] vhost_net: zerocopy: fix possible NULL pointer dereference of vq->bufs Jason Wang
2012-05-02  3:42 ` [V2 PATCH 7/9] vhost_net: re-poll only on EAGAIN or ENOBUFS Jason Wang
2012-05-02  3:42 ` [V2 PATCH 8/9] vhost_net: zerocopy: adding and signalling immediately when fully copied Jason Wang
2012-05-02  3:42 ` [V2 PATCH 9/9] vhost: zerocopy: poll vq in zerocopy callback Jason Wang
2012-05-15 16:50   ` Shirley Ma
2012-05-16  2:58     ` Jason Wang
2012-05-16 15:10       ` Shirley Ma
2012-05-16 15:14         ` Michael S. Tsirkin
2012-05-16 17:32           ` Shirley Ma
2012-05-16 18:36             ` Michael S. Tsirkin
2012-05-16 19:08               ` Shirley Ma
2012-05-21  5:22                 ` Jason Wang
2012-05-17  2:50             ` Jason Wang
2012-05-17 15:34               ` Shirley Ma
2012-05-18  9:58                 ` Jason Wang
2012-05-18 15:29                   ` Shirley Ma
2012-05-21  6:05                     ` Jason Wang [this message]
2012-05-21 15:42                       ` Shirley Ma
2012-05-21 16:12                         ` Shirley Ma
2012-05-22 10:13                           ` Jason Wang
2012-05-22 10:05                         ` Jason Wang
2012-05-22 15:55                           ` Shirley Ma
2012-05-23 10:31                             ` Jason Wang
2012-05-02  5:50 ` [V2 PATCH 0/9] vhost/macvtap zeropcopy fixes Michael S. Tsirkin
2012-05-02  6:44   ` David Miller
2012-05-02  8:11     ` Michael S. Tsirkin
2012-05-02 19:40       ` Eric W. Biederman
2012-05-02 21:31         ` Michael S. Tsirkin
2012-05-02 21:54           ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FB9DB24.2040408@redhat.com \
    --to=jasowang@redhat.com \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=eric.dumazet@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mashirle@us.ibm.com \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.