From: David Rientjes <rientjes@google.com>
To: Alexey Dobriyan <adobriyan@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Vlastimil Babka <vbabka@suse.cz>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Michal Hocko <mhocko@suse.com>,
linux-kernel@vger.kernel.org
Subject: [patch] mm, thp: always specify ineligible vmas as nh in smaps
Date: Mon, 24 Sep 2018 10:55:05 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.21.1809241054050.224429@chino.kir.corp.google.com> (raw)
Commit 1860033237d4 ("mm: make PR_SET_THP_DISABLE immediately active")
introduced a regression in that userspace cannot always determine the set
of vmas where thp is ineligible.
Userspace relies on the "nh" flag being emitted as part of /proc/pid/smaps
to determine if a vma is eligible to be backed by hugepages.
Previous to this commit, prctl(PR_SET_THP_DISABLE, 1) would cause thp to
be disabled and emit "nh" as a flag for the corresponding vmas as part of
/proc/pid/smaps. After the commit, thp is disabled by means of an mm
flag and "nh" is not emitted.
This causes smaps parsing libraries to assume a vma is eligible for thp
and ends up puzzling the user on why its memory is not backed by thp.
Signed-off-by: David Rientjes <rientjes@google.com>
---
fs/proc/task_mmu.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -653,13 +653,23 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)
#endif
#endif /* CONFIG_ARCH_HAS_PKEYS */
};
+ unsigned long flags = vma->vm_flags;
size_t i;
+ /*
+ * Disabling thp is possible through both MADV_NOHUGEPAGE and
+ * PR_SET_THP_DISABLE. Both historically used VM_NOHUGEPAGE. Since
+ * the introduction of MMF_DISABLE_THP, however, userspace needs the
+ * ability to detect vmas where thp is not eligible in the same manner.
+ */
+ if (vma->vm_mm && test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags))
+ flags |= VM_NOHUGEPAGE;
+
seq_puts(m, "VmFlags: ");
for (i = 0; i < BITS_PER_LONG; i++) {
if (!mnemonics[i][0])
continue;
- if (vma->vm_flags & (1UL << i)) {
+ if (flags & (1UL << i)) {
seq_putc(m, mnemonics[i][0]);
seq_putc(m, mnemonics[i][1]);
seq_putc(m, ' ');
next reply other threads:[~2018-09-24 17:55 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-24 17:55 David Rientjes [this message]
2018-09-24 18:25 ` [patch] mm, thp: always specify ineligible vmas as nh in smaps Vlastimil Babka
2018-09-24 19:17 ` David Rientjes
2018-09-24 19:30 ` [patch v2] " David Rientjes
2018-09-24 19:56 ` Michal Hocko
2018-09-24 20:02 ` Michal Hocko
2018-09-24 20:43 ` Vlastimil Babka
2018-09-25 5:50 ` Michal Hocko
2018-09-25 19:52 ` David Rientjes
2018-09-25 20:29 ` Michal Hocko
2018-09-25 21:45 ` David Rientjes
2018-09-25 22:04 ` Andrew Morton
2018-09-26 0:55 ` David Rientjes
2018-09-26 6:06 ` Michal Hocko
2018-10-02 11:28 ` [RFC PATCH] mm, proc: report PR_SET_THP_DISABLE in proc Michal Hocko
2018-10-02 20:29 ` David Rientjes
2018-10-03 7:36 ` Michal Hocko
2018-10-03 22:51 ` David Rientjes
2018-10-04 5:58 ` Michal Hocko
2018-10-04 9:15 ` David Rientjes
2018-10-04 9:46 ` Michal Hocko
2018-10-04 18:34 ` David Rientjes
2018-10-09 8:33 ` Michal Hocko
2018-10-15 15:03 ` Michal Hocko
2018-10-15 22:25 ` David Rientjes
2018-10-16 10:48 ` Michal Hocko
2018-10-16 21:24 ` David Rientjes
2018-10-17 7:05 ` Michal Hocko
2018-10-17 19:59 ` David Rientjes
2018-10-18 7:00 ` Michal Hocko
2018-11-14 13:23 ` Michal Hocko
2018-11-14 21:41 ` David Rientjes
2018-11-15 9:02 ` Michal Hocko
2018-11-15 9:22 ` Michal Hocko
2018-11-19 22:05 ` David Rientjes
2018-11-20 7:48 ` Michal Hocko
2018-10-03 17:33 ` Mike Rapoport
2018-09-25 21:50 ` [patch v3] mm, thp: always specify disabled vmas as nh in smaps David Rientjes
2018-09-26 6:12 ` Michal Hocko
2018-09-26 7:17 ` Michal Hocko
2018-09-26 8:40 ` Vlastimil Babka
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=alpine.DEB.2.21.1809241054050.224429@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=vbabka@suse.cz \
/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;
as well as URLs for NNTP newsgroup(s).