Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp779947imu; Tue, 20 Nov 2018 06:54:25 -0800 (PST) X-Google-Smtp-Source: AJdET5fNkqJrrfCrQpencZrwdazFLYvGGG1u1CGrMK2AriIBQO38e03oplwX//lKrV6Umxj7cbHA X-Received: by 2002:a62:d148:: with SMTP id t8mr2568756pfl.52.1542725665494; Tue, 20 Nov 2018 06:54:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542725665; cv=none; d=google.com; s=arc-20160816; b=WHmAMEjJPhnSU/FtOMmyNuQa9GvH3S5QtMdiH92n1yN4e4TuD52TbXZWvNmpcLNsTC BcBjWSVCuPVBQqr9WacZ9BROdYnTS9Axt7imF7cxQErreUOKJLVLtmb5mQIR7y7/FQ/Q 63Y1LBe9+Ja+Q0URAT8s6kzv5k/5o/4R0AiZPAlyZ2Ofs/AiOhVs02bQABeeWhzg5Geo 3gZOOqj43ZE2zNry4YOBfE18Kjgfaw4eLkfIK4Zh5xgGUGJvAIHMtfy4r2w1uo5yYVyS weNcfjeClYRfj7BjR3/NflfhBgFCl3w/mZnzqdXDrF3F04f0I1JCfOW7Skki3MgMwSPO r7nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=EFp3F86cJsY7G48W9ZD0w72uL8HdGRqo+Nvn3jZmHVQ=; b=IoA7r5u+Md6nZ9WsJolzuCYX3cMVn90yn2O9h4Mje4TCmGqQ+xlB8pswZGknM1JoLc zPfT+1pWGE1sRr6OKKrqTdohxBVlQdRxDXpRgZrmNRLDc+qJjhEF8qw+aOKgL+CHY/+L WlSIU+RybsN69G4C97t5SiuSd6aejHtC4YnsubUTGo6c6+62d22gydUpXsAfCcZEngmv IdvwJaA2XCGxuyf4Y9o7K+6uWAYwQgn2PzyJjjOKno8j6XIEFEZA4i6yU6bS/wTeGrsC yKSmX8GWJTQHGDnbjgN6OO7aQSYZ9G51iVAz40SDwftTe/rFzWWfphwOGOd/ORGuLdjo tNsw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b3si41817538pgc.587.2018.11.20.06.54.10; Tue, 20 Nov 2018 06:54:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729463AbeKTWLG (ORCPT + 99 others); Tue, 20 Nov 2018 17:11:06 -0500 Received: from mx2.suse.de ([195.135.220.15]:33150 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729447AbeKTWLG (ORCPT ); Tue, 20 Nov 2018 17:11:06 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 284DFAEC0; Tue, 20 Nov 2018 11:42:20 +0000 (UTC) Date: Tue, 20 Nov 2018 12:42:19 +0100 From: Michal Hocko To: linux-api@vger.kernel.org Cc: Andrew Morton , Alexey Dobriyan , linux-mm@kvack.org, LKML , David Rientjes Subject: Re: [RFC PATCH 3/3] mm, proc: report PR_SET_THP_DISABLE in proc Message-ID: <20181120114219.GG22247@dhcp22.suse.cz> References: <20181120103515.25280-1-mhocko@kernel.org> <20181120103515.25280-4-mhocko@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181120103515.25280-4-mhocko@kernel.org> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Damn, David somehow didn't make it to the CC list. Sorry about that. On Tue 20-11-18 11:35:15, Michal Hocko wrote: > From: Michal Hocko > > David Rientjes has reported that 1860033237d4 ("mm: make > PR_SET_THP_DISABLE immediately active") has changed the way how > we report THPable VMAs to the userspace. Their monitoring tool is > triggering false alarms on PR_SET_THP_DISABLE tasks because it considers > an insufficient THP usage as a memory fragmentation resp. memory > pressure issue. > > Before the said commit each newly created VMA inherited VM_NOHUGEPAGE > flag and that got exposed to the userspace via /proc//smaps file. > This implementation had its downsides as explained in the commit message > but it is true that the userspace doesn't have any means to query for > the process wide THP enabled/disabled status. > > PR_SET_THP_DISABLE is a process wide flag so it makes a lot of sense > to export in the process wide context rather than per-vma. Introduce > a new field to /proc//status which export this status. If > PR_SET_THP_DISABLE is used then it reports false same as when the THP is > not compiled in. It doesn't consider the global THP status because we > already export that information via sysfs > > Fixes: 1860033237d4 ("mm: make PR_SET_THP_DISABLE immediately active") > Signed-off-by: Michal Hocko > --- > Documentation/filesystems/proc.txt | 3 +++ > fs/proc/array.c | 10 ++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt > index 06562bab509a..7995e9322889 100644 > --- a/Documentation/filesystems/proc.txt > +++ b/Documentation/filesystems/proc.txt > @@ -182,6 +182,7 @@ For example, to get the status information of a process, all you have to do is > VmSwap: 0 kB > HugetlbPages: 0 kB > CoreDumping: 0 > + THP_enabled: 1 > Threads: 1 > SigQ: 0/28578 > SigPnd: 0000000000000000 > @@ -256,6 +257,8 @@ Table 1-2: Contents of the status files (as of 4.8) > HugetlbPages size of hugetlb memory portions > CoreDumping process's memory is currently being dumped > (killing the process may lead to a corrupted core) > + THP_enabled process is allowed to use THP (returns 0 when > + PR_SET_THP_DISABLE is set on the process > Threads number of threads > SigQ number of signals queued/max. number for queue > SigPnd bitmap of pending signals for the thread > diff --git a/fs/proc/array.c b/fs/proc/array.c > index 0ceb3b6b37e7..9d428d5a0ac8 100644 > --- a/fs/proc/array.c > +++ b/fs/proc/array.c > @@ -392,6 +392,15 @@ static inline void task_core_dumping(struct seq_file *m, struct mm_struct *mm) > seq_putc(m, '\n'); > } > > +static inline void task_thp_status(struct seq_file *m, struct mm_struct *mm) > +{ > + bool thp_enabled = IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE); > + > + if (thp_enabled) > + thp_enabled = !test_bit(MMF_DISABLE_THP, &mm->flags); > + seq_printf(m, "THP_enabled:\t%d\n", thp_enabled); > +} > + > int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, > struct pid *pid, struct task_struct *task) > { > @@ -406,6 +415,7 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, > if (mm) { > task_mem(m, mm); > task_core_dumping(m, mm); > + task_thp_status(m, mm); > mmput(mm); > } > task_sig(m, task); > -- > 2.19.1 -- Michal Hocko SUSE Labs