linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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, ' ');
> 


  reply	other threads:[~2018-09-24 18:27 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-24 17:55 [patch] mm, thp: always specify ineligible vmas as nh in smaps David Rientjes
2018-09-24 18:25 ` Vlastimil Babka [this message]
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=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).