From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A72F6C54756 for ; Mon, 19 May 2025 22:33:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6530B6B0088; Mon, 19 May 2025 18:33:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 604056B0089; Mon, 19 May 2025 18:33:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5198B6B008A; Mon, 19 May 2025 18:33:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2F6296B0088 for ; Mon, 19 May 2025 18:33:51 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 6C310C1404 for ; Mon, 19 May 2025 22:33:50 +0000 (UTC) X-FDA: 83461111020.13.37E7EBD Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) by imf20.hostedemail.com (Postfix) with ESMTP id 89E1E1C0003 for ; Mon, 19 May 2025 22:33:48 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fSrTWEgK; spf=pass (imf20.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.219.43 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747694028; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wdThakyVpRWt/pdL0RGS+6LQ/2FW4dqWsg/JIFZjGck=; b=ZsrfiAIQB2kTMIlSXscGD1sGS4UQ1Gd6lS6hWmDwzwbHHGZpOgFAfE/Bs5HZ8RuCTHUkwM vbBSytgju4DMhceUwj8pTJrG9GWAbY8DIm3V7BJfkmKl/km9ObMUYS9/FskKm6s1OrrcYZ nf6aGGK5ukjGWR+8l/z/BJhFVKErKMI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747694028; a=rsa-sha256; cv=none; b=QqSKa1WK4mE16bqE92sXhe1w8diMb47bYqV0YZ8tdk5DcDpVujpPPArqcMBp7sfsYlk0Dm Fbk7UABgTYG/6gQMT312WM70I1fnHndrpBTcCXAd/FPrxk3Dw9h2O7VpBDKiehe4TOlqsN 9rmSRhdPUq39euR/dPFhI4ADiaBLvlc= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fSrTWEgK; spf=pass (imf20.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.219.43 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-6f8d96499e7so27432646d6.3 for ; Mon, 19 May 2025 15:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747694027; x=1748298827; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wdThakyVpRWt/pdL0RGS+6LQ/2FW4dqWsg/JIFZjGck=; b=fSrTWEgK98vttlv0r2zbW2CHjUvlcsu5JHw33HRCe0wm2C1hWugE12ZZYXU9PxkNnY XZ9kwWCf3PEb0K0zKKt6qe9TOkh5nHbZ3qBywoB9Yj1fRFxtm2akMaStbnWUDn5i1Cp4 owm23fajelOSfOW0MFkTG/OdLakmVH0Ular/OtdJvp0rME4BqCAYpEzYyGdi32mzO02d WIIwPTxVA2kDvHbTyXjW+b6wuR980dN695g1cWsjPY2DO09+ICSojdVdZu3cIC1O+LME F/l6ObKWTb0xpkL3lTkcFUQeUYmRJkMoXt1/MeOIQYMKo3avIESsqYVE5SxRfL9aI34c d5eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747694027; x=1748298827; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wdThakyVpRWt/pdL0RGS+6LQ/2FW4dqWsg/JIFZjGck=; b=nfPpNXUeqiWHUBVc6hvjuH3cYsTeRo79iWLvRZDzfBiSPR6rlaCtEj39y10YCwh1Qq SE/flIXCAQPClaefvdAyXOkCUCkEIwJ/XBfrtLOTzzr68lpq2L58nqyxz3ns/hrD8CiA o/Yzm09eB9vtomuoNRrAvg3borxk8NeW0gCAPvXa0Xoqi4rbHsJfnzKNyKRbPzslhqtb +JHP9r00cNxQs9lXGPBM/Y6WH5jbLCmTyQ+bppoqqlImaLNkOqObHMcFbhrGIoWOYGu4 HXisuRNzTxcaJm4gzsH2CNQRk2tcjy892X2O42NcJWJju+kUK/qoNIALo30sBvMEs5cE oumw== X-Forwarded-Encrypted: i=1; AJvYcCUbVjn7bqxaBAFrTl7LH89G4wfbQZnzlhJBtis0EPUAbMKoyTC/iWJbgc60KaMWkExEJK1Bm9OSlg==@kvack.org X-Gm-Message-State: AOJu0Yxe41PjXomIqxiX6sJZLFEKZjnC1Fx2e6r9u8PBQgeLR/7IRb0+ HYPDSeXXeePR/xxdtftcMY2JTtLHKd9hvd4WGKLUUv4p1sW48nu+ifEY X-Gm-Gg: ASbGncuSDZkWNYl1jEzQDraqpQBrQXBX6ljzKHjV9SC5TL5pFgFDLfhwhRfTA4MS/cJ aFH4tP4577Kj1e6usnHd4Q0UWLFk+cnl7/DcJOCAvBj1ypm4jDuursxyQzZ2UYGZm0aRSWog1lt jeqsjLB0flUCkMXZNx3WzgRwnQJSklO/afB45cJlrLcRRur1Yvz9jCBrEup77SEW9senDgYypAp kiecPjhmnlglXU9f4KjkKFfbzixr08XZnv9yyIr84jplb/3a7pFLoDKS/niMeHRWNkG1fsBdE53 qIf+AVIcMafMLMW5PBxoUUf+ePYD+td9R/gQbfoa3KYfd2Jblg== X-Google-Smtp-Source: AGHT+IElzVJ+5veykGxkKp/1enaTKr5fwrckzXOASwoCkx8oZ5lGcePSRnYc7Ci5ixpQKVjII7tOfQ== X-Received: by 2002:a05:6214:5096:b0:6f4:f123:a97a with SMTP id 6a1803df08f44-6f8b2c65bd5mr238975326d6.15.1747694027561; Mon, 19 May 2025 15:33:47 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:41::]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6f8b0965b90sm62201576d6.91.2025.05.19.15.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 15:33:47 -0700 (PDT) From: Usama Arif To: Andrew Morton , david@redhat.com, linux-mm@kvack.org Cc: hannes@cmpxchg.org, shakeel.butt@linux.dev, riel@surriel.com, ziy@nvidia.com, laoar.shao@gmail.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, vbabka@suse.cz, jannh@google.com, Arnd Bergmann , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH v3 3/7] prctl: introduce PR_DEFAULT_MADV_NOHUGEPAGE for the process Date: Mon, 19 May 2025 23:29:55 +0100 Message-ID: <20250519223307.3601786-4-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250519223307.3601786-1-usamaarif642@gmail.com> References: <20250519223307.3601786-1-usamaarif642@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 89E1E1C0003 X-Stat-Signature: c1sdzuysr75cj9qgxo47sobc6hk1aogg X-Rspam-User: X-HE-Tag: 1747694028-474281 X-HE-Meta: U2FsdGVkX1803jKxfFtOuncw2FCi9RYathU4yzRXKCFP2GCldZmacmX0fAwtuBQIW43yJezYxDLeK5BplWlBSa9T+FBB1JXpvaPDvZqSAS/p0J9vQfu0Y0mch9LdUHJbpMvVKbAuDJEXbmDwon9gsB0fbcQfAAMbZ8Z3yK/sWGo5DAdmmuS+APvWvDZO67s4hagS49ifA/8KV6DZ2b8ZVdEWW9dSa7xSQaeGdj8dSH9DAHtp8bdnNYAZyOizUtk/GgjctadaHA2hJYti4ob3Ek40nhv0/3ZmqbjBwadZTEnHqkBaxlD66spr0aaIbBGQ380skmPdB5G6aOaQxP/SpsxNmy5OafOXS0XL48+u3Se7fPaMQx7/yJfcsm/ltskGdkzfWb3fNnak3Bu0vreYkvfG0c/exVtXfSO763CMiDAfIT0GWKWbUGsN49goqXH8vvXzHXPeUXCFqQb/2NxvS2etxG/Z5bwDgXiltk6IsxjwD79zC95MI7iLCyrRi2AEr7GpN+d4ssIxcjTEL3nJmeDpJLVNd0h0gYljwRD5sx9GdCfJfea/gE3tVB7WuARpWhkssHac5E7PCgZER8tTT2qN1owxORznA0PnJ8d2/LXt6O/hBmtWlpsdOUibdqQiP35tb7qwMTdBjT8OuCxyBroWW7CIPWIh7VaZJdloepVUtxwbyh9Gm095fKrGJhJHv2u4+dcadB/VcxVzpHTlchYqhrG2WyOpE+PsXHyKCxz4TFhTn28i8JvNUv+TiFT/PhizENosKPwEX8nH1NrXnon1pjo8SQILWobd9+03Ds2jlendGBLFyDWwXk1mutJ0RJxPYdIdBeQljAahrdju8nuWchA02Vp8kWZDbJc3oUSkZAHNdA1FXS0UAe/QiLV4BfyC+9dt8nW6cImIaNX1lYuWM1SEAeFhxOibqAEzxMQ+T88i1EZd0kx5jeGn0AbY/FKM8nIYYD/uUOCzL5R Mi5u0oto W0+34s6XYE4hmA78jAtknjRMrnp1VB16ql0S9K78vLL2tuJPVk00FzPBc/jffNOhUcDwAUPQA2bKjI2nw70/uzwC2jpJaxhZn1i8NNztRO9/cgXbYG8ltnIOdIOD4iUlJ0KG+7Y1piHgt6Ci16dAYwuCodmjh9/zoQR3J4i/jf9CKCQWnPFdx3rUaoMTST8rbjpLLLQFS6i+VEqu7aj9EV+q/bAFNbaOkwK98eqgtgKemJ7XDm4RkefsoirUSrb1MORi1x8XEqxURpYtthM3EMskisMDGntIs4gUIWrxBGMQS4ENEEq+BB/fQ/0H3QISuOa797CqLqWkA5jhN9fJEvDFv/ZjMuw5c7QBadCLPaeUhr41nvstPYKf7TRvkrFtph8UTyMw2AWWEMe1T0EPgr44rRctCdcHUaYT99k3QnfCPvF5THfzLp7MBiSgDyA4pa2lGapvYu3FxqetEO1Vt7Taz5ymooPHe2sDTkPE4dh5unZ0lWTG+xQRSPgLAGliRn8KCOu8BPiOMLmiplWjljs5mItQ+0GshrlS3gkJtd3bDaX3RHDfbn769ZcM86BSK98yw X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This is set via the new PR_SET_THP_POLICY prctl. It has 2 affects: - It sets VM_NOHUGEPAGE and clears VM_HUGEPAGE on the default VMA flags (def_flags). This means that every new VMA will not be considered for hugepage by default. - Iterate through every VMA in the process and call hugepage_madvise on it, with MADV_NOHUGEPAGE policy. The policy is inherited during fork+exec. This effectively allows setting MADV_NOHUGEPAGE on the entire process. In anenvironment where different types of workloads are stacked on the same machine,this will allow workloads that benefit from having hugepages on an madvise basis only to do so, without regressing those that benefit from having hugepages always. Signed-off-by: Usama Arif --- include/uapi/linux/prctl.h | 1 + kernel/sys.c | 7 +++++++ tools/include/uapi/linux/prctl.h | 1 + tools/perf/trace/beauty/include/uapi/linux/prctl.h | 1 + 4 files changed, 10 insertions(+) diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index 15aaa4db5ff8..33a6ef6a5a72 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h @@ -367,5 +367,6 @@ struct prctl_mm_map { #define PR_SET_THP_POLICY 78 #define PR_GET_THP_POLICY 79 #define PR_DEFAULT_MADV_HUGEPAGE 0 +#define PR_DEFAULT_MADV_NOHUGEPAGE 1 #endif /* _LINUX_PRCTL_H */ diff --git a/kernel/sys.c b/kernel/sys.c index 74397ace62f3..6bb28b3666f7 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -2666,6 +2666,8 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, return -EINTR; if (mm->def_flags & VM_HUGEPAGE) error = PR_DEFAULT_MADV_HUGEPAGE; + else if (mm->def_flags & VM_NOHUGEPAGE) + error = PR_DEFAULT_MADV_NOHUGEPAGE; mmap_write_unlock(mm); break; case PR_SET_THP_POLICY: @@ -2681,6 +2683,11 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, if (!error) process_default_madv_hugepage(mm, MADV_HUGEPAGE); break; + case PR_DEFAULT_MADV_NOHUGEPAGE: + error = hugepage_set_vmflags(&mm->def_flags, MADV_NOHUGEPAGE); + if (!error) + process_default_madv_hugepage(mm, MADV_NOHUGEPAGE); + break; default: error = -EINVAL; break; diff --git a/tools/include/uapi/linux/prctl.h b/tools/include/uapi/linux/prctl.h index f5945ebfe3f2..e03d0ed890c5 100644 --- a/tools/include/uapi/linux/prctl.h +++ b/tools/include/uapi/linux/prctl.h @@ -331,5 +331,6 @@ struct prctl_mm_map { #define PR_SET_THP_POLICY 78 #define PR_GET_THP_POLICY 79 #define PR_THP_POLICY_DEFAULT_HUGE 0 +#define PR_THP_POLICY_DEFAULT_NOHUGE 1 #endif /* _LINUX_PRCTL_H */ diff --git a/tools/perf/trace/beauty/include/uapi/linux/prctl.h b/tools/perf/trace/beauty/include/uapi/linux/prctl.h index 325c72f40a93..d25458f4db9e 100644 --- a/tools/perf/trace/beauty/include/uapi/linux/prctl.h +++ b/tools/perf/trace/beauty/include/uapi/linux/prctl.h @@ -367,5 +367,6 @@ struct prctl_mm_map { #define PR_SET_THP_POLICY 78 #define PR_GET_THP_POLICY 79 #define PR_THP_POLICY_DEFAULT_HUGE 0 +#define PR_THP_POLICY_DEFAULT_NOHUGE 1 #endif /* _LINUX_PRCTL_H */ -- 2.47.1