From patchwork Mon Apr 14 22:24:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Pache X-Patchwork-Id: 14051094 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 50DA2C369B2 for ; Mon, 14 Apr 2025 22:25:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CA3B2800AC; Mon, 14 Apr 2025 18:25:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5AB7B2800A7; Mon, 14 Apr 2025 18:25:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3CC9C2800AC; Mon, 14 Apr 2025 18:25:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1A2502800A7 for ; Mon, 14 Apr 2025 18:25:57 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4B767B9F36 for ; Mon, 14 Apr 2025 22:25:58 +0000 (UTC) X-FDA: 83334083196.01.EF6D6FA Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf28.hostedemail.com (Postfix) with ESMTP id 8CC4DC0002 for ; Mon, 14 Apr 2025 22:25:56 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="dxU6xZ/4"; spf=pass (imf28.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744669556; 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=FwpqttvBCnxGqGYUL3sPRwZ5zL6bMm0W6vYtJG5uftA=; b=XqBQrnKAxVAcxgWSAqtazFPrCRSDkRUlBysJi7sEDIrKRQJhyEFdCqShjymctZJyC0NggB jgHSzDhtWGN31anajDyuBuK15rAXHplKqsD4guw82uG1o6m6Orh/axEI8/3raCuOpHE3OZ hCfdnUHh2+ADzqIlz5ga5/5QOjHTINQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744669556; a=rsa-sha256; cv=none; b=aXoYHjRQ91+GeBamsslVc91VE3G/MqaiBjCNivaSrcBJj6FYFYIKQ5RidtyNOGvTlzzAYL aAr7HsycVuQCVMgjm3V3oe2H2J5UqIa/vA5DZEMAset2Hy9/8KgnWS+/Adpzz2wcHsym65 1oN6/lKrYxco6aJS3JRdJgloXqgohCw= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="dxU6xZ/4"; spf=pass (imf28.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1744669555; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FwpqttvBCnxGqGYUL3sPRwZ5zL6bMm0W6vYtJG5uftA=; b=dxU6xZ/4qztslGsKfTuzKdyelxH0T6L2vzURU4n/LIm0OhspR8DxlROEw67+blEIHFh3Xp gX8p/rAJkSlT5bOarqXNDG0eCgJc2oKAYzN6TOGKkSO7gbEuiZGePImRk8GxgGOxdj1fi5 Hua0kiOyLRf1N+2k/PHYa7NrAQ0CMMI= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-154-__A_VGTmMayXFMB3zUZXyg-1; Mon, 14 Apr 2025 18:25:51 -0400 X-MC-Unique: __A_VGTmMayXFMB3zUZXyg-1 X-Mimecast-MFC-AGG-ID: __A_VGTmMayXFMB3zUZXyg_1744669540 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CB0AA1809CA6; Mon, 14 Apr 2025 22:25:39 +0000 (UTC) Received: from h1.redhat.com (unknown [10.22.64.91]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BD70C180B488; Mon, 14 Apr 2025 22:25:24 +0000 (UTC) From: Nico Pache To: linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, shuah@kernel.org, david@redhat.com, baohua@kernel.org, baolin.wang@linux.alibaba.com, ryan.roberts@arm.com, willy@infradead.org, peterx@redhat.com, ioworker0@gmail.com, ziy@nvidia.com, wangkefeng.wang@huawei.com, dev.jain@arm.com, mhocko@suse.com, rientjes@google.com, hannes@cmpxchg.org, zokeefe@google.com, surenb@google.com, jglisse@google.com, cl@gentwo.org, jack@suse.cz, dave.hansen@linux.intel.com, will@kernel.org, tiwai@suse.de, catalin.marinas@arm.com, anshuman.khandual@arm.com, raquini@redhat.com, aarcange@redhat.com, kirill.shutemov@linux.intel.com, yang@os.amperecomputing.com, thomas.hellstrom@linux.intel.com, vishal.moola@gmail.com, sunnanyong@huawei.com, usamaarif642@gmail.com, mathieu.desnoyers@efficios.com, mhiramat@kernel.org, rostedt@goodmis.org Subject: [PATCH v3 1/4] mm: defer THP insertion to khugepaged Date: Mon, 14 Apr 2025 16:24:53 -0600 Message-ID: <20250414222456.43212-2-npache@redhat.com> In-Reply-To: <20250414222456.43212-1-npache@redhat.com> References: <20250414222456.43212-1-npache@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8CC4DC0002 X-Stat-Signature: oxhwqpujxsbr9nxrkpyrz8psfmmip9wj X-HE-Tag: 1744669556-174875 X-HE-Meta: U2FsdGVkX19RNKSuC0m39QEmthlggJp6DjcpYabf4JXx3jTYess8RIqZDWQRw4OzM58DO2pOogXtgpVzoOXIUPeaAagzNuwf/+A4Z9gl7QavDoBRrpfa0pYQ09Rm3F6v21DPgaPQ4jdu/Mf1dmY6zXDAJa5zGQGO/A4PPBjg0ixOhvVui2gaWPe/1OFAiaEzkFmswPJKO9b+wlBtXxSHN7EcQ7gO7fiKguG+Z62jMAmcGnH+NVzahvP0F8IC7tNkHl0KY1r2IjjH/BsUAWYrshzBFWHvK+YDqYOZAebOSA99Z6qxwoyTJztQ+RwoUmhjZUEhKbY6rog7pTrdQmuP2GVY5SPlvOWa3/uD67mmB82v3aHeyiIetcWxkSH5JfJ/brWn0KXgtd4cd0TLQjYEpdn3RGFidKF3MGJ8/YKz/OpB9DlVuv6cwdqpSmx0q5lSL3E+NW1GDwa45mKEMISDBasEHj82w3uwY0NPkupE/VALajPNqgcs3pQBlMAmRP0LP52N+CRy1EVOl8uXXjHdeoFI2n8ffFYuQk3NEnGHJrqhbfL1Tp6GmmN3rDdBpPrlQH/P1HFKLmOMkhcacDJPDlWFyKYDOPMqWD/kLMqAIAAiz3NlVDRcE48ZUSLC9SCxJv0joWdRakmqTdcQc0LD3hE0SpVLgjr5abBxVisK7htqjPf9WrFUjbqonkiF/WQolsRQQMhSZu7SSEXPHpDJwrXsY1v0JM9kpxVVJs8y+GUDcr1jyL2qlqf8/iI6IVx+ZXnYKZlZMtb6wjZKJwFKk48wYEzK8rL19ZwKwRZydXFl7cGIoXzVwNw6CIJ6GpZ55wt/QkXFu6Exy+sIgn85TpeLGSsRibHDAvlURrSWeT4N2K0P5+xwqUZvYbXH9+dcgkopVv4N7dRo2i7vNenG3pJhWfuvmRXSQkX3bJ9KII1toLL+1qSpZknIv43ATqdEDI6VE/ItoYXJTpEND+G TkOCSSdu 6VUvlnG6Gl/S6KdFkl50FM826RBnCQPfcRrj9o5SknNjJrPpUQt+/LGpB9spH2SerzxA56I592bdZ6Fq3ojEY86CcEGzOgqSA1jhkhwLZ9DSgMHxNOf3UXJgTSCnB7BwMmNyLB1uKJ+Sv75mdaM/56z+TbYntrNDvkR38UtNH2MrJYO1qSU5eRItDJgtuqgyyw+2eM1KlrCGhXZWQFognJGkQ2XUvtqvXoG3C7vqKVMLng7my/dqZvGfBwfrH3ArDdH4Ici+1332xMfWk+gGYbbOEbHHWVAQFuNA70rltWvirF9Xds3Ud/93vDF9G5IFAHjF0rlGhM+VDs9hzXrixMcGuZ7Gz4UaR2bgy89ntmcGEXDY9+/8DrMtjYBmV/1GkIuwvofRAMV2g2FwD90GIbnaMNQ== 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: setting /transparent_hugepages/enabled=always allows applications to benefit from THPs without having to madvise. However, the pf handler takes very few considerations to decide weather or not to actually use a THP. This can lead to a lot of wasted memory. khugepaged only operates on memory that was either allocated with enabled=always or MADV_HUGEPAGE. Introduce the ability to set enabled=defer, which will prevent THPs from being allocated by the page fault handler unless madvise is set, leaving it up to khugepaged to decide which allocations will collapse to a THP. This should allow applications to benefits from THPs, while curbing some of the memory waste. Co-developed-by: Rafael Aquini Signed-off-by: Rafael Aquini Signed-off-by: Nico Pache --- include/linux/huge_mm.h | 15 +++++++++++++-- mm/huge_memory.c | 31 +++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 95be9d266eff..b154bd11bd93 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -48,6 +48,7 @@ enum transparent_hugepage_flag { TRANSPARENT_HUGEPAGE_UNSUPPORTED, TRANSPARENT_HUGEPAGE_FLAG, TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, + TRANSPARENT_HUGEPAGE_DEFER_PF_INST_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, @@ -186,6 +187,7 @@ static inline bool hugepage_global_enabled(void) { return transparent_hugepage_flags & ((1<