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 B7198E67485 for ; Thu, 31 Oct 2024 21:13:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 18EC06B0083; Thu, 31 Oct 2024 17:13:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 13E3D6B0088; Thu, 31 Oct 2024 17:13:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 005A86B0089; Thu, 31 Oct 2024 17:13:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D80C26B0083 for ; Thu, 31 Oct 2024 17:13:04 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8F4D8809C5 for ; Thu, 31 Oct 2024 21:13:04 +0000 (UTC) X-FDA: 82735146648.23.519ADE6 Received: from mail-ua1-f53.google.com (mail-ua1-f53.google.com [209.85.222.53]) by imf18.hostedemail.com (Postfix) with ESMTP id B3D521C0002 for ; Thu, 31 Oct 2024 21:12:50 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ShYUHSSa; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf18.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.53 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730409020; a=rsa-sha256; cv=none; b=CPA0FVbKg/bxsg/SY6uO5Ha1uEsMF9zsIxV0eTWIAeeKmm4bCAtIHd0dmF6cRzvxlpS281 cZNu6rTaHfZKUBIdlUlSKcbBu25ZQMyNGj6Ku7gQfxUcqqsTQZsnCYa701Zb6TDgXefiyK s14GTsrBGmcHlNsLmpHTxb1SdAm7oiI= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ShYUHSSa; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf18.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.53 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730409020; 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=N6oUOGw1MCk75rICOdPoO2zRRK9TEXCzt+8DXEz3OxE=; b=aZ5vJvXX0kunC7Dg27LJV2V10T41j6EKLF9SRz8eugiJuV7DQCFUtdEn9lJIEAKVJfB4fE odEkUikA7R7Z+w2SNT5984sk+M/emo9bBr0hi600N9oLZkN5FFd4MrxGqSZeLHpo7rAEY4 jWlmnvmQN1SjT7MQ3P3fIXN+7pdW8qk= Received: by mail-ua1-f53.google.com with SMTP id a1e0cc1a2514c-84fc7b58d4dso332441241.0 for ; Thu, 31 Oct 2024 14:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730409182; x=1731013982; 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=N6oUOGw1MCk75rICOdPoO2zRRK9TEXCzt+8DXEz3OxE=; b=ShYUHSSaiIhCqHNf/smXPWYwKffNYToN+GC57+Yz1LS2aNjXInYy7yB3DinRzBGQWX tmJkPMSJyFCp+scApDrA9NXcVQP0y+x2467H4JD1+ZFcwsC81FQ7+0D9riozzf0t/Yep rPZT0nqt3HVz1tHb1w8AbdeAM+YJrVYOGyqRVCS7wZlEsrx1urlfWqAx+vG7Sj0PjacL cuaEvDolOhbFQd7a3LTCouJQy0XyXdSVWog5xjzHttz5z3Vag4akZvc5YbTu2eLL0Dnp f49iW6GKrVmY5NneO7fzeAFA5FcnydZ0fBsVMqwbZUXR8yF7yLJa9xF67yWyE3EgsaFB HzCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730409182; x=1731013982; 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=N6oUOGw1MCk75rICOdPoO2zRRK9TEXCzt+8DXEz3OxE=; b=D9XHNncY3IsklkOZmk/5iH4L6PZj48/H817pfO7mI1/IsYzyWwCBQ1bygwihDILJIU fgxzYwJKexirnrvtcer2bs1p9xZdRoukkcykZ14MFNLNbVA0W+b3AXwc6BGbSPiPecGV Ey2B5SpzpjVGE+aaeMYCS9gy3Uto4R8xtbFiKiyqXqVcmj3jJc7Cc8i58ySRSdBor0ll Thq1tGAc4PLDfLm6yDtEoCrhMFgZoNgbiwu/fQ7jhw0622kSjHmFdnI+d3Ildi3GzTj2 Qzx5XzsxKb/kiyyTotam5yQcRpiFJfWAFdx2u+YaqDNy+Z3szwhJ8CXTEtfZdTnD3JlG oEgw== X-Forwarded-Encrypted: i=1; AJvYcCXbJ78437w8/hry+vh2k4q8vPDE9EyuzSsumorMN96rMTy3GdvEObG2/o/c2+4Oo6W9MFnhXuJjYw==@kvack.org X-Gm-Message-State: AOJu0Yye48S8El+HEbXdcSIhpPmmv6IB5p/ruL5WaPbHyrPKPbL28wqf ExLVDH42qhfyLEGO/5ApGn8pDzYrTzvjoQ/j5Tlg5AZj1b3tA2zD5FKqWY5kPKjmRRCpSh7r3Pw sA3dePIm6DHjKkWIgt1zVIJ+h77hjEHQjMRM= X-Google-Smtp-Source: AGHT+IHMtUOKVU5QyV2KXcwvIbruPZDa7es/IlnYGnmxoYGwx2LP7kEkB4SbMGC6ZTYUcnGUu9GcOd29xDxhvfZ2Mnc= X-Received: by 2002:a05:6102:548d:b0:4a3:d46a:3590 with SMTP id ada2fe7eead31-4a95425990amr5989147137.1.1730409181893; Thu, 31 Oct 2024 14:13:01 -0700 (PDT) MIME-Version: 1.0 References: <20241030130308.1066299-1-mcanal@igalia.com> <20241030130308.1066299-4-mcanal@igalia.com> <2c507326-3267-431e-936a-23e2ab6a3baf@redhat.com> <899284fa-953f-48a1-af29-222d0d55881c@igalia.com> <95c48a30-0696-4110-950e-e81afb4ffc2a@igalia.com> <5745d2ca-4d87-4d1f-b38f-734c7086f462@redhat.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Fri, 1 Nov 2024 10:12:51 +1300 Message-ID: Subject: Re: [PATCH v3 3/4] mm: shmem: override mTHP shmem default with a kernel parameter To: =?UTF-8?B?TWHDrXJhIENhbmFs?= Cc: David Hildenbrand , Jonathan Corbet , Andrew Morton , Hugh Dickins , Ryan Roberts , Baolin Wang , Lance Yang , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-dev@igalia.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: bpqr5btxuftfct5t97audm8r67dme4b8 X-Rspamd-Queue-Id: B3D521C0002 X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1730409170-506603 X-HE-Meta: U2FsdGVkX19PHn9ahLlsZineCoP1nlso/9Tm+ac240WkaCu83/cv9PbtD2evGJGC5HiOA8I7sU5fWiLYXa0okEQlLwGA6lcHm9SgoQhbVD87DEHphHi9sy3uCYcnIB9pNfh/nl/3hjvnr+PgqfpYEdKONdQcg2jy7yr6lEp9E1vYJrJXcdqtjmLznGqvryNPO87pmT02Rv1GNUHFdjKa4R89EW/Cj/LvgIgWfgLAvkfRuG/kNYSv6KUe75DHD47ATAGreRdK8x8zdTDXgvw6TSBJPx93wb6dFZMUQnUGOBWkFcZhOVxmt2ceGcynA6kZMX/ALR5oQ3MiEBHt6p4IeK0SCWiTr35flUcjsqHyRsDkNMVfoObJvWO4TJepuyQL2/GWBoZL/2/L3LDPxL3p1bToKNU5fSQCFQICYE9VrhympoWFET12cwYb+cwPfVrQmRZla5uHyl00agtpAlSOOzPYa667jYMP9TEXtwZRL36zytiTop/n6eFgyanjVi8AMoCs4ydFs/sRD9vl/JWCMa7wyGnxKmIaLoMbW/wN/N5e0EpA2n2xL/U+AH2XHlEWOfKYbmGDpBnWBpQxMggdudTVxAaMbjVVE5BR41v3NbkC8FfWnGkWZXUnbs/hgHxLNObn2IiQeBkWJyPTA2t7WK3rI3MdMt5r/xReR6KNV65BAG6vyxsrEQg/HAuZWPR63+A69OZwlFbjFMacHao09ekrbTCYhTCtRqSeksERw/J9fhOmbK7pVKw3fNLozcaE+1i76mbDMp/5NL26nFgLVTK6ZDFDC3RLImgZB3+HF+PoqOwmq4fVLcaj6GeulNCwRD2/6fOxgz2XBvYFQIc0tcwdDgMQsOupf58yA+zeHDH9lzgvnNwEZW2T4SV/ppzfmp0CqqoCqoWQKcL3j6DSyf/uEehjJi0k1AFINhLEUWZJIOkDi2Zx0r9QVqA3DHg39yO3tZfgYAe7Ae8RQ2N B+Vxd16Q 3a0p1q7K6xEDPyN9TEUDOZD7SYMZ1TJBmhjxmgmyZHCsNx0HeRN352AWsMI2iHALgNX3heemavT7sTinQvJGjCujQu3BiVpnBj5ZlyQOd3jCMVc1VsIOtLzmxiXXRa8dH276ka3IniiTYDkixIqnfLLlYdLH7D8a0/EB6wr5E2SjW+x0K3TR1uWt3YV12Hlv1QRGyamwM0PRoLVCeBKYdALsMGSvSy2YuTnGjM7p7wJaH9HR73ngeJwuJSE993xUIn6JM2LEMSoh78MIZ99pekJsy/FZhVakHTsWEQHTXq0EaqnLYhSZBkVFtNJ6ffn2xBKRTs8/XO8z0uxTmBmrxInEn8F6tnlNRRsHJrU9cEN/QgjNoDcAjh4mCuhnUIf2O2NUYqnrPSk6VkjOV/oALUZt+dh8CwwC4EKYG 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 Fri, Nov 1, 2024 at 3:20=E2=80=AFAM Ma=C3=ADra Canal = wrote: > > On 31/10/24 10:33, David Hildenbrand wrote: > > On 31.10.24 14:24, Ma=C3=ADra Canal wrote: > >> Hi David, > >> > >> On 31/10/24 09:57, David Hildenbrand wrote: > >>> On 31.10.24 13:51, Ma=C3=ADra Canal wrote: > >>>> Hi David, > >>>> > >>>> On 31/10/24 09:37, David Hildenbrand wrote: > >>>>> On 30.10.24 13:58, Ma=C3=ADra Canal wrote: > >>>>>> Add the ``thp_shmem=3D`` kernel command line to allow specifying t= he > >>>>>> default policy of each supported shmem hugepage size. The kernel > >>>>>> parameter > >>>>>> accepts the following format: > >>>>>> > >>>>>> thp_shmem=3D[KMG],[KMG]:;[KMG]- > >>>>>> [KMG]: > >>>>>> > >>>>>> For example, > >>>>>> > >>>>>> thp_shmem=3D16K-64K:always;128K,512K:inherit;256K:advise;1M-2M:nev= er;4M-8M:within_size > >>>>>> > >>>>>> By configuring the default policy of several shmem hugepages, the > >>>>>> user > >>>>>> can take advantage of mTHP before it's been configured through sys= fs. > >>>>>> > >>>>>> Signed-off-by: Ma=C3=ADra Canal > >>>>>> --- > >>>>>> .../admin-guide/kernel-parameters.txt | 10 ++ > >>>>>> Documentation/admin-guide/mm/transhuge.rst | 17 +++ > >>>>>> mm/shmem.c | 109 ++++++++++= +++ > >>>>>> ++++- > >>>>>> 3 files changed, 135 insertions(+), 1 deletion(-) > >>>>>> > >>>> > >>>> [...] > >>>> > >>>>>> diff --git a/mm/shmem.c b/mm/shmem.c > >>>>>> index dfcc88ec6e34..c2299fa0b345 100644 > >>>>>> --- a/mm/shmem.c > >>>>>> +++ b/mm/shmem.c > >>>>>> @@ -136,6 +136,7 @@ static unsigned long huge_shmem_orders_always > >>>>>> __read_mostly; > >>>>>> static unsigned long huge_shmem_orders_madvise __read_mostly; > >>>>>> static unsigned long huge_shmem_orders_inherit __read_mostly; > >>>>>> static unsigned long huge_shmem_orders_within_size __read_most= ly; > >>>>>> +static bool shmem_orders_configured __initdata; > >>>>>> #endif > >>>>>> #ifdef CONFIG_TMPFS > >>>>>> @@ -5027,7 +5028,8 @@ void __init shmem_init(void) > >>>>>> * Default to setting PMD-sized THP to inherit the global > >>>>>> setting and > >>>>>> * disable all other multi-size THPs. > >>>>>> */ > >>>>>> - huge_shmem_orders_inherit =3D BIT(HPAGE_PMD_ORDER); > >>>>>> + if (!shmem_orders_configured) > >>>>>> + huge_shmem_orders_inherit =3D BIT(HPAGE_PMD_ORDER); > >>>>>> #endif > >>>>>> return; > >>>>>> @@ -5180,6 +5182,26 @@ struct kobj_attribute > >>>>>> thpsize_shmem_enabled_attr =3D > >>>>>> #if defined(CONFIG_TRANSPARENT_HUGEPAGE) > >>>>>> +static inline int get_order_from_str(const char *size_str) > >>>>>> +{ > >>>>>> + unsigned long size; > >>>>>> + char *endptr; > >>>>>> + int order; > >>>>>> + > >>>>>> + size =3D memparse(size_str, &endptr); > >>>>>> + > >>>>>> + if (!is_power_of_2(size)) > >>>>>> + goto err; > >>>>>> + order =3D get_order(size); > >>>>>> + if (BIT(order) & ~THP_ORDERS_ALL_FILE_DEFAULT) > >>>>>> + goto err; > >>>>>> + > >>>>>> + return order; > >>>>>> +err: > >>>>>> + pr_err("invalid size %s in thp_shmem boot parameter\n", > >>>>>> size_str); > >>>>>> + return -EINVAL; > >>>>>> +} > >>>>> > >>>>> Hm, mostly copy and paste. You could reuse existing > >>>>> get_order_from_str() > >>>>> simply by passing in the supported orders and moving error > >>>>> reporting to > >>>>> the caller. > >>>>> > >>>> > >>>> Can I use functions from mm/huge_memory.c here? > >>> > >>> Yes, that's the idea. > >>> > >> > >> Unfortunately, it isn't possible without adding the function to a > >> header. > > > > Well ... sure, what's the problem with that? > > David & Barry, how do you feel about adding `get_order_from_str()` to > lib/cmdline.c? I'd vote to leave it as is. If, at some point, the controls for shared memo= ry and anonymous memory are moved to a file, that would be the right time to call the same get_order_from_str() for both. This is too trivial to warrant being an exposed API in huge_memory.h or cmdline. > > Best Regards, > - Ma=C3=ADra > Thanks Barry