From: Vlastimil Babka <vbabka@suse.cz>
To: David Rientjes <rientjes@google.com>,
Alexey Dobriyan <adobriyan@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Michal Hocko <mhocko@suse.com>,
linux-kernel@vger.kernel.org,
Linux-MM layout <linux-mm@kvack.org>,
Linux API <linux-api@vger.kernel.org>
Subject: Re: [patch] mm, thp: always specify ineligible vmas as nh in smaps
Date: Mon, 24 Sep 2018 20:25:15 +0200 [thread overview]
Message-ID: <e2f159f3-5373-dda4-5904-ed24d029de3c@suse.cz> (raw)
In-Reply-To: <alpine.DEB.2.21.1809241054050.224429@chino.kir.corp.google.com>
+CC linux-mm linux-api
On 9/24/18 7:55 PM, David Rientjes wrote:
> 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>
Fixes: 1860033237d4 ("mm: make PR_SET_THP_DISABLE immediately active")
Not worth for stable IMO, but makes sense otherwise.
Acked-by: Vlastimil Babka <vbabka@suse.cz>
A question below:
> ---
> 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;
Should it also clear VM_HUGEPAGE? In case MMF_DISABLE_THP overrides a
madvise(MADV_HUGEPAGE)'d vma? (I expect it does?)
> +
> 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 parent reply other threads:[~2018-09-24 18:27 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <alpine.DEB.2.21.1809241054050.224429@chino.kir.corp.google.com>
2018-09-24 18:25 ` Vlastimil Babka [this message]
2018-09-24 19:17 ` [patch] mm, thp: always specify ineligible vmas as nh in smaps 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=e2f159f3-5373-dda4-5904-ed24d029de3c@suse.cz \
--to=vbabka@suse.cz \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=rientjes@google.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;
as well as URLs for NNTP newsgroup(s).