All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joonsoo Kim <js1304-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
Cc: Alex Shi
	<alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>,
	Shakeel Butt <shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Michal Hocko <mhocko-IBi9RG/b67k@public.gmane.org>,
	"Kirill A. Shutemov"
	<kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>,
	Roman Gushchin <guro-b10kYP2dOMg@public.gmane.org>,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kernel-team-b10kYP2dOMg@public.gmane.org
Subject: Re: [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control
Date: Fri, 24 Apr 2020 09:30:52 +0900	[thread overview]
Message-ID: <20200424003051.GE13929@js1304-desktop> (raw)
In-Reply-To: <20200420221126.341272-16-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>

On Mon, Apr 20, 2020 at 06:11:23PM -0400, Johannes Weiner wrote:
> Without swap page tracking, users that are otherwise memory controlled
> can easily escape their containment and allocate significant amounts
> of memory that they're not being charged for. That's because swap does
> readahead, but without the cgroup records of who owned the page at
> swapout, readahead pages don't get charged until somebody actually
> faults them into their page table and we can identify an owner task.
> This can be maliciously exploited with MADV_WILLNEED, which triggers
> arbitrary readahead allocations without charging the pages.
> 
> Make swap swap page tracking an integral part of memcg and remove the
> Kconfig options. In the first place, it was only made configurable to
> allow users to save some memory. But the overhead of tracking cgroup
> ownership per swap page is minimal - 2 byte per page, or 512k per 1G
> of swap, or 0.04%. Saving that at the expense of broken containment
> semantics is not something we should present as a coequal option.
> 
> The swapaccount=0 boot option will continue to exist, and it will
> eliminate the page_counter overhead and hide the swap control files,
> but it won't disable swap slot ownership tracking.
> 
> This patch makes sure we always have the cgroup records at swapin
> time; the next patch will fix the actual bug by charging readahead
> swap pages at swapin time rather than at fault time.
> 
> Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>

Reviewed-by: Joonsoo Kim <iamjoonsoo.kim-Hm3cg6mZ9cc@public.gmane.org>


WARNING: multiple messages have this Message-ID (diff)
From: Joonsoo Kim <js1304@gmail.com>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Alex Shi <alex.shi@linux.alibaba.com>,
	Shakeel Butt <shakeelb@google.com>,
	Hugh Dickins <hughd@google.com>, Michal Hocko <mhocko@suse.com>,
	"Kirill A. Shutemov" <kirill@shutemov.name>,
	Roman Gushchin <guro@fb.com>,
	linux-mm@kvack.org, cgroups@vger.kernel.org,
	linux-kernel@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control
Date: Fri, 24 Apr 2020 09:30:52 +0900	[thread overview]
Message-ID: <20200424003051.GE13929@js1304-desktop> (raw)
In-Reply-To: <20200420221126.341272-16-hannes@cmpxchg.org>

On Mon, Apr 20, 2020 at 06:11:23PM -0400, Johannes Weiner wrote:
> Without swap page tracking, users that are otherwise memory controlled
> can easily escape their containment and allocate significant amounts
> of memory that they're not being charged for. That's because swap does
> readahead, but without the cgroup records of who owned the page at
> swapout, readahead pages don't get charged until somebody actually
> faults them into their page table and we can identify an owner task.
> This can be maliciously exploited with MADV_WILLNEED, which triggers
> arbitrary readahead allocations without charging the pages.
> 
> Make swap swap page tracking an integral part of memcg and remove the
> Kconfig options. In the first place, it was only made configurable to
> allow users to save some memory. But the overhead of tracking cgroup
> ownership per swap page is minimal - 2 byte per page, or 512k per 1G
> of swap, or 0.04%. Saving that at the expense of broken containment
> semantics is not something we should present as a coequal option.
> 
> The swapaccount=0 boot option will continue to exist, and it will
> eliminate the page_counter overhead and hide the swap control files,
> but it won't disable swap slot ownership tracking.
> 
> This patch makes sure we always have the cgroup records at swapin
> time; the next patch will fix the actual bug by charging readahead
> swap pages at swapin time rather than at fault time.
> 
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>

Reviewed-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>



  parent reply	other threads:[~2020-04-24  0:30 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-20 22:11 [PATCH 00/18] mm: memcontrol: charge swapin pages on instantiation Johannes Weiner
2020-04-20 22:11 ` Johannes Weiner
2020-04-20 22:11 ` [PATCH 04/18] mm: memcontrol: move out cgroup swaprate throttling Johannes Weiner
     [not found]   ` <20200420221126.341272-5-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:11     ` Alex Shi
2020-04-21  9:11       ` Alex Shi
2020-04-22  6:37     ` Joonsoo Kim
2020-04-22  6:37       ` Joonsoo Kim
2020-04-22 22:20     ` Shakeel Butt
2020-04-22 22:20       ` Shakeel Butt
2020-04-20 22:11 ` [PATCH 06/18] mm: memcontrol: prepare uncharging for removal of private page type counters Johannes Weiner
     [not found]   ` <20200420221126.341272-7-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:12     ` Alex Shi
2020-04-21  9:12       ` Alex Shi
2020-04-22  6:41     ` Joonsoo Kim
2020-04-22  6:41       ` Joonsoo Kim
2020-04-20 22:11 ` [PATCH 07/18] mm: memcontrol: prepare move_account " Johannes Weiner
     [not found]   ` <20200420221126.341272-8-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:13     ` Alex Shi
2020-04-21  9:13       ` Alex Shi
2020-04-22  6:41     ` Joonsoo Kim
2020-04-22  6:41       ` Joonsoo Kim
2020-04-20 22:11 ` [PATCH 08/18] mm: memcontrol: prepare cgroup vmstat infrastructure for native anon counters Johannes Weiner
     [not found]   ` <20200420221126.341272-9-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-22  6:42     ` Joonsoo Kim
2020-04-22  6:42       ` Joonsoo Kim
2020-04-20 22:11 ` [PATCH 09/18] mm: memcontrol: switch to native NR_FILE_PAGES and NR_SHMEM counters Johannes Weiner
     [not found]   ` <20200420221126.341272-10-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-22  6:42     ` Joonsoo Kim
2020-04-22  6:42       ` Joonsoo Kim
2020-04-20 22:11 ` [PATCH 10/18] mm: memcontrol: switch to native NR_ANON_MAPPED counter Johannes Weiner
2020-04-22  6:51   ` Joonsoo Kim
2020-04-22 12:28     ` Johannes Weiner
2020-04-23  5:27       ` Joonsoo Kim
2020-04-20 22:11 ` [PATCH 13/18] mm: memcontrol: drop unused try/commit/cancel charge API Johannes Weiner
     [not found]   ` <20200420221126.341272-14-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-24  0:30     ` Joonsoo Kim
2020-04-24  0:30       ` Joonsoo Kim
     [not found] ` <20200420221126.341272-1-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-20 22:11   ` [PATCH 01/18] mm: fix NUMA node file count error in replace_page_cache() Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-2-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  8:28       ` Alex Shi
2020-04-21  8:28         ` Alex Shi
2020-04-21 19:13       ` Shakeel Butt
2020-04-21 19:13         ` Shakeel Butt
2020-04-22  6:34       ` Joonsoo Kim
2020-04-22  6:34         ` Joonsoo Kim
2020-04-20 22:11   ` [PATCH 02/18] mm: memcontrol: fix theoretical race in charge moving Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-3-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-22  6:36       ` Joonsoo Kim
2020-04-22  6:36         ` Joonsoo Kim
2020-04-22 16:51       ` Shakeel Butt
2020-04-22 16:51         ` Shakeel Butt
     [not found]         ` <CALvZod4gFC1TDo8dtdaeQKj_ZEoOnQvRnw_dZANH7qQYCmnnGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-04-22 17:42           ` Johannes Weiner
2020-04-22 17:42             ` Johannes Weiner
     [not found]             ` <20200422174229.GD362484-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-22 18:01               ` Shakeel Butt
2020-04-22 18:01                 ` Shakeel Butt
2020-04-22 18:02     ` Shakeel Butt
2020-04-20 22:11   ` [PATCH 03/18] mm: memcontrol: drop @compound parameter from memcg charging API Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-4-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:11       ` Alex Shi
2020-04-21  9:11         ` Alex Shi
2020-04-22  6:37       ` Joonsoo Kim
2020-04-22  6:37         ` Joonsoo Kim
2020-04-22 17:30       ` Shakeel Butt
2020-04-22 17:30         ` Shakeel Butt
2020-04-20 22:11   ` [PATCH 05/18] mm: memcontrol: convert page cache to a new mem_cgroup_charge() API Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-6-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:12       ` Alex Shi
2020-04-21  9:12         ` Alex Shi
2020-04-22  6:40       ` Joonsoo Kim
2020-04-22  6:40         ` Joonsoo Kim
2020-04-22 12:09         ` Johannes Weiner
2020-04-22 12:09           ` Johannes Weiner
2020-04-23  5:25           ` Joonsoo Kim
2020-05-08 16:01             ` Johannes Weiner
2020-05-11  1:57               ` Joonsoo Kim
     [not found]               ` <20200508160122.GB181181-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-11  7:38                 ` Hugh Dickins
2020-05-11  7:38                   ` Hugh Dickins
2020-05-11 15:06                   ` Johannes Weiner
     [not found]                     ` <20200511150648.GA306292-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-11 16:32                       ` Hugh Dickins
2020-05-11 16:32                         ` Hugh Dickins
     [not found]                         ` <alpine.LSU.2.11.2005110912180.3431-fupSdm12i1nKWymIFiNcPA@public.gmane.org>
2020-05-11 18:10                           ` Johannes Weiner
2020-05-11 18:10                             ` Johannes Weiner
2020-05-11 18:12                             ` Johannes Weiner
     [not found]                             ` <20200511181056.GA339505-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-11 18:44                               ` Hugh Dickins
2020-05-11 18:44                                 ` Hugh Dickins
2020-04-20 22:11   ` [PATCH 11/18] mm: memcontrol: switch to native NR_ANON_THPS counter Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-12-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-24  0:29       ` Joonsoo Kim
2020-04-24  0:29         ` Joonsoo Kim
2020-04-20 22:11   ` [PATCH 12/18] mm: memcontrol: convert anon and file-thp to new mem_cgroup_charge() API Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-13-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-24  0:29       ` Joonsoo Kim
2020-04-24  0:29         ` Joonsoo Kim
2020-04-20 22:11   ` [PATCH 14/18] mm: memcontrol: prepare swap controller setup for integration Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-15-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-24  0:30       ` Joonsoo Kim
2020-04-24  0:30         ` Joonsoo Kim
2020-04-20 22:11   ` [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-16-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:27       ` Alex Shi
2020-04-21  9:27         ` Alex Shi
     [not found]         ` <e9d58c82-d746-dcd0-d9e3-6322014a3b03-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-04-21 14:39           ` Johannes Weiner
2020-04-21 14:39             ` Johannes Weiner
     [not found]             ` <20200421143923.GC341682-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-22  3:14               ` Alex Shi
2020-04-22  3:14                 ` Alex Shi
     [not found]                 ` <2721c508-9b32-d0e7-454d-386129bfda1b-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org>
2020-04-22 13:30                   ` Johannes Weiner
2020-04-22 13:30                     ` Johannes Weiner
2020-04-22 13:40                     ` Alex Shi
2020-04-22 13:43                     ` Alex Shi
2020-04-24  0:30       ` Joonsoo Kim [this message]
2020-04-24  0:30         ` Joonsoo Kim
2020-04-24  3:01     ` Johannes Weiner
2020-04-20 22:11   ` [PATCH 16/18] mm: memcontrol: charge swapin pages on instantiation Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-17-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:21       ` Alex Shi
2020-04-21  9:21         ` Alex Shi
2020-04-24  0:44     ` Joonsoo Kim
2020-04-24  2:51       ` Johannes Weiner
2020-04-24  2:51         ` Johannes Weiner
     [not found]         ` <20200424025135.GB464082-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-28  6:49           ` Joonsoo Kim
2020-04-28  6:49             ` Joonsoo Kim
2020-04-20 22:11   ` [PATCH 17/18] mm: memcontrol: delete unused lrucare handling Johannes Weiner
2020-04-20 22:11     ` Johannes Weiner
     [not found]     ` <20200420221126.341272-18-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-24  0:46       ` Joonsoo Kim
2020-04-24  0:46         ` Joonsoo Kim
2020-04-21  9:32   ` [PATCH 00/18] mm: memcontrol: charge swapin pages on instantiation Alex Shi
2020-04-21  9:32     ` Alex Shi
2020-04-20 22:11 ` [PATCH 18/18] mm: memcontrol: update page->mem_cgroup stability rules Johannes Weiner
     [not found]   ` <20200420221126.341272-19-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-04-21  9:20     ` Alex Shi
2020-04-21  9:20       ` Alex Shi
2020-04-24  0:48     ` Joonsoo Kim
2020-04-24  0:48       ` Joonsoo Kim
2020-04-21  9:10 ` Hillf Danton
     [not found]   ` <20200421091014.2180-1-hdanton-k+cT0dCbe1g@public.gmane.org>
2020-04-21 14:34     ` Johannes Weiner
2020-04-21 14:34       ` Johannes Weiner

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=20200424003051.GE13929@js1304-desktop \
    --to=js1304-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=guro-b10kYP2dOMg@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=kernel-team-b10kYP2dOMg@public.gmane.org \
    --cc=kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=mhocko-IBi9RG/b67k@public.gmane.org \
    --cc=shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.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.