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 950BAC3ABDD for ; Tue, 20 May 2025 07:44:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E5C76B008A; Tue, 20 May 2025 03:44:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2BE446B008C; Tue, 20 May 2025 03:44:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1D3E46B0092; Tue, 20 May 2025 03:44:03 -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 ED8D86B008A for ; Tue, 20 May 2025 03:44:02 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7044FE3B0C for ; Tue, 20 May 2025 07:44:02 +0000 (UTC) X-FDA: 83462497524.21.292234F Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by imf14.hostedemail.com (Postfix) with ESMTP id A228F100009 for ; Tue, 20 May 2025 07:44:00 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KCjfc0Ct; spf=pass (imf14.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KCjfc0Ct; spf=pass (imf14.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=laoar.shao@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=1747727040; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9uo8wrvNhdGkpDaupALM2V4X4G0GERtYOC9S6Rbd7JE=; b=q/R0X7YPCpvkhbOsVkCfCPwxpfLNpyaC3WtHJsTh01wo1TRa0AP+HtffgU8PojLHo1W68D yxD32ErOxF58AANnUF9TorU8yStYznQZzbVgH7+lBtV3mn8S0lTyIS6W1OcKlJotEm2/8V goqnMlmoYXa75ctYCfcoXvul03u1ryo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747727040; a=rsa-sha256; cv=none; b=FCWqgHkG5T68tarlW2zRZYV6Qw2HrVpNw7C2OIdCBxNRqLs00YOiqCjs/fIIPOGhw0L+wA sIvugPVbLiFd9DLQNw4WvBK8TxTL8xZUSlqmDkcuar78RfawticUO30ZSqdksWay75QbFj 5OuuGNMo5aE68e7mcpqYmlTWe5caywo= Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-af548cb1f83so4787136a12.3 for ; Tue, 20 May 2025 00:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747727039; x=1748331839; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=9uo8wrvNhdGkpDaupALM2V4X4G0GERtYOC9S6Rbd7JE=; b=KCjfc0CtWW9QFp6j/RFwNq/svEwAn430JXhxgqLhLKvpBHIMvHCwoV2RBgr9ak/PCl KASdyJoP5B03LZfwQmNAlBj1Sfb4ReFiSRmCA9LqSMEbtuloyVOVXijyMDkYQmn+K6up QSO8MRu6lWsVpaSfWFpxLIFQVwfyEsrZaNDIwgcCrMWiamZGLYjMBKXeb31kTYraqlKe bHzSW9r2q3ISheuaNxZvQA7EcPdhDB4Iai2RSw2pY+Xi3wmInnEsi3E+VU06RfMK5i1m iTriJz+I52xqNVOyAV9uQFcAMO11KujS/ol4PXcGJPwYgOH5HVfzMfTPXnLec/6vs5xc JXpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747727039; x=1748331839; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9uo8wrvNhdGkpDaupALM2V4X4G0GERtYOC9S6Rbd7JE=; b=CRkXVN2KlDyX0L/h7kEBu5DAO2sqEsuo/pAOhpLkKaybDIxObfcD7GajuQ12T1Ls91 gTfWXmKXOiCpIhTwnqkXV/AnXPG2+DvMvZX9KhLpOp5Lx0MqAS1m4HDSZ+9JsQSphtmh 1uHaUwEPhnMhfsfspjA7OSbpV2/pVOAIoAXRpVnqQCqdewHu3yeyAxPFUQH+Chj/VER5 R/RbvoIzIwczh8Nt6QcFvVISx/ari9zyBunx5/yAg6YZgYy38TY3FGvcyrDCHD5PJ0xj gyZyvsAv0Tk27DdY6/RKzvrDBWJUSBLz8uFiPzBpLouK8ZTflyjVUUoMHYQzBrLrK/pp 5gNg== X-Gm-Message-State: AOJu0Yzi1cckjg7hj0TEhriMp6Fn1rSnCeC0Kf+r5lU8OB+Ruf2qDiOX NWtcGPL5f+0c0S7NBXrtjg21zp5QA0WwLmPFzhlZVHTiaYnFp24ZX9DxOP4lOVKxe6FUNk9cgBE UXmYwGyRpQTNl2AhgMBVhwxo7r6vXHh+79Nu+2Cc= X-Gm-Gg: ASbGncv11dE3ZvSWTkM+KBtmB27NfIKj7QdsT4MEihbQJy1PqRCULMwdlblwPAniGFA nfF9GxQx3E9dcgR4+q95Oe9Ynk2ucCXslP05LkP0JoUFtplMXlu3GuEc7IPyC/q96unmw+evUvg CzDpSYdZHExtdRNR7dRVFs11gsEq8r5urBRg== X-Google-Smtp-Source: AGHT+IH2XeVratNvJ8FEJrrphJj/JDteq0tJv39Wdwj//5c4Z8WnAee6xYifV9WTkK9RBrjweCf0CdsRboWOvSrgV9Y= X-Received: by 2002:ad4:5caa:0:b0:6f8:9a8c:9d83 with SMTP id 6a1803df08f44-6f8b2d0d149mr244508426d6.35.1747727028940; Tue, 20 May 2025 00:43:48 -0700 (PDT) MIME-Version: 1.0 References: <20250515033857.132535-1-npache@redhat.com> <20250515033857.132535-2-npache@redhat.com> In-Reply-To: <20250515033857.132535-2-npache@redhat.com> From: Yafang Shao Date: Tue, 20 May 2025 15:43:12 +0800 X-Gm-Features: AX0GCFvt6zLLvpZVET4ZwVYJYj9_BSwEJPuE1M1fe9g1tsw5I4FK7vP9A1HV5ug Message-ID: Subject: Re: [PATCH v6 1/4] mm: defer THP insertion to khugepaged To: Nico Pache Cc: linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, rientjes@google.com, hannes@cmpxchg.org, lorenzo.stoakes@oracle.com, rdunlap@infradead.org, mhocko@suse.com, Liam.Howlett@oracle.com, 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, dev.jain@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, wangkefeng.wang@huawei.com, ziy@nvidia.com, shuah@kernel.org, peterx@redhat.com, willy@infradead.org, ryan.roberts@arm.com, baolin.wang@linux.alibaba.com, baohua@kernel.org, david@redhat.com, mathieu.desnoyers@efficios.com, mhiramat@kernel.org, rostedt@goodmis.org, corbet@lwn.net, akpm@linux-foundation.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: A228F100009 X-Stat-Signature: wayr4egh8s3pbuyn8rs7hibeubgkw53i X-Rspam-User: X-HE-Tag: 1747727040-623630 X-HE-Meta: U2FsdGVkX18Xl2yw24wkS3S4Ebll1XoeVMlpqKR41dDdpicvypMX6XEIdJmWjdSRRianyYq7pgiWgi6A5E2mhAwom2wechyubpHkagNTaT1m3AeaqUP6e54mrgnfBbmrZfHtdWpAhCePdBg7yVYesOxuMrvFt1fqHbFXQjW3Y1zVXZ3gogrTs6sYSwEvMDKrs1luMoaK9x0XlG03/ur1alByYYyMB9ZTWfre9pGN+tLpwzXBhEXpR1xWug34MmiPbNTgDa9pVUokqJ+P6JN9MYS/HGPd7Baa/8f0OHPymFGJiYxr93laR9eNNkluSVG97ne/GjgTU4wOLzYBc/oOFF4QdA70xdmfLJ7YqRkTGaHandBZD7jQEJMo5CEcm5uiBg7EIM252qqyDc+2ZhkHecW8qF5rMFkU31ex1BefChMTuwQMFypDC1UtA4rh2MKGYkQMHh6QJfjLZWid9mWSwd3K1oBU0OnKcKWrNsB5/fD4e03+3vJTLQBPziaCa2aEjHgYTTk3pW6jcT2XBTmhgKBaCx3Qcq1DQ91NSG9CxzS1QJoG4OVsC43VzNCMTSKIbOJdAUyoGGaGScbgZnlavmC8qEspn7uT7d34+VBXxM1/ky6xrdxaHKJEa/+raBZDU1IlWzDtcbyEvhcDxB03F/vXhXoDNCo+szRDB0xtm73RfpYFbQKfaJPfG3Stolog17TtcL6NnkuE5TQmd+21LhKDiWBgreohNtDcOx4ugTKps7yNTL2O/B3K6o8InmJNFbFdOAjiHWtGTLBqBhxXW7DB5bIyMu0glCwN8kZ8kEXvhFwNAPi2ZA9g92Cus84cwz9dhjI62nZ6RnNfgaF63ftSFcePKHHAhWMz+BnoZu43ozavMgGjQQL2hI8zvFOpcLqI+urik5sVVSQLWfNXhIYDFhxtvUy6nltcvI4UVSpVIl/Kn2mq6uEaQBmdSiPWX9Sza6wrJPbFzMMgK8v bVfa5y66 ypA400YVndlD4i2NXcUYpMeAXqsAnbmtu9NLM23YOTuWVEwzvFMlJRQcfq8dhj+S9L4DFVwQlDrP8bbWpy/5NfpJIa7BG6GM/QeZn84Y+B6uA/D3mZy3cH66zkRmblLi66mSBjc8aQSooxmwBS5RIoZgDsXLEPR1hjQ7sY4ydH4NK0fhqjryP0jhlKZCVJmsK+lrcSr4496JsQYygLU10KeVQjlYdtZHnjuwOWO3m9oY+IOK997/xxh/kv/LEIfNSJAk8u+T5NetGcL1YlvKCko4cfe738Okbk8MN5+J7TXT5UfdliBprTps+WttN5uBb75JGhMEy5Sj56pkZPjz92UR0nw+ewvmUn5oIcyGQpoFnz65L1L1kmSP9aguhdFdAzinV0U1LfTJkXXQmOq1R6IQxNzu/MdsZxqie+m9hBjFg0ri+mlW0iU9XATVrQZ1fI2yGz7JCXTGKeGvIj5XruGiw/g== 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: On Thu, May 15, 2025 at 12:39=E2=80=AFPM Nico Pache wro= te: > > setting /transparent_hugepages/enabled=3Dalways allows applications > to benefit from THPs without having to madvise. However, the page fault > handler takes very few considerations to decide weather or not to actuall= y > use a THP. This can lead to a lot of wasted memory. khugepaged only > operates on memory that was either allocated with enabled=3Dalways or > MADV_HUGEPAGE. > > Introduce the ability to set enabled=3Ddefer, which will prevent THPs fro= m > 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. > > Acked-by: Zi Yan > 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 e3d15c737008..02038e3db829 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_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< + (1< (1< } > > @@ -195,6 +197,12 @@ static inline bool hugepage_global_always(void) > (1< } > > +static inline bool hugepage_global_defer(void) > +{ > + return transparent_hugepage_flags & > + (1< +} > + > static inline int highest_order(unsigned long orders) > { > return fls_long(orders) - 1; > @@ -291,13 +299,16 @@ unsigned long thp_vma_allowable_orders(struct vm_ar= ea_struct *vma, > unsigned long tva_flags, > unsigned long orders) > { > + if ((tva_flags & TVA_IN_PF) && hugepage_global_defer() && > + !(vm_flags & VM_HUGEPAGE)) > + return 0; > + > /* Optimization to check if required orders are enabled early. */ > if ((tva_flags & TVA_ENFORCE_SYSFS) && vma_is_anonymous(vma)) { > unsigned long mask =3D READ_ONCE(huge_anon_orders_always)= ; > - > if (vm_flags & VM_HUGEPAGE) > mask |=3D READ_ONCE(huge_anon_orders_madvise); > - if (hugepage_global_always() || > + if (hugepage_global_always() || hugepage_global_defer() |= | > ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled(= ))) > mask |=3D READ_ONCE(huge_anon_orders_inherit); > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 700988a0d5cf..ce0ee74753af 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -297,12 +297,15 @@ static ssize_t enabled_show(struct kobject *kobj, > const char *output; > > if (test_bit(TRANSPARENT_HUGEPAGE_FLAG, &transparent_hugepage_fla= gs)) > - output =3D "[always] madvise never"; > + output =3D "[always] madvise defer never"; a small nit: alphabetical ordering might improve readability here. --=20 Regards Yafang