All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vasily Averin <vasily.averin@linux.dev>
To: Shakeel Butt <shakeelb@google.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
	Vlastimil Babka <vbabka@suse.cz>, NeilBrown <neilb@suse.de>,
	Michal Hocko <mhocko@suse.com>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Linux MM <linux-mm@kvack.org>,
	netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Tejun Heo <tj@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Eric Dumazet <edumazet@google.com>,
	Kees Cook <keescook@chromium.org>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	David Ahern <dsahern@kernel.org>,
	linux-kernel@vger.kernel.org, kernel@openvz.org,
	Luis Chamberlain <mcgrof@kernel.org>
Subject: problem with accounting of allocations called from __net_init hooks
Date: Mon, 11 Apr 2022 12:40:29 +0300	[thread overview]
Message-ID: <46c1c59e-1368-620d-e57a-f35c2c82084d@linux.dev> (raw)
In-Reply-To: <20220301180917.tkibx7zpcz2faoxy@google.com>

On 3/1/22 21:09, Shakeel Butt wrote:
> On Mon, Feb 28, 2022 at 06:36:58AM -0800, Luis Chamberlain wrote:
>> On Mon, Feb 28, 2022 at 10:17:16AM +0300, Vasily Averin wrote:
>> > Following one-liner running inside memcg-limited container consumes
>> > huge number of host memory and can trigger global OOM.
>> >
>> > for i in `seq 1 xxx` ; do ip l a v$i type veth peer name vp$i ; done
>> >
>> > Patch accounts most part of these allocations and can protect host.
>> > ---[cut]---
>> > It is not polished, and perhaps should be splitted.
>> > obviously it affects other kind of netdevices too.
>> > Unfortunately I'm not sure that I will have enough time to handle it properly
>> > and decided to publish current patch version as is.
>> > OpenVz workaround it by using per-container limit for number of
>> > available netdevices, but upstream does not have any kind of
>> > per-container configuration.
>> > ------

I've noticed that __register_pernet_operations() executes init hook of registered 
pernet_operation structure in all found net namespaces.

Usually these hooks are called by process related to specified net namespace,
and all marked allocation are accounted to related container:
i.e. objects related to netns in container A are accounted to memcg of container A,
objects allocated inside container B are accounted to corresponding memcg B,
and so on.

However __register_pernet_operations() calls the same hooks in one context,
and as result all marked allocations are accounted to one memcg.
It is quite rare scenario, however current processing looks incorrect for me.

I expect we can take memcg from 'struct net', because of this structure is accounted per se.
then we can use set_active_memcg() before init hook execution.
However I'm not sure it is fully correct.

Could you please advise some better solution?

Thank you,
	Vasily Averin


  parent reply	other threads:[~2022-04-11  9:40 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-28  7:17 [PATCH RFC] net: memcg accounting for veth devices Vasily Averin
2022-02-28 14:36 ` Luis Chamberlain
2022-03-01 18:09   ` Shakeel Butt
2022-03-01 18:28     ` Luis Chamberlain
2022-03-01 20:50       ` Eric W. Biederman
2022-03-01 21:25         ` Luis Chamberlain
2022-03-01 21:31           ` Luis Chamberlain
2022-03-02 14:43           ` Eric W. Biederman
2022-03-02 21:52             ` Luis Chamberlain
2022-03-02 13:30         ` King, Colin
2022-04-11  9:40     ` Vasily Averin [this message]
2022-04-17  6:39       ` [PATCH memcg RFC] net: set proper memcg for net_init hooks allocations Vasily Averin
2022-04-21 15:56         ` Shakeel Butt
2022-04-22 20:01           ` Vasily Averin
2022-04-22 20:09             ` Vasily Averin
2022-04-22 20:22               ` Shakeel Butt
     [not found]                 ` <CALvZod7ys1SNrQhbweCoCKVyfN1itE16jhC97TqjWtHDFh1RpQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-04-23  7:56                   ` [PATCH] " Vasily Averin
2022-04-23  7:56                     ` Vasily Averin
     [not found]                     ` <6f38e02b-9af3-4dcf-9000-1118a04b13c7-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-04-23  9:39                       ` kernel test robot
2022-04-23  9:39                         ` kernel test robot
2022-04-23  9:39                       ` kernel test robot
2022-04-23  9:39                         ` kernel test robot
2022-04-23 10:31                     ` kernel test robot
2022-04-23 15:38                       ` [PATCH memcg v2] " Vasily Averin
2022-04-24 14:46                     ` [net] 3b379e5391: BUG:kernel_NULL_pointer_dereference,address kernel test robot
2022-04-24 14:46                       ` kernel test robot
2022-04-25 10:56                       ` [PATCH memcg v3] net: set proper memcg for net_init hooks allocations Vasily Averin
2022-04-25 10:56                         ` Vasily Averin
2022-04-26  2:50                         ` Roman Gushchin
2022-04-26  5:58                           ` Vasily Averin
2022-04-26  5:58                             ` Vasily Averin
2022-04-26  6:43                           ` [PATCH memcg v4] " Vasily Averin
     [not found]                             ` <33085523-a8b9-1bf6-2726-f456f59015ef-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-04-26 22:13                               ` Roman Gushchin
2022-04-26 22:13                                 ` Roman Gushchin
2022-04-27  5:23                             ` Shakeel Butt
     [not found]                               ` <CALvZod4oaj9MpBDVUp9KGmnqu4F3UxjXgOLkrkvmRfFjA7F1dw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-04-27 12:22                                 ` Michal Koutný
2022-04-27 12:22                                   ` Michal Koutný
     [not found]                                   ` <20220427122232.GA9823-9OudH3eul5jcvrawFnH+a6VXKuFTiq87@public.gmane.org>
2022-04-27 15:06                                     ` Shakeel Butt
2022-04-27 15:06                                       ` Shakeel Butt
2022-04-27 22:16                                       ` Vasily Averin
2022-04-27 22:16                                         ` Vasily Averin
2022-04-27 22:36                                         ` Roman Gushchin
2022-04-28  4:37                                           ` Vasily Averin
2022-04-28  4:37                                             ` Vasily Averin
     [not found]                                         ` <6b18f82d-1950-b38e-f3f5-94f6c23f0edb-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-04-27 22:47                                           ` Shakeel Butt
2022-04-27 22:47                                             ` Shakeel Butt
     [not found]                                             ` <CALvZod5HugCO2G3+Av3pXC6s2sy0zKW_HRaRyhOO9GOOWV1SsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-01 13:44                                               ` Vasily Averin
2022-05-01 13:44                                                 ` Vasily Averin
     [not found]                                                 ` <78b556f9-e57b-325d-89ce-7a482ef4ea21-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-05-01 21:09                                                   ` Roman Gushchin
2022-05-01 21:09                                                     ` Roman Gushchin
2022-05-02  0:10                                             ` [PATCH memcg v5] " Vasily Averin
     [not found]                                               ` <0ccfe7a4-c178-0b66-d481-2326c85a8ffb-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-05-30  8:57                                                 ` Vasily Averin
2022-05-30  8:57                                                   ` Vasily Averin
     [not found]                                                   ` <6b362c6e-9c80-4344-9430-b831f9871a3c-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-06-03  4:19                                                     ` [PATCH memcg v6] " Vasily Averin
2022-06-03  4:19                                                       ` Vasily Averin
     [not found]                                                       ` <f9394752-e272-9bf9-645f-a18c56d1c4ec-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-06-06 13:49                                                         ` Qian Cai
2022-06-06 13:49                                                           ` Qian Cai
2022-06-06 17:37                                                           ` Vasily Averin
     [not found]                                                             ` <0e714a5a-d2ed-9b44-fdbe-04b5595165da-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-06-06 18:43                                                               ` Qian Cai
2022-06-06 18:43                                                                 ` Qian Cai
2022-06-06 18:45                                                           ` Vasily Averin
2022-06-06 18:45                                                             ` Vasily Averin
     [not found]                                                             ` <360a2672-65a7-4ad4-c8b8-cc4c1f0c02cd-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-06-07  5:58                                                               ` Shakeel Butt
2022-06-07  5:58                                                                 ` Shakeel Butt
     [not found]                                                                 ` <CALvZod7+tpgKSQpMAgNKDtcsimcSjoh4rbKmUsy3G=QcRHci+Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-06-07 12:37                                                                   ` Vasily Averin
2022-06-07 12:37                                                                     ` Vasily Averin
     [not found]                                                                     ` <183333fc-e824-5c85-7c44-270474f5473a-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2022-06-07 14:10                                                                       ` Shakeel Butt
2022-06-07 14:10                                                                         ` Shakeel Butt
2022-09-18  9:28                                                       ` [sparc64] fails to boot, (was: Re: [PATCH memcg v6] net: set proper memcg for net_init hooks allocations) Anatoly Pugachev
2022-09-21 14:41                                                         ` Anatoly Pugachev
     [not found]                                                         ` <20220918092849.GA10314-DK4qA7C3Vp/Dd9xlW2Tctw@public.gmane.org>
2022-09-21 14:44                                                           ` Anatoly Pugachev
2022-09-21 14:44                                                             ` Anatoly Pugachev
     [not found]                                                             ` <CADxRZqyyHAtzaaPjcKi8AichGew2yi-_vQcKoLoxPanLvXZL0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-09-21 17:02                                                               ` Michal Koutný
2022-09-21 17:02                                                                 ` Michal Koutný
     [not found]                                                                 ` <20220921170259.GI8331-9OudH3eul5jcvrawFnH+a6VXKuFTiq87@public.gmane.org>
2022-09-26 13:06                                                                   ` Anatoly Pugachev
2022-09-26 13:06                                                                     ` Anatoly Pugachev
     [not found]                                                                     ` <CADxRZqyAG5Co9hLEp6p8vPC9WyGERR6un-3Rqapyv14G4vPXJw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-09-26 17:28                                                                       ` Jakub Kicinski
2022-09-26 17:28                                                                         ` Jakub Kicinski
2022-09-26 17:32                                                                         ` Shakeel Butt
2022-09-26 17:32                                                                           ` Shakeel Butt
     [not found]                                                                           ` <CALvZod5QProaWZgT9ykb-vrrRHBpLfqVGgW2jd-Td8aX5MBZFw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-09-26 17:36                                                                             ` Andrew Morton
2022-09-26 17:36                                                                               ` Andrew Morton
2022-09-26 19:00                                                                               ` Shakeel Butt
2022-09-27  9:54                                                         ` Vlastimil Babka
2022-09-27  9:54                                                           ` Vlastimil Babka
2022-09-28  7:54                                                           ` Thorsten Leemhuis
2022-09-28  7:21                                                         ` [sparc64] fails to boot, (was: Re: [PATCH memcg v6] net: set proper memcg for net_init hooks allocations) #forregzbot Thorsten Leemhuis

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=46c1c59e-1368-620d-e57a-f35c2c82084d@linux.dev \
    --to=vasily.averin@linux.dev \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=ebiederm@xmission.com \
    --cc=edumazet@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=keescook@chromium.org \
    --cc=kernel@openvz.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mcgrof@kernel.org \
    --cc=mhocko@suse.com \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeelb@google.com \
    --cc=tj@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=yoshfuji@linux-ipv6.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.