From: "Xie, Huawei" <huawei.xie@intel.com>
To: Linhaifeng <haifeng.lin@huawei.com>,
"dpd >> dev@dpdk.org" <dev@dpdk.org>,
"ms >> Michael S. Tsirkin" <mst@redhat.com>
Cc: "liuyongan@huawei.com" <liuyongan@huawei.com>
Subject: Re: [dpdk-dev] vhost: virtio-net rx-ring stop work after work many hours, bug?
Date: Wed, 28 Jan 2015 09:51:07 +0000 [thread overview]
Message-ID: <C37D651A908B024F974696C65296B57B0F36EF67@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <54C744D9.3060900@huawei.com>
> -----Original Message-----
> From: Linhaifeng [mailto:haifeng.lin@huawei.com]
> Sent: Tuesday, January 27, 2015 3:57 PM
> To: dpd >> dev@dpdk.org; ms >> Michael S. Tsirkin
> Cc: lilijun; liuyongan@huawei.com; Xie, Huawei
> Subject: vhost: virtio-net rx-ring stop work after work many hours,bug?
>
> Hi,all
>
> I use vhost-user to send data to VM at first it cant work well but after many
> hours VM can not receive data but can send data.
>
> (gdb)p avail_idx
> $4 = 2668
> (gdb)p free_entries
> $5 = 0
> (gdb)l
> /* check that we have enough buffers */
> if (unlikely(count > free_entries))
> count = free_entries;
>
> if (count == 0){
> int b=0;
> if(b) { // when set b=1 to notify guest rx_ring will restart to work
> if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
>
> eventfd_write(vq->callfd, 1);
> }
> }
> return 0;
> }
>
> some info i print in guest:
>
> net eth3:vi->num=199
> net eth3:rvq info: num_free=57, used->idx=2668, avail->idx=2668
> net eth3:svq info: num_free=254, used->idx=1644, avail->idx=1644
>
> net eth3:vi->num=199
> net eth3:rvq info: num_free=57, used->idx=2668, avail->idx=2668
> net eth3:svq info: num_free=254, used->idx=1645, avail->idx=1645
>
> net eth3:vi->num=199
> net eth3:rvq info: num_free=57, used->idx=2668, avail->idx=2668
> net eth3:svq info: num_free=254, used->idx=1646, avail->idx=1646
>
> # free
> total used free shared buffers cached
> Mem: 3924100 337252 3586848 0 95984 138060
> -/+ buffers/cache: 103208 3820892
> Swap: 970748 0 970748
>
> I have two questions:
> 1.Should we need to notify guest when there is no buffer in vq->avail?
> 2.Why virtio_net stop to fill avail?
>
>
Haifeng:
Thanks for reporting this issue.
It might not be vhost-user specific, because as long vhost-user has received all the vring information correctly, it shares the same code receiving/transmitting packets with vhost-cuse.
Are you using latest patch or the old patch?
1 Do you disable merge-able feature support in vhost example? There is an bug in vhost-user feature negotiation which is fixed in latest patch. It could cause guest not receive packets at all. So if you are testing only using linux net device, this isn't the cause.
2.Do you still have the spot? Could you check if there are available descriptors from checking the desc ring or even dump the vring status? Check the notify_on_empty flag Michael mentioned? I find a bug in vhost library when processing three or more chained descriptors. But if you never re-configure eth0 with different features, this isn't the cause.
3. Is this reproduce-able? Next time if you run long hours stability test, could you try to disable guest virtio feature?
-device virtio-net-pci,netdev=mynet0,mac=54:00:00:54:00:01,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off
I have run more than ten hours' nightly test many times before, and haven't met this issue.
We will check * if there is issue in the vhost code delivering interrupts to guest which cause potential deadlock *if there are places we should but miss delivering interrupts to guest.
>
>
>
>
> --
> Regards,
> Haifeng
next prev parent reply other threads:[~2015-01-28 9:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-27 7:57 Linhaifeng
2015-01-27 9:37 ` Michael S. Tsirkin
2015-02-03 12:38 ` Linhaifeng
2015-01-28 9:51 ` Xie, Huawei [this message]
2015-02-03 12:48 ` Linhaifeng
2015-02-03 7:35 ` Linhaifeng
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=C37D651A908B024F974696C65296B57B0F36EF67@SHSMSX101.ccr.corp.intel.com \
--to=huawei.xie@intel.com \
--cc=dev@dpdk.org \
--cc=haifeng.lin@huawei.com \
--cc=liuyongan@huawei.com \
--cc=mst@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).