From: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
To: Jason Wang <jasowang@redhat.com>,
Tonghao Zhang <xiangxia.m.yue@gmail.com>
Cc: Linux Kernel Network Developers <netdev@vger.kernel.org>,
virtualization@lists.linux-foundation.org, mst@redhat.com
Subject: Re: [PATCH net-next v7 3/4] net: vhost: factor out busy polling logic to vhost_net_busy_poll()
Date: Thu, 2 Aug 2018 17:41:41 +0900 [thread overview]
Message-ID: <ca040549-5eda-4a03-4295-17e6d7d44dd5@lab.ntt.co.jp> (raw)
In-Reply-To: <b4ffd376-6fa8-4d0c-5c3a-82d1b6e924d6@redhat.com>
On 2018/08/02 17:18, Jason Wang wrote:
> On 2018年08月01日 17:52, Tonghao Zhang wrote:
>>> +static void vhost_net_busy_poll_check(struct vhost_net *net,
>>> + struct vhost_virtqueue *rvq,
>>> + struct vhost_virtqueue *tvq,
>>> + bool rx)
>>> +{
>>> + struct socket *sock = rvq->private_data;
>>> +
>>> + if (rx)
>>> + vhost_net_busy_poll_try_queue(net, tvq);
>>> + else if (sock && sk_has_rx_data(sock->sk))
>>> + vhost_net_busy_poll_try_queue(net, rvq);
>>> + else {
>>> + /* On tx here, sock has no rx data, so we
>>> + * will wait for sock wakeup for rx, and
>>> + * vhost_enable_notify() is not needed. */
>>
>> A possible case is we do have rx data but guest does not refill the rx
>> queue. In this case we may lose notifications from guest.
> Yes, should consider this case. thanks.
I'm a bit confused. Isn't this covered by the previous
"else if (sock && sk_has_rx_data(...))" block?
>>>> +
>>>> + cpu_relax();
>>>> + }
>>>> +
>>>> + preempt_enable();
>>>> +
>>>> + if (!rx)
>>>> + vhost_net_enable_vq(net, vq);
>>> No need to enable rx virtqueue, if we are sure handle_rx() will be
>>> called soon.
>> If we disable rx virtqueue in handle_tx and don't send packets from
>> guest anymore(handle_tx is not called), so we can wake up for sock rx.
>> so the network is broken.
>
> Not sure I understand here. I mean is we schedule work for handle_rx(),
> there's no need to enable it since handle_rx() will do this for us.
Looks like in the last "else" block in vhost_net_busy_poll_check() we
need to enable vq since in that case we have no rx data and handle_rx()
is not scheduled.
--
Toshiaki Makita
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2018-08-02 8:41 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-01 3:00 [PATCH net-next v7 0/4] net: vhost: improve performance when enable busyloop xiangxia.m.yue
2018-08-01 3:00 ` [PATCH net-next v7 1/4] net: vhost: lock the vqs one by one xiangxia.m.yue
2018-08-01 3:00 ` [PATCH net-next v7 2/4] net: vhost: replace magic number of lock annotation xiangxia.m.yue
2018-08-01 3:00 ` xiangxia.m.yue
2018-08-01 3:00 ` [PATCH net-next v7 3/4] net: vhost: factor out busy polling logic to vhost_net_busy_poll() xiangxia.m.yue
2018-08-01 6:01 ` Jason Wang
2018-08-01 9:52 ` Tonghao Zhang
2018-08-02 8:18 ` Jason Wang
2018-08-02 8:41 ` Toshiaki Makita [this message]
2018-08-02 9:23 ` Jason Wang
2018-08-02 9:57 ` Toshiaki Makita
2018-08-03 2:38 ` Jason Wang
2018-08-03 2:38 ` Jason Wang
2018-08-03 2:51 ` Tonghao Zhang
2018-08-03 2:51 ` Tonghao Zhang
2018-08-03 3:07 ` Jason Wang
2018-08-03 3:07 ` Jason Wang
2018-08-03 3:24 ` Tonghao Zhang
2018-08-03 3:40 ` Toshiaki Makita
2018-08-03 4:14 ` Tonghao Zhang
2018-08-03 4:25 ` Toshiaki Makita
2018-08-03 4:14 ` Tonghao Zhang
2018-08-03 3:43 ` Jason Wang
2018-08-03 3:43 ` Jason Wang
2018-08-03 4:04 ` Tonghao Zhang
2018-08-03 5:07 ` Jason Wang
2018-08-03 5:25 ` Toshiaki Makita
2018-08-03 3:24 ` Tonghao Zhang
2018-08-03 3:07 ` Jason Wang
2018-08-03 3:32 ` Toshiaki Makita
2018-08-03 3:44 ` Jason Wang
2018-08-03 3:44 ` Jason Wang
2018-08-03 3:07 ` Jason Wang
2018-08-02 8:18 ` Jason Wang
2018-08-01 3:00 ` xiangxia.m.yue
2018-08-01 3:00 ` [PATCH net-next v7 4/4] net: vhost: add rx busy polling in tx path xiangxia.m.yue
2018-08-01 3:00 ` xiangxia.m.yue
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=ca040549-5eda-4a03-4295-17e6d7d44dd5@lab.ntt.co.jp \
--to=makita.toshiaki@lab.ntt.co.jp \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=xiangxia.m.yue@gmail.com \
/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.