Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp765786imu; Tue, 20 Nov 2018 06:40:39 -0800 (PST) X-Google-Smtp-Source: AFSGD/VgcUXEHbVHN6gG9iY6bkDMPSIdDugWSMejn+K43elBErXUMm1vJyigAD+/TsrgF2D+jc20 X-Received: by 2002:a17:902:7882:: with SMTP id q2mr2533503pll.305.1542724839894; Tue, 20 Nov 2018 06:40:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542724839; cv=none; d=google.com; s=arc-20160816; b=KdNxrWY25k0fVXeOKPN2rcEvxddZaTyvd9AbCZIlzllDDnR/+ZX4PZYWOSlEAG30y3 Rqhco4zJ1xG+35yHvDhILdKJJS0ADmog1pOx7t99naEISOgwtt+coNw8eN+2BJlifnSK ZG2yp8gU1vTlfthFJB7Iz5qlmG74lpQPkmfmz589PoxlfI6usBzgyq/9yUbPzc6XrTYW 6egctTpnBYSZ8NiFhVMLvSfLVAbwmXz6sbdQGcUYqi4dya+iodLJiZvtFOSL+RtiX/L0 IVRwmUBbqV2ecf9i8SQvqn2sCsZya176YNpRqIDiQSw+ud7P4ti6eeRf27frtWXTmHFl gxOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=UipYMHSvtb8aOnY17kKqlQt8aWhzlLzqt0JzwQhgn3Q=; b=bnBGwSWEFagH7nEnLSTzqOA7/MA7JhQIKd+tdOeYjHlgjVYuoeoefDfXLxHG/5nag3 YpJSy4KsiHgtiPcB/2x3z7AAerh/gr47du81XkU3nEbIt4+IrVkI71rpiIe94hNR9AUf zvDyajtNkajkP5r7ocTv/ovm7PV8tg0n/+94uQTJaH9DE8q61mDvBSkUBkF63VP2jJUM 8f8kGWFu6vKpJTC3f5TzkV6c1YrZ9M8m0fZE+C7Pkh2KgMsTvweq9mJ983IVg1+Lz7iT prS40xVFBkIPCisiysg2++AnekMx+80PXwWT94dqZmqtC25YMyEmxpfbNpkGtDGqu/tx UwjA== 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 p187-v6si48375408pfb.127.2018.11.20.06.40.24; Tue, 20 Nov 2018 06:40:39 -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 S1728591AbeKTVED (ORCPT + 99 others); Tue, 20 Nov 2018 16:04:03 -0500 Received: from mail-ed1-f65.google.com ([209.85.208.65]:35465 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728516AbeKTVEB (ORCPT ); Tue, 20 Nov 2018 16:04:01 -0500 Received: by mail-ed1-f65.google.com with SMTP id x30so1477539edx.2; Tue, 20 Nov 2018 02:35:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UipYMHSvtb8aOnY17kKqlQt8aWhzlLzqt0JzwQhgn3Q=; b=dUZF0MtC11p/3zKul2X6vb8MY1asbCiNuK2tOGTtM8spd8V2bQDXjhurZkGFUed/WU zFR73drmuDXzgM8VtchnIeV9zvPukan8NpW17DkHzS25aGlVc3DHZYMHdMaj4eANQ8JR MF9xtk2CtDsFQVG4vWUFOYCg6ys6JSYMrsliznPsfv4SGKtKTxRQpPaKpPdI89GmPM+d tQfD7BlhZ4JK62Rqi23+uNNc9vrpzRJ7QKfhTb6rRp7Pzw17nsHjxHIQMmG6mVSY5e7v Dx1DM9TZchKD0rOH3wjYT0ntPUQu1CP9f+Pr9IDOdGiPIf2PJgfrY/2OYRbRPJPpp4Zm HYVA== X-Gm-Message-State: AA+aEWaWN+3ZVd9zQQZh31WP0gn45F6j6Mx+siLkmgAFGwf0utXxBUrR LnH+EeWoHC52Be3uPb+vC5DCFlZc X-Received: by 2002:a05:6402:144c:: with SMTP id d12mr1853102edx.83.1542710132817; Tue, 20 Nov 2018 02:35:32 -0800 (PST) Received: from tiehlicka.suse.cz (prg-ext-pat.suse.com. [213.151.95.130]) by smtp.gmail.com with ESMTPSA id a15-v6sm5967233ejj.5.2018.11.20.02.35.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Nov 2018 02:35:32 -0800 (PST) From: Michal Hocko To: linux-api@vger.kernel.org Cc: Andrew Morton , Alexey Dobriyan , , LKML , Michal Hocko Subject: [RFC PATCH 3/3] mm, proc: report PR_SET_THP_DISABLE in proc Date: Tue, 20 Nov 2018 11:35:15 +0100 Message-Id: <20181120103515.25280-4-mhocko@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181120103515.25280-1-mhocko@kernel.org> References: <20181120103515.25280-1-mhocko@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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