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 5989ACA0ECA for ; Tue, 12 Sep 2023 13:48:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF31C6B00F4; Tue, 12 Sep 2023 09:48:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA30B6B00F5; Tue, 12 Sep 2023 09:48:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C6BD46B00F6; Tue, 12 Sep 2023 09:48:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id B77B06B00F4 for ; Tue, 12 Sep 2023 09:48:38 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 9031A140A5C for ; Tue, 12 Sep 2023 13:48:38 +0000 (UTC) X-FDA: 81228075516.12.68587DF Received: from mail-ua1-f52.google.com (mail-ua1-f52.google.com [209.85.222.52]) by imf11.hostedemail.com (Postfix) with ESMTP id BBF224000D for ; Tue, 12 Sep 2023 13:48:36 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b="JYu/CNRX"; spf=pass (imf11.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.222.52 as permitted sender) smtp.mailfrom=42.hyeyoo@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=1694526516; 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=CcT6oclXMuSPn3QBAyqNrtWmxEZ6No3EZHJZPbcbszw=; b=LG1fRheTQrFM5bW/UA+Zhq33FkRNZbuxvYsjRVZCDvssrVRM9oYnFoqSmh7/TeJjYLwgEI TmjmljYTCKilSvn1cO+zkkmUbns07BY4CNYtdY2pzSZrTGV7B9ZxA8Br1pgOjoUY5bOtx2 LjoRNQxvgmBOUypGyKf3+GMgIweyRpk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694526516; a=rsa-sha256; cv=none; b=Uc/3IxCh2LQU0A80yZzxaIfIvNVR4BGjaeDB9rMFQcSTmOrdXVL7pc3FbUTt3UCPYlBhHw 3f9LKfwlSuizmy0OOf5gSampIh0852/Oung3SZ+6qgLgE+IQiAZbDe7CrgRWjy3T1uPN0v cP9qjWpZVl6YOzWY0EeB3nEqf5WXBJU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b="JYu/CNRX"; spf=pass (imf11.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.222.52 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ua1-f52.google.com with SMTP id a1e0cc1a2514c-7a2785e34b6so2256996241.1 for ; Tue, 12 Sep 2023 06:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694526516; x=1695131316; 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=CcT6oclXMuSPn3QBAyqNrtWmxEZ6No3EZHJZPbcbszw=; b=JYu/CNRX2NscxLrygfG3x42HMz+4udIGZr4osbAdxtgySgL1R9q27gp+125c1gwj+z nMuzKEcOJu7YGm80NCcS7QVrCwSZS0SCoTPu++nyis0nUNXrmh2FLQVyAozEi2dsdHAg gcaDt6XrdG2EMDoWJoeYQYHPR95LjKsdpbJXFEmNcrnbmnKO/LtQ3t2PFS6d+UKv0uNS NzVgLFbDkfZxToJuBqRtTaAXquZ2V1CoU+l46jl5qGdwVWHxhhy9C49HGVL+3F83AgKt tX1aN445L+zdf3TH0J4Z+AXx9MEvlMzflYr/vfm0OMglFlZn5UKCRABCIAyIOv4TR4a3 DlKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694526516; x=1695131316; 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=CcT6oclXMuSPn3QBAyqNrtWmxEZ6No3EZHJZPbcbszw=; b=i9Vo+fYQbtOPioDWkyzWogLA2UK2K1cEXpcovn+Rts/VAp3uCsdBM/916kuaGKAi+f +810QqExDWlhWFaBeQh+p55u6xnm1H1Lvb4vfYgsJxYARL6k6umUpRTFjRRRTE4J1zWX yMYflq4w5llDGd5BTBRGWysvAJVzTRL9nEjj/geGpLtGdlxM9t7p+bfMPma63gZnvk1r RGPE43CDvI4DzS73+WxxdlW3Ggy0fonl+it3RyQQSIwOXGh3maipDl4ij+1LSYP3Kcmx uEJoTGTA+Uyv5v9yj7fR9/IiD3j3vaM2uGztmhr6x6oOO3/JMGec+n66EjYrzJ6O4JPq 0yeg== X-Gm-Message-State: AOJu0YzEytHKatpa1/qRVD0Ak06nWPXq+mUflKwK8XwvA7Ukc1wyrk9t U/f5ZWDFuwRsyc+EiOJVcwDGl92GhFpTQiwCXUE= X-Google-Smtp-Source: AGHT+IHeKZLFaE3ntl/c9r+ENEgyO4BNrBL5FfBrgal0n2Cv3vUWEWPGT/2Cfn4RKJ9Fu22o2xvo7lZ6DifjtmzNiFg= X-Received: by 2002:a05:6102:3f89:b0:44d:538e:c6ce with SMTP id o9-20020a0561023f8900b0044d538ec6cemr7649123vsv.25.1694526515566; Tue, 12 Sep 2023 06:48:35 -0700 (PDT) MIME-Version: 1.0 References: <20230905141348.32946-1-feng.tang@intel.com> <20230905141348.32946-4-feng.tang@intel.com> In-Reply-To: <20230905141348.32946-4-feng.tang@intel.com> From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Tue, 12 Sep 2023 13:48:23 +0900 Message-ID: Subject: Re: [RFC Patch 3/3] mm/slub: setup maxim per-node partial according to cpu numbers To: Feng Tang Cc: Vlastimil Babka , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Roman Gushchin , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: qwf5ae7zky31qpn3m3fz8b8posxjm5z7 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: BBF224000D X-Rspam-User: X-HE-Tag: 1694526516-704212 X-HE-Meta: U2FsdGVkX1/l1pVKAUWEvERfsF24ZIDZXKBsWI1f3GOCbIerCieCzaXZenhG98QxY2njA1Fdc/41NLYDkv7RgV5LUoW7JjwMca3s2XKAsE9Kn4hrDaE/ZE49tz6e8CYXP4zgIxiwH3H4LBIoAsFr3U2ABMAy4gvif6tsYqCj/qv9bWMFgYfvC8pbdOo4k09wqGbgqi7jSHIRwKrYkj9zyGI835HOPnSWWhm2GxBH76tlGD3nzty3IeDCdId+MA5aAjVdsUE1/54BY8oF+t6ne20qGK8I7PtR3w8tON0XIKbWIeGqPFw1VtSfVVOLfiigmvvqUu9FXHlddeBA5dMWafoQHHWzKnlNwnksRO27R9SWSid8bz63P6ZkMBo4V947aZLnCplzKvfPh+RBE29SpoenKIxoXhkTuVc5l6+W4bFf31ODtN2hiXMUlYn62Qnc+OPvQGgwusQM8N4MZ2ltYAqHqftqH0ICqX/AVkUXmHjjJmNcEl/PLS/6HlkT70UJ2JAl7LMgZFYrR6W3/AFQCWvT1spnh+dfOFZsovNUDVLHK2z/RWFt4Z7fSmOCkTk9mGh7fCq16S8JQLxlFJ2xt0cEPWKpztHFwnbbQOt9kUMAS6Ce1M0rDngxdVX049tshsiqtqCu1oiBK0jkY1lrutE9Y7lc4i3HkZU0e+U0VYQfIe2632EFP/vNQklgKVlQ/gVCJ1pJXtXyikFuQDEAZPdzk+Ifj8MDfLfMScLqGbbk4s+ID41TSXFCSbGePBghpJcaWrVVf8iiTDX/xMY7EFcd+mKOtOHxfsp/zssv5oNGGq/e+2yZ/z3TQ33CTZdJSV/rcvyhK4DkFTLeff0rZXhNFAxjvCEbEBesZW2G4D6jSxdcUqPzj7umFwBDBL+0DiaB8AsgU6Yof9aD0Z4gfoug16UtYRHMULtX1mJ5AOqC2Je2y1UUEl1XwlksJwc1njsUSDGLhQkkeszCVs/ Qe6tM/gH N/3W0kM5zoO2JjaP1nDCY1Ojb+OB2ckXBAymQae2oGCdGZr70rhUfSczbvnbDVPw29mhhu8GeWop8NpxW6cXMMPZhTNG5IVi0tV9As4Lq1AASSFTwnEXSdC5adCACs02yVdzX9ZdTgOPB2lXkJ0T5CRZvk4n7K0Vorj/iYk01LcCANi4ckzUMQNL/CIl5XtUh61SFyqb6z3Q8u0Hfy1T8169XAt/bMWJjRGBoZeHYm97zNiw1BezJIfL6lWRnjUK/Y9tQMqqVrnZN2ugT9SvSb+jv4S9fgwA6rCNDMxIxioNC2YMsWOy/0te60iHUmtEBwNCjiqHb4AX/lNC2XQy/VUkLHu+yK7R/Fzhar0iZo73wk2vYfa+gt8KVqS/pV0NInvRmKyGOGrw+JlVADxWRaAzKFA== 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: On Tue, Sep 5, 2023 at 11:07=E2=80=AFPM Feng Tang wro= te: > > Currently most of the slab's min_partial is set to 5 (as MIN_PARTIAL > is 5). This is fine for older or small systesms, and could be too > small for a large system with hundreds of CPUs, when per-node > 'list_lock' is contended for allocating from and freeing to per-node > partial list. > > So enlarge it based on the CPU numbers per node. > > Signed-off-by: Feng Tang > --- > include/linux/nodemask.h | 1 + > mm/slub.c | 9 +++++++-- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h > index 8d07116caaf1..6e22caab186d 100644 > --- a/include/linux/nodemask.h > +++ b/include/linux/nodemask.h > @@ -530,6 +530,7 @@ static inline int node_random(const nodemask_t *maskp= ) > > #define num_online_nodes() num_node_state(N_ONLINE) > #define num_possible_nodes() num_node_state(N_POSSIBLE) > +#define num_cpu_nodes() num_node_state(N_CPU) > #define node_online(node) node_state((node), N_ONLINE) > #define node_possible(node) node_state((node), N_POSSIBLE) > > diff --git a/mm/slub.c b/mm/slub.c > index 09ae1ed642b7..984e012d7bbc 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -4533,6 +4533,7 @@ static int calculate_sizes(struct kmem_cache *s) > > static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) > { > + unsigned long min_partial; > s->flags =3D kmem_cache_flags(s->size, flags, s->name); > #ifdef CONFIG_SLAB_FREELIST_HARDENED > s->random =3D get_random_long(); > @@ -4564,8 +4565,12 @@ static int kmem_cache_open(struct kmem_cache *s, s= lab_flags_t flags) > * The larger the object size is, the more slabs we want on the p= artial > * list to avoid pounding the page allocator excessively. > */ > - s->min_partial =3D min_t(unsigned long, MAX_PARTIAL, ilog2(s->siz= e) / 2); > - s->min_partial =3D max_t(unsigned long, MIN_PARTIAL, s->min_parti= al); > + > + min_partial =3D rounddown_pow_of_two(num_cpus() / num_cpu_nodes()= ); > + min_partial =3D max_t(unsigned long, MIN_PARTIAL, min_partial); > + > + s->min_partial =3D min_t(unsigned long, min_partial * 2, ilog2(s-= >size) / 2); > + s->min_partial =3D max_t(unsigned long, min_partial, s->min_parti= al); Hello Feng, How much memory is consumed by this change on your machine? I won't argue that it would be huge for large machines but it increases the minimum value for every cache (even for those that are not contended) and there is no way to reclaim this. Maybe a way to reclaim a full slab on memory pressure (on buddy side) wouldn't hurt? > set_cpu_partial(s); > > -- > 2.27.0 >