From: Colin Cross <ccross@google.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: "Kees Cook" <keescook@chromium.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
Linux-MM <linux-mm@kvack.org>,
lkml <linux-kernel@vger.kernel.org>,
"Alexey Dobriyan" <adobriyan@gmail.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Mauro Carvalho Chehab" <mchehab+huawei@kernel.org>,
"Michal Hocko" <mhocko@suse.com>,
"Alexey Gladkov" <gladkov.alexey@gmail.com>,
"Matthew Wilcox" <willy@infradead.org>,
"Jason Gunthorpe" <jgg@ziepe.ca>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
"Michel Lespinasse" <walken@google.com>,
"Michal Koutný" <mkoutny@suse.com>,
"Song Liu" <songliubraving@fb.com>,
"Huang Ying" <ying.huang@intel.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Yang Shi" <yang.shi@linux.alibaba.com>,
chenqiwu <chenqiwu@xiaomi.com>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
"John Hubbard" <jhubbard@nvidia.com>,
"Mike Christie" <mchristi@redhat.com>,
"Bart Van Assche" <bvanassche@acm.org>,
"Amit Pundir" <amit.pundir@linaro.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Christian Brauner" <christian.brauner@ubuntu.com>,
"Daniel Jordan" <daniel.m.jordan@oracle.com>,
"Adrian Reber" <areber@redhat.com>,
"Nicolas Viennot" <Nicolas.Viennot@twosigma.com>,
"Al Viro" <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org,
"John Stultz" <john.stultz@linaro.org>,
"Pekka Enberg" <penberg@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Oleg Nesterov" <oleg@redhat.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Jan Glauber" <jan.glauber@gmail.com>,
"Rob Landley" <rob@landley.net>,
"Cyrill Gorcunov" <gorcunov@openvz.org>,
"Serge E. Hallyn" <serge.hallyn@ubuntu.com>,
"David Rientjes" <rientjes@google.com>,
"Hugh Dickins" <hughd@google.com>,
"Rik van Riel" <riel@redhat.com>, "Mel Gorman" <mgorman@suse.de>,
"Tang Chen" <tangchen@cn.fujitsu.com>,
"Robin Holt" <holt@sgi.com>, "Shaohua Li" <shli@fusionio.com>,
"Sasha Levin" <sasha.levin@oracle.com>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Minchan Kim" <minchan@kernel.org>
Subject: Re: [PATCH v7 3/3] mm: add a field to store names for private anonymous memory
Date: Thu, 3 Sep 2020 11:26:04 -0700 [thread overview]
Message-ID: <CAMbhsRSjSJUPVhjV8y5cPcoo6tBDGw5rSjtryVLF816zLhdS1w@mail.gmail.com> (raw)
In-Reply-To: <393be893-6379-8adb-217c-4064f5052702@intel.com>
On Thu, Sep 3, 2020 at 11:09 AM Dave Hansen <dave.hansen@intel.com> wrote:
>
> On 9/3/20 11:00 AM, Kees Cook wrote:
> > Why is a kernel-copied string insufficient for this? I don't think VMA
> > merging is a fast-path operation, so doing a strcmp isn't going to wreck
> > anything...
> >
> > Let me try to find the earlier thread with Dave Hansen... okay, found it:
> > https://lore.kernel.org/linux-mm/51DDF071.5000309@intel.com/
> >
> > Right, so, this idea predates userfaultfd. :)
> >
> > More notes below, but I *really* think this should not be a userspace
> > pointer. And since a separate union has been found, let's just do a
> > strndup_user() for the name, validate it as containing only printable
> > characters without \n \r \v \f and move the merging logic into a
> > separate patch.
>
> FWIW, I don't have any objections to this.
>
> Refcounting strings was what I think I had the strongest reaction to
> back in the good old days of 2013. strdup() on split plus strcmp() on
> merge doesn't sound afwul to me, and it is darn straightforward. The
> biggest downside is probably kernel memory consumption. We should
> probably just think through whether having so many duplicates changes
> things materially.
>
> For instance, should/could we penalize a task's vm.max_map_count when
> it's using this mechanism?
Just to provide some concrete numbers, the ART process I examined
(https://pastebin.com/YNUTvZyz) had 280 named anonymous mappings using
a total of 6566 bytes for the names. There were only 63 unique names,
using 1925 bytes. On my personal usage device, there are currently a
total of 59769 named anonymous devices across all processes using
1224119 bytes, 5843 of them unique using 121754 bytes. The vast
majority of the unique names are of the form "stack_and_tls:999",
which are dynamically allocated in the userspace process' heap. There
are only 132 names that do not contain stack_and_tls using 9540 bytes,
repeated 49938 times using 1030651 bytes (108x). Most of those are
constant strings, meaning the pointer is into the .rodata section of a
file mapping that is shared between all processes.
Is fork a concern? It would have to strdup every name.
next prev parent reply other threads:[~2020-09-03 18:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-01 16:14 [PATCH v7 0/3] Anonymous VMA naming patches Sumit Semwal
2020-09-01 16:14 ` [PATCH v7 1/3] mm: rearrange madvise code to allow for reuse Sumit Semwal
2020-09-01 16:14 ` [PATCH v7 2/3] mm: memory: Add access_remote_vm_locked variant Sumit Semwal
2020-09-01 16:14 ` [PATCH v7 3/3] mm: add a field to store names for private anonymous memory Sumit Semwal
2020-09-03 13:25 ` Kirill A. Shutemov
2020-09-03 13:43 ` Matthew Wilcox
2020-09-03 13:58 ` Kirill A. Shutemov
2020-09-03 15:59 ` Colin Cross
2020-09-03 17:31 ` Kees Cook
2020-09-03 17:54 ` Colin Cross
2020-09-03 18:00 ` Dave Hansen
2020-09-03 18:00 ` Kees Cook
2020-09-03 18:09 ` Dave Hansen
2020-09-03 18:26 ` Colin Cross [this message]
2020-09-03 18:40 ` Dave Hansen
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=CAMbhsRSjSJUPVhjV8y5cPcoo6tBDGw5rSjtryVLF816zLhdS1w@mail.gmail.com \
--to=ccross@google.com \
--cc=Nicolas.Viennot@twosigma.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=amit.pundir@linaro.org \
--cc=areber@redhat.com \
--cc=bvanassche@acm.org \
--cc=chenqiwu@xiaomi.com \
--cc=christian.brauner@ubuntu.com \
--cc=corbet@lwn.net \
--cc=daniel.m.jordan@oracle.com \
--cc=dave.hansen@intel.com \
--cc=ebiederm@xmission.com \
--cc=gladkov.alexey@gmail.com \
--cc=gorcunov@openvz.org \
--cc=hannes@cmpxchg.org \
--cc=holt@sgi.com \
--cc=hughd@google.com \
--cc=jan.glauber@gmail.com \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=john.stultz@linaro.org \
--cc=keescook@chromium.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mchehab+huawei@kernel.org \
--cc=mchristi@redhat.com \
--cc=mgorman@suse.de \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=mingo@kernel.org \
--cc=mkoutny@suse.com \
--cc=oleg@redhat.com \
--cc=penberg@kernel.org \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=rob@landley.net \
--cc=sasha.levin@oracle.com \
--cc=serge.hallyn@ubuntu.com \
--cc=shli@fusionio.com \
--cc=songliubraving@fb.com \
--cc=sumit.semwal@linaro.org \
--cc=tangchen@cn.fujitsu.com \
--cc=tglx@linutronix.de \
--cc=vbabka@suse.cz \
--cc=viro@zeniv.linux.org.uk \
--cc=walken@google.com \
--cc=willy@infradead.org \
--cc=yang.shi@linux.alibaba.com \
--cc=ying.huang@intel.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