Linux-api Archive on lore.kernel.org
 help / color / Atom feed
From: Roman Gushchin <guro@fb.com>
To: Mike Rapoport <rppt@kernel.org>
Cc: Shakeel Butt <shakeelb@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Andy Lutomirski <luto@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Borislav Petkov <bp@alien8.de>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Christopher Lameter <cl@linux.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	David Hildenbrand <david@redhat.com>,
	Elena Reshetova <elena.reshetova@intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
	James Bottomley <jejb@linux.ibm.com>,
	"Kirill A. Shutemov" <kirill@shutemov.name>,
	Matthew Wilcox <willy@infradead.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Mike Rapoport <rppt@linux.ibm.com>,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Rick Edgecombe <rick.p.edgecombe@intel.com>,
	Shuah Khan <shuah@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tycho Andersen <tycho@tycho.ws>, Will Deacon <will@kernel.org>,
	<linux-api@vger.kernel.org>, <linux-arch@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	<linux-kselftest@vger.kernel.org>, <linux-nvdimm@lists.01.org>,
	<linux-riscv@lists.infradead.org>, <x86@kernel.org>
Subject: Re: [PATCH v12 07/10] secretmem: add memcg accounting
Date: Mon, 30 Nov 2020 12:15:40 -0800
Message-ID: <20201130201540.GB1354703@carbon.DHCP.thefacebook.com> (raw)
In-Reply-To: <20201129172625.GD557259@kernel.org>

On Sun, Nov 29, 2020 at 07:26:25PM +0200, Mike Rapoport wrote:
> On Sun, Nov 29, 2020 at 07:53:45AM -0800, Shakeel Butt wrote:
> > On Wed, Nov 25, 2020 at 1:51 AM Mike Rapoport <rppt@kernel.org> wrote:
> > >
> > > From: Mike Rapoport <rppt@linux.ibm.com>
> > >
> > > Account memory consumed by secretmem to memcg. The accounting is updated
> > > when the memory is actually allocated and freed.
> > >
> > > Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> > > Acked-by: Roman Gushchin <guro@fb.com>
> > > ---
> > >  mm/filemap.c   |  3 ++-
> > >  mm/secretmem.c | 36 +++++++++++++++++++++++++++++++++++-
> > >  2 files changed, 37 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/mm/filemap.c b/mm/filemap.c
> > > index 249cf489f5df..cf7f1dc9f4b8 100644
> > > --- a/mm/filemap.c
> > > +++ b/mm/filemap.c
> > > @@ -42,6 +42,7 @@
> > >  #include <linux/psi.h>
> > >  #include <linux/ramfs.h>
> > >  #include <linux/page_idle.h>
> > > +#include <linux/secretmem.h>
> > >  #include "internal.h"
> > >
> > >  #define CREATE_TRACE_POINTS
> > > @@ -844,7 +845,7 @@ static noinline int __add_to_page_cache_locked(struct page *page,
> > >         page->mapping = mapping;
> > >         page->index = offset;
> > >
> > > -       if (!huge) {
> > > +       if (!huge && !page_is_secretmem(page)) {
> > >                 error = mem_cgroup_charge(page, current->mm, gfp);
> > >                 if (error)
> > >                         goto error;
> > > diff --git a/mm/secretmem.c b/mm/secretmem.c
> > > index 52a900a135a5..eb6628390444 100644
> > > --- a/mm/secretmem.c
> > > +++ b/mm/secretmem.c
> > > @@ -18,6 +18,7 @@
> > >  #include <linux/memblock.h>
> > >  #include <linux/pseudo_fs.h>
> > >  #include <linux/secretmem.h>
> > > +#include <linux/memcontrol.h>
> > >  #include <linux/set_memory.h>
> > >  #include <linux/sched/signal.h>
> > >
> > > @@ -44,6 +45,32 @@ struct secretmem_ctx {
> > >
> > >  static struct cma *secretmem_cma;
> > >
> > > +static int secretmem_account_pages(struct page *page, gfp_t gfp, int order)
> > > +{
> > > +       int err;
> > > +
> > > +       err = memcg_kmem_charge_page(page, gfp, order);
> > > +       if (err)
> > > +               return err;
> > > +
> > > +       /*
> > > +        * seceremem caches are unreclaimable kernel allocations, so treat
> > > +        * them as unreclaimable slab memory for VM statistics purposes
> > > +        */
> > > +       mod_node_page_state(page_pgdat(page), NR_SLAB_UNRECLAIMABLE_B,
> > > +                           PAGE_SIZE << order);
> > 
> > Please use mod_lruvec_page_state() instead, so we get the memcg stats too.
> 
> Ok
> 
> > BTW I think secretmem deserves a vmstat entry instead of overloading
> > NR_SLAB_UNRECLAIMABLE_B.
> 
> I'd prefer to wait with a dedicated vmstat for now. We can always add it
> later, once we have better picture of secremem usage.

+1 here.

From what I understand it's not clear now how big typical secret areas will be.
If there will be few 2Mb areas per container (like for storing some keys),
IMO it doesn't justify adding a separate counter. If they will be measured
in GBs, then we'll add it later.

Thanks!

  reply index

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-25  9:21 [PATCH v12 00/10] mm: introduce memfd_secret system call to create "secret" memory areas Mike Rapoport
2020-11-25  9:21 ` [PATCH v12 01/10] mm: add definition of PMD_PAGE_ORDER Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 02/10] mmap: make mlock_future_check() global Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 03/10] set_memory: allow set_direct_map_*_noflush() for multiple pages Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 04/10] set_memory: allow querying whether set_direct_map_*() is actually enabled Mike Rapoport
2020-11-25 11:22   ` David Hildenbrand
2020-11-25 12:11     ` Mike Rapoport
2020-11-25 12:42       ` David Hildenbrand
2020-11-25 18:36   ` Catalin Marinas
2020-11-25  9:22 ` [PATCH v12 05/10] mm: introduce memfd_secret system call to create "secret" memory areas Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 06/10] secretmem: use PMD-size pages to amortize direct map fragmentation Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 07/10] secretmem: add memcg accounting Mike Rapoport
2020-11-29 15:53   ` Shakeel Butt
2020-11-29 17:26     ` Mike Rapoport
2020-11-30 20:15       ` Roman Gushchin [this message]
2020-11-25  9:22 ` [PATCH v12 08/10] PM: hibernate: disable when there are active secretmem users Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 09/10] arch, mm: wire up memfd_secret system call were relevant Mike Rapoport
2020-11-25  9:22 ` [PATCH v12 10/10] secretmem: test: add basic selftest for memfd_secret(2) Mike Rapoport

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=20201130201540.GB1354703@carbon.DHCP.thefacebook.com \
    --to=guro@fb.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=cl@linux.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=elena.reshetova@intel.com \
    --cc=hpa@zytor.com \
    --cc=jejb@linux.ibm.com \
    --cc=kirill@shutemov.name \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=luto@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=mtk.manpages@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peterz@infradead.org \
    --cc=rick.p.edgecombe@intel.com \
    --cc=rppt@kernel.org \
    --cc=rppt@linux.ibm.com \
    --cc=shakeelb@google.com \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tycho@tycho.ws \
    --cc=viro@zeniv.linux.org.uk \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=x86@kernel.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

Linux-api Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-api/0 linux-api/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-api linux-api/ https://lore.kernel.org/linux-api \
		linux-api@vger.kernel.org
	public-inbox-index linux-api

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-api


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git