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 9EA8CC54E5D for ; Tue, 12 Mar 2024 15:23:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1BFF76B0261; Tue, 12 Mar 2024 11:23:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1711A6B0266; Tue, 12 Mar 2024 11:23:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 010CB6B0269; Tue, 12 Mar 2024 11:23:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E293B6B0261 for ; Tue, 12 Mar 2024 11:23:28 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B111A160219 for ; Tue, 12 Mar 2024 15:23:28 +0000 (UTC) X-FDA: 81888756096.09.52DB671 Received: from out-174.mta1.migadu.com (out-174.mta1.migadu.com [95.215.58.174]) by imf03.hostedemail.com (Postfix) with ESMTP id A1FBE2001A for ; Tue, 12 Mar 2024 15:23:26 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=rigdOnXH; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf03.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710257007; 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=xrI0LmH16nBL8Fs5qJACoyJ/98w4jqaFfRvlIhPxmt4=; b=iJA274ix5stiDQiKY9Rsr5zFgX9aKmmBJ5r+w/m6gGIS/VGzU7S1N5/jQwhXInwGKg3ayY j3lfokyEz6WzAlVvjHA4EGdjDY2w+UNIjW7NXnYRTZcrEm6ijN5RSMAX9PlHvSnhFnz4Ty Vk0XKc30I3mKr0mr0+i4YuHUeOQ3Br8= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=rigdOnXH; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf03.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710257007; a=rsa-sha256; cv=none; b=DltQSIn3z9xATUK3syL6piNiOGT1I43x738r+BdZCQm2mP+b3pTkFY/YPme1OKnNXDrvmh uHa6XvAVC7L9BiocoQukkHUq9dwakunTV7rZo62hosjFWY/zMhxXHyONntbgpb0ye2KzTZ z6ZJZ65f/j6FyrSLAcqNDycQRGHE11M= Message-ID: <38beee7c-aceb-4d59-ac79-e7e412a01588@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1710257004; h=from:from: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; bh=xrI0LmH16nBL8Fs5qJACoyJ/98w4jqaFfRvlIhPxmt4=; b=rigdOnXH1zLZxxRdzAfFhhFARZneuylNq3K5BJxQBbvup7nGm3dqF0e7mDM7zar+2allmS cj0WJXZKJUeVM8gT4oi6jSTgGsS4eHbHUr2R7xzt8rQQ1HyGcrstbzXmn07LinKmvJaaYs 4mVpgLQGR5/NbNTafw24wjDJevg7MZs= Date: Tue, 12 Mar 2024 23:22:54 +0800 MIME-Version: 1.0 Subject: Re: [PATCH v2] mm/slub: Simplify get_partial_node() Content-Language: en-US To: sxwjean@me.com, Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiongwei Song References: <20240312140532.64124-1-sxwjean@me.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: <20240312140532.64124-1-sxwjean@me.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: A1FBE2001A X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: xi56h179m74hrkypni6kgq7ng6asdtj1 X-HE-Tag: 1710257006-931147 X-HE-Meta: U2FsdGVkX1+uH7sHS2486gGLVRr6A75gXguX+P4GNdi4dsf7BMgatEjlVgiRuIzOCi7g7BUN625gAFbvREVDFLzYBC+rIVBFQlIF8Z2NRsEWDVe4s9wwqrA+x75qEurMkIe1oysaCcB+veYppYKU4pAuxRhVLTW2Wd8ovDjJEKnctjwHHWLeWvqd6As6kD/sxIkNWnkirSQF4bp3K+2I7tagZuABKCgoRak+pvraGNOWHKVpOOxLl/vW3uWdALIa2Jl3YgZOnYIY5GobwUGhwIrFPcIv2ZHc516iAvRXMyOMxCbk7q2GpqUByyGvYFOYed+ncBtAldI35gN6UujMq7eo6nJDAJYFTf3qDnaBvwjGJrOy7lkbv+xoRPBsqwvQb9ImNhq741tofyAecys1gsvQ1w13m4L4W5DwiyxXpHC+n38ErrIpvmrfC5e2nmxyqSpoMAlNa0+g69kVQgfhXZLNmpzs6h61kuYrmdbAjErYZ0Ov81i3zhhvasdjvrht/CXYkqLTDwHosl8451uAk41DEuXTBBukl1wpFK14+0qNmV8yn81X6XOJRul7t0iBoXR3Hyu91KrtDx+8enxEflLW0A9tbPRLwLvjBasQa878KgEONPs8pwPk/dJEm8dphrKdrXsc0z9wNTP390nFsJJrw+IGrtKQjMTy0Yox7MhH5UiObSk4LumyNINSyofC+cvGPa2WZDIGFJn9IydiGb5qR4rB6PlDx4OwyvljCEw34ws7MlSC+PfN3OG5JVsb8qF5ORBQufsHN7gX3Cf6+52FxHhNknFfjKgjNZ9datoIKaAsRgS7Ci3T9rMo0w2vLMHRr49cr3w8MS/8gWo7uEzjURA0dL7mEd2aV0XmAkF9JTvGf/vpC4qCtRj36H47Axo+NKIObSBNX5Ge2IVWExlqDdzI0VrsRSgbZtPQonI= 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 2024/3/12 22:05, sxwjean@me.com wrote: > From: Xiongwei Song > > Remove the check of !kmem_cache_has_cpu_partial() because it is always > false, we've known this by calling kmem_cache_debug() before calling > remove_partial(), so we can remove the check. > > Meanwhile, redo filling cpu partial and add comment to improve the > readability. > > Signed-off-by: Xiongwei Song > --- > Changes in v2: > - Use "#if IS_ENABLED(CONFIG_SLUB_CPU_PARTIAL)" to instead > "if (IS_ENABLED(CONFIG_SLUB_CPU_PARTIAL))" to fix build error. > (Thanks Chengming Zhou) > - Add __maybe_unused for partial_slabs to prevent compiler warning. > > v1: > https://lore.kernel.org/linux-kernel/20240311132720.37741-1-sxwjean@me.com/T/ > --- > mm/slub.c | 24 +++++++++++++----------- > 1 file changed, 13 insertions(+), 11 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index a3ab096c38c0..ab526960ee5b 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -2588,7 +2588,7 @@ static struct slab *get_partial_node(struct kmem_cache *s, > { > struct slab *slab, *slab2, *partial = NULL; > unsigned long flags; > - unsigned int partial_slabs = 0; > + unsigned int __maybe_unused partial_slabs = 0; > > /* > * Racy check. If we mistakenly see no partial slabs then we > @@ -2620,19 +2620,21 @@ static struct slab *get_partial_node(struct kmem_cache *s, > if (!partial) { > partial = slab; > stat(s, ALLOC_FROM_PARTIAL); > - } else { > - put_cpu_partial(s, slab, 0); > - stat(s, CPU_PARTIAL_NODE); > - partial_slabs++; > + > + /* Fill cpu partial if needed from next iteration, or break */ > + if (IS_ENABLED(CONFIG_SLUB_CPU_PARTIAL)) > + continue; > + else > + break; > } > -#ifdef CONFIG_SLUB_CPU_PARTIAL > - if (!kmem_cache_has_cpu_partial(s) > - || partial_slabs > s->cpu_partial_slabs / 2) > + > +#if IS_ENABLED(CONFIG_SLUB_CPU_PARTIAL) Hmm, these two CONFIG_SLUB_CPU_PARTIAL look verbose to me :( How about using just one, maybe like this? diff --git a/mm/slub.c b/mm/slub.c index 2ef88bbf56a3..a018c715b648 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2620,19 +2620,16 @@ static struct slab *get_partial_node(struct kmem_cache *s, if (!partial) { partial = slab; stat(s, ALLOC_FROM_PARTIAL); +#ifdef CONFIG_SLUB_CPU_PARTIAL } else { put_cpu_partial(s, slab, 0); stat(s, CPU_PARTIAL_NODE); - partial_slabs++; - } -#ifdef CONFIG_SLUB_CPU_PARTIAL - if (!kmem_cache_has_cpu_partial(s) - || partial_slabs > s->cpu_partial_slabs / 2) - break; + if (++partial_slabs > s->cpu_partial_slabs / 2) + break; #else - break; + break; #endif - + } } spin_unlock_irqrestore(&n->list_lock, flags); return partial; > + put_cpu_partial(s, slab, 0); > + stat(s, CPU_PARTIAL_NODE); > + > + if (++partial_slabs > s->cpu_partial_slabs/2) > break; > -#else > - break; > #endif > - > } > spin_unlock_irqrestore(&n->list_lock, flags); > return partial;