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 1260DC2D0CD for ; Thu, 15 May 2025 13:35:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14AB26B000A; Thu, 15 May 2025 09:35:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0FA676B0082; Thu, 15 May 2025 09:35:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EDB4F6B0083; Thu, 15 May 2025 09:35:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CC49D6B000A for ; Thu, 15 May 2025 09:35:24 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 61166160142 for ; Thu, 15 May 2025 13:35:25 +0000 (UTC) X-FDA: 83445239010.15.7BB213F Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) by imf10.hostedemail.com (Postfix) with ESMTP id 81505C0017 for ; Thu, 15 May 2025 13:35:23 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GBBKbHT7; spf=pass (imf10.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.174 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=1747316123; 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:references:dkim-signature; bh=HVK7+XeCrE0vaAK5daWU0mfxJLR/TlZDvlGnpbE/bhg=; b=z7vy24Q78LGcug8qmwScjeZpgsSUCq9avDfqA5JD0jxbnJq9RJnwb1bySzONxyygOjalaK Vyx/Ft8LDg31ylFCFSQUn2fjnGy7Sc7IEjCJIfrRmrkcG7HV9O5drpQMwFK/Ys4WgmMIpx DizQ1J8U3ZuQbPV3j3PmHF2HjDbP1NE= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GBBKbHT7; spf=pass (imf10.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.174 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747316123; a=rsa-sha256; cv=none; b=IvQEUbI+7UjmzqmwcwfeD6dVt+j4rCXpybJSXCzMPz9DZVOupeylpbUzTjmceUZX9pJgTY uDr38v8iTYOATv95w0/YRhND90QI4jRZEPsifrGTZStkFSDGeAUB/xa/DkF8JqZLGtW0/m X8bMSfAVlBllEDdUnc+tCRetLr41f80= Received: by mail-qk1-f174.google.com with SMTP id af79cd13be357-7c5e2fe5f17so89400185a.3 for ; Thu, 15 May 2025 06:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747316122; x=1747920922; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=HVK7+XeCrE0vaAK5daWU0mfxJLR/TlZDvlGnpbE/bhg=; b=GBBKbHT7EJLEu8mzN+4mDqcLhYsbn7ug2oQ+lQAapTqtqEZeeIGqsHXqS2bwwSsgd/ IH14eWtGwFaMQHa1n+e9QilTJPnuMzu89R213K93Zvmkpam1Yu3natNu0ZkccxdhFlhT 7ezNv+pN5tfc1LBXMiPrfSl7LJ+dFBxyV0CkxK4jachYx7rbH6HoZxWUNR+zlOr8fj4R ryzHPWi12FNkq6BrQGfAolEwK6+ckTYZuX9Pd1FWIJaOgqmihxMVDChmDGfLCqSWw33G QymfhHpupbmM3vqTlbkgZQxuMi2JQ4HlVIdKAAqiG9aRTOi0xsqr4lYKlG9napnwh1WM fNrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747316122; x=1747920922; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HVK7+XeCrE0vaAK5daWU0mfxJLR/TlZDvlGnpbE/bhg=; b=slY8iMBRJqmEPDr7clBigigqrAREyFwpNaq+f72E6WcbuVOaYaU+lMDTU9m5HJls0h MieAKdvp5kWMSdFwkuwBCxWSiX/T3N26V31CRFrlccFLkJj9VJ0QckLimu5AANyvsddo ghpA/vWSFgrXh8BLWw7tif1sEmFUhYJcSCfBWtQpnnZxiSAXjmjP1P9u20+OvkRhng4Y l2M+2lE90RaW9XIj/e3l1bC+LESsz8zZJiKTP2sCrXVvrChNH+KYzMWKC1jVaSQBmnS4 ZOcqZUTpjyN0ybb4EIfRL4BsQSV8XDZh33U5RWLYpYL1RjPeMvl/WVj+ht4Vu8BNVB8I no2g== X-Forwarded-Encrypted: i=1; AJvYcCW8cp1GFSVCEjpzW5rCaRzQVzDnx6jhAGenBjboDi4oQO761d0QXY4dwQjGHPKafnr56MI8SGOSGA==@kvack.org X-Gm-Message-State: AOJu0Yz63196JF8aIFzs+D7/2TPFQaLdC+8T3nI+12iPwtPasEVXE25t Z9mnCVAe5YCji5XE1BKEqOKyTATcvtsJGlVqVkc/y7+/lrtQi++L X-Gm-Gg: ASbGnctnewYMYDBqHoh06Yg53eIGLRYqq/QESm/lmV/XUtR3poqXaPY/35pQtz0YHKj SvHvkckZXihMJ+zn981CGf3YFbAybVl94iTbWPXk8djtf8pVSEfXQFy6um7JrqgA3bD3sLKup0d Ggc2aRs1LmroIyU/SeBh6CBC2id3GU3mIRtAMnS5EJvEjEkyQxILzesiJXxezf1hTL9XXCxIlUG x4RmEwmxlZoGJIV99phQxchd1AasUFSFNu2CA3c+ibKVsjShuLchQelT9obgxlVB2JDHgw9L2pK xxi4FufxIJ4Xw3vt6EqU+/V9dmkiOoB/+K2vfEzL2BhAWdgm X-Google-Smtp-Source: AGHT+IE3uLRPVmAMx8aqjehSeTosSaDm95ed9rhjS7Cdm74U2OOvVDir0FUQPoeM6h3tWC5rx1PFLw== X-Received: by 2002:a05:620a:414f:b0:7cc:fd84:cf8a with SMTP id af79cd13be357-7cd287133a3mr951646585a.0.1747316122447; Thu, 15 May 2025 06:35:22 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:6::]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7cd00f64230sm985676585a.28.2025.05.15.06.35.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 May 2025 06:35:22 -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, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH 0/6] prctl: introduce PR_SET/GET_THP_POLICY Date: Thu, 15 May 2025 14:33:29 +0100 Message-ID: <20250515133519.2779639-1-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 81505C0017 X-Rspamd-Server: rspam09 X-Stat-Signature: es9ceodu64imwj8i8pi378khwiofgew4 X-HE-Tag: 1747316123-319130 X-HE-Meta: U2FsdGVkX1+L5LYocUdlc5RTFYKzKNYWw6D4f5LpjrMC7e8Ffr8BRoGmfr1uIp60fa/SijYrTpiRLepZbGrY0ENno2Ck2ghFZz5IJB8lRogCdcQRVTPpRH5Y7bFdF8rBxazTg+JIYm3Qw3AvU5HQJFGwGadISC6klZVdgLinzEw4nvNWLRJzJHUBEU5r7kbwtqeB915PnK71sQTU4ytJ/pekoZ1hEZ2FgK3luZUJ3akP2kSZ4s5QXR0KHcNFGEBvEusIXNDxMK80NBcDM9FZsGc5yqurgZyTATUmqDI5n3fOhyqoS4TOqXbeeT5RYcj1YAa8sN7LZ4bx1cDpTg35uNy0x0TiIBPuCWxZADQmi+nCuTxcJe5WrO080S73qJNsbC4/LqxG9kfU4HLKJkAZg7jyAPMWKaLyTR5JiuD0uOmcSC0Wkg51IbMgzwhZzH5R8hKYCGHHaWcqjuL9aAscCVgr5lIujzpkvUVWBGVsuPtddeOPQc7vq9ZTMzs7sZ27n9Ndysk48vEAt9cuLvyJPWVQF5vXsdmqkqID+CYKpawIyXSfEe7Mvwe+/ii5P+4ekqEwdBgOflmKk6jJN495m0gIoYKoYB0UNGqXmihs3bEWPPJ8X0hrj9KCxDt0TmoDXSBRw4LYX1zoJZVxOWCb9/XBt5nPBJTLFFJUtKjkz1VnRLoztxT/YCexcsrbqYbCKKAdTJgGu8swh0+f3g01l0U+KlqZDyDn1x/kjU5hLvaYsIK95HeGpuzeszVJF/yHVr81EDuSeR6y/dBnaWVta4puYRLpn4QNJfXslMrVIq19i+UQQoLXjL6k9x0iYijsbNnNU3z8K4TAXiYASK4OwwBbWXK+xMuHhXkL8CFDKF3sqvcT74p79buE8oXw31PCuJTMPUf7eGpbXKaUSsGLscXlinqqp1xNri01VpbolGs3B/QtX44PyESLHdHznfI7XHv2HEcfdLLptD9HNVk CrBa706d sWEzFMIfvRBaDRpFu1sheBZ476TdlEMdT5ujjDjMvICvmPSgLu8PIiB7QuZ63Dq1EGFXcbzesL3xnh2SYHmJE+3tXC/eez69eXH93gVoR8NM2DMtm45uJRgSC9ALr/B6YLgleLl+1jbdU8TLu6FDJksq2lJfvwIGEXUDGGxhBFs+zeFZ2mRpiK1NJjibzlvUB0ZebNnlo6TEZ/HjX1gyAQ/nGNMC6IZ0yHqhA2voqw/UiNWQzb60WwQKJtVRHQVcsSjsQ2dLQn9ZMrLj4Gdbr9nWGFfTtUh9lJ3uqg89w3wULGfe86Q9l3bmvzE9yejDVPFv328mciZr8I6kCb6UV34Hw9UDEME7YRuhhH61sgmGUZ2GFHB35m8RdJepcI2F8WkglX8LZQHHbJNRl2Zf8fPFmqiT1cZ3H6jvb1HIH6OUi70a1Mx985TsRpJrt7Baat1s6nF069AWG1rzrQRh3gy20uEbONE5Sb9pz3bdIeJrH9bh1eGcpywvHTy+a+AQ5CbDnj+JurR2on55xsRZ5GjDM7mU+yhnSVHEqxG3bF5z+NPnR8RNGOc4uJmHDUyIGYjAFVMgSena2/SLJ57gfP7ejww== 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 allows to change the THP policy of a process, according to the value set in arg2, all of which will be inherited during fork+exec: - PR_THP_POLICY_DEFAULT_HUGE: This will set the MMF2_THP_VMA_DEFAULT_HUGE process flag which changes the default of new VMAs to be VM_HUGEPAGE. The call also modifies all existing VMAs that are not VM_NOHUGEPAGE to be VM_HUGEPAGE. This allows systems where the global policy is set to "madvise" to effectively have THPs always for the process. In an environment where different types of workloads are stacked on the same machine whose global policy is set to "madvise", this will allow workloads that benefit from always having hugepages to do so, without regressing those that don't. - PR_THP_POLICY_DEFAULT_NOHUGE: This will set the MMF2_THP_VMA_DEFAULT_NOHUGE process flag which changes the default of new VMAs to be VM_NOHUGEPAGE. The call also modifies all existing VMAs that are not VM_HUGEPAGE to be VM_NOHUGEPAGE. This allows systems where the global policy is set to "always" to effectively have THPs on madvise only for the process. In an environment where different types of workloads are stacked on the same machine whose global policy is set to "always", 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. - PR_THP_POLICY_DEFAULT_SYSTEM: This will clear the MMF2_THP_VMA_DEFAULT_HUGE and MMF2_THP_VMA_DEFAULT_NOHUGE process flags. These patches are required in rolling out hugepages in hyperscaler configurations for workloads that benefit from them, where workloads are stacked anda single THP global policy is likely to be used across the entire fleet, and prctl will help override it. v1->v2: - change from modifying the THP decision making for the process, to modifying VMA flags only. This prevents further complicating the logic used to determine THP order (Thanks David!) - change from using a prctl per policy change to just using PR_SET_THP_POLICY and arg2 to set the policy. (Zi Yan) - Introduce PR_THP_POLICY_DEFAULT_NOHUGE and PR_THP_POLICY_DEFAULT_SYSTEM - Add selftests and documentation. Usama Arif (6): prctl: introduce PR_THP_POLICY_DEFAULT_HUGE for the process prctl: introduce PR_THP_POLICY_DEFAULT_NOHUGE for the process prctl: introduce PR_THP_POLICY_SYSTEM for the process selftests: prctl: introduce tests for PR_THP_POLICY_DEFAULT_NOHUGE selftests: prctl: introduce tests for PR_THP_POLICY_DEFAULT_HUGE docs: transhuge: document process level THP controls Documentation/admin-guide/mm/transhuge.rst | 40 +++ include/linux/huge_mm.h | 4 + include/linux/mm_types.h | 14 + include/uapi/linux/prctl.h | 6 + kernel/fork.c | 1 + kernel/sys.c | 35 +++ mm/huge_memory.c | 56 ++++ mm/vma.c | 2 + tools/include/uapi/linux/prctl.h | 6 + .../trace/beauty/include/uapi/linux/prctl.h | 6 + tools/testing/selftests/prctl/Makefile | 2 +- tools/testing/selftests/prctl/thp_policy.c | 286 ++++++++++++++++++ 12 files changed, 457 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/prctl/thp_policy.c -- 2.47.1