From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Cc: dev <dev@dpdk.org>, Daniele Di Proietto <diproiettod@vmware.com>
Subject: Re: Memory leak when adding/removing vhost_user ports
Date: Wed, 20 Apr 2016 22:54:58 -0700 [thread overview]
Message-ID: <20160421055458.GD5872@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <CAATJJ0JXnsRsjec8baH1Haiuur8OnKO+XhaUhNG6RoaPaTfeGw@mail.gmail.com>
On Wed, Apr 20, 2016 at 08:18:49AM +0200, Christian Ehrhardt wrote:
> On Wed, Apr 20, 2016 at 7:04 AM, Yuanhan Liu <yuanhan.liu@linux.intel.com>
> wrote:
>
> On Tue, Apr 19, 2016 at 06:33:50PM +0200, Christian Ehrhardt wrote:
>
> [...]
>
> > With that applied one (and only one) of my two guests looses connectivity
> after
> > removing the ports the first time.
>
> Yeah, that's should be because I invoked the "->destroy_device()"
> callback.
>
>
> Shouldn't that not only destroy the particular vhost_user device I remove?
I assume the "not" is typed wrong here, then yes. Well, it turned
out that I accidentally destroyed the first guest (with id 0) with
following code:
ctx.fh = g_vhost_server.server[i]->fh;
vhost_destroy_device(ctx);
server[i]->fh is initialized with 0 when no connection is established
(check below for more info), and the first id is started with 0. Anyway,
this could be fixed easily.
> See below for some better details on the test to clarify that.
>
>
> BTW, I'm curious how do you do the test? I saw you added 256 ports, but
> with 2 guests only? So, 254 of them are idle, just for testing the
> memory leak bug?
>
>
> Maybe I should describe it better:
> 1. Spawn some vhost-user ports (40 in my case)
> 2. Spawn a pair of guests that connect via four of those ports per guest
> 3. Guests only intialize one of that vhost_user based NICs
> 4. check connectivity between guests via the vhost_user based connection
> (working at this stage)
> LOOP 5-7:
> 5. add ports 41-512
> 6. remove ports 41-512
> 7. check connectivity between guests via the vhost_user based connection
Yes, it's much clearer now. Thanks.
I then don't see it's a leak from DPDK vhost-user, at least not the leak
on "struct virtio_net" I have mentioned before. "struct virito_net" will
not even be allocated for those ports never used (ports 41-512 in your case),
as it will be allocated only when there is a connection established, aka,
a guest is connected.
BTW, will you be able to reproduce it without any connections? Say, all
512 ports are added, and then deleted.
Thanks.
--yliu
>
> So the vhost_user ports the guests are using are never deleted.
> Only some extra (not even used) ports are added&removed in the loop to search
> for potential leaks over a longer lifetime of an openvswitch-dpdk based
> solution.
>
next prev parent reply other threads:[~2016-04-21 5:53 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-18 17:18 Memory leak when adding/removing vhost_user ports Christian Ehrhardt
2016-04-18 17:46 ` Yuanhan Liu
2016-04-18 18:14 ` Yuanhan Liu
2016-04-19 16:33 ` Christian Ehrhardt
2016-04-20 5:04 ` Yuanhan Liu
2016-04-20 6:18 ` Christian Ehrhardt
2016-04-21 5:54 ` Yuanhan Liu [this message]
2016-04-21 9:07 ` Christian Ehrhardt
2016-07-06 12:24 ` [PATCH v2] " Christian Ehrhardt
2016-07-06 12:24 ` [PATCH v2] vhost_user: avoid crash when exeeding file descriptors Christian Ehrhardt
2016-07-12 8:37 ` Yuanhan Liu
2016-07-15 19:46 ` Thomas Monjalon
2016-07-06 12:26 ` [PATCH v2] Memory leak when adding/removing vhost_user ports Christian Ehrhardt
2016-07-06 12:30 ` Christian Ehrhardt
2016-07-06 12:37 ` Christian Ehrhardt
2016-07-06 13:08 ` Yuanhan Liu
2016-07-12 12:08 ` Yuanhan Liu
2016-07-19 13:50 ` Christian Ehrhardt
2016-04-21 11:01 ` Ilya Maximets
[not found] ` <5718B306.5070801-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-04-21 14:04 ` [dpdk-dev] " Christian Ehrhardt
2016-04-21 16:56 ` Yuanhan Liu
2016-04-21 16:54 ` Yuanhan Liu
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=20160421055458.GD5872@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=christian.ehrhardt@canonical.com \
--cc=dev@dpdk.org \
--cc=diproiettod@vmware.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.