From patchwork Tue Mar 12 14:05:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiongwei Song X-Patchwork-Id: 13590043 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 3A8CDC54E5D for ; Tue, 12 Mar 2024 14:05:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAB028D004B; Tue, 12 Mar 2024 10:05:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C34938D0017; Tue, 12 Mar 2024 10:05:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD4048D004B; Tue, 12 Mar 2024 10:05:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 972EF8D0017 for ; Tue, 12 Mar 2024 10:05:56 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 01434A0D9F for ; Tue, 12 Mar 2024 14:05:55 +0000 (UTC) X-FDA: 81888560712.09.585B292 Received: from pv50p00im-ztdg10021201.me.com (pv50p00im-ztdg10021201.me.com [17.58.6.45]) by imf04.hostedemail.com (Postfix) with ESMTP id 675F640021 for ; Tue, 12 Mar 2024 14:05:52 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=me.com header.s=1a1hai header.b=Ptf12zcd; dmarc=pass (policy=quarantine) header.from=me.com; spf=pass (imf04.hostedemail.com: domain of sxwjean@me.com designates 17.58.6.45 as permitted sender) smtp.mailfrom=sxwjean@me.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710252352; 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:references:dkim-signature; bh=BbMF8m5gDueYZRCHMsIy/5bezoPRbX1YTQWlc+gdLlw=; b=TUmm7M5aXKm4ega5aRlVXYRglT8RMe4GjQ0464VEf3DEBSBmZRY1ipoScu6dbrbH5IedcP /EBQWyKQWAAsS8BuF2rNwy+QhuoPqoxvH4v0mciuhVEavbR3jG55JsJJh6ChVAnja0qSKG YlWe6qmcDThfF03VLzHIBG6EgszGFds= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=me.com header.s=1a1hai header.b=Ptf12zcd; dmarc=pass (policy=quarantine) header.from=me.com; spf=pass (imf04.hostedemail.com: domain of sxwjean@me.com designates 17.58.6.45 as permitted sender) smtp.mailfrom=sxwjean@me.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710252352; a=rsa-sha256; cv=none; b=wQVtLt6+MmUt+pOL7jBCVTjw3l/X1dcDfpm1egpDIdU3qzliR7BoFpMWjHuMcCA/Fm5KHY ZsPUQXTvr+JxLp/a09Crfjgio6KLK2HWY1DNzveUDaAxjgJzRmKX27XbJeRVqtVP/XBHF9 qWwAgeYC3b3wIXzKclNM30hCU3zCDlY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=me.com; s=1a1hai; t=1710252350; bh=BbMF8m5gDueYZRCHMsIy/5bezoPRbX1YTQWlc+gdLlw=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=Ptf12zcd9lFsEaaDF/p/Gggh1EhsjloxWw6oFekA8cURMFejeQ+dSoz08KdnHnJJn W1Ct1bd1k+raEfxyO/rDOMIAw1JFFkJTVy3Ip5zxgpaYqb4Ky5pkMnuI7A380O1cBi ezAVztXyogKKqRvoFS5a7S66SoVyhEvDm99mbjYtUN5JY4akWbr0C2Wyobzu5q+b9G rddlf8/8f6IrNppV75lKNP9UiVWl6XLeetDnjQrJO8iBe0vd93/gey3Ah6V5hjgV4b eUlfW/LKNySQ3X2z97IfIgZ5chfpNRHf7b+lZyoKTEC4ZJtqQMoC3iM9QdLadbQrvB 7gMmr+zseC1Xw== Received: from xiongwei.. (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-ztdg10021201.me.com (Postfix) with ESMTPSA id A13F0681BA5; Tue, 12 Mar 2024 14:05:45 +0000 (UTC) From: sxwjean@me.com To: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Chengming Zhou Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiongwei Song Subject: [PATCH v2] mm/slub: Simplify get_partial_node() Date: Tue, 12 Mar 2024 22:05:32 +0800 Message-Id: <20240312140532.64124-1-sxwjean@me.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Proofpoint-GUID: Yn2ommIikT1KPMGk-GpetYDo4xMKhwyq X-Proofpoint-ORIG-GUID: Yn2ommIikT1KPMGk-GpetYDo4xMKhwyq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-12_09,2024-03-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 clxscore=1011 mlxlogscore=999 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2308100000 definitions=main-2403120108 X-Rspamd-Queue-Id: 675F640021 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: kt1nthjs8zmem37oehuomqyj5cfbadpd X-HE-Tag: 1710252352-74961 X-HE-Meta: U2FsdGVkX1+oIHVgPGaHFi0kmv/GHArm2aKiWpeTz1Kb5/qR3/cKEZiTPpUr/S8xLizAnweCTx0sNxk14+6O90HUpGO8VjoNe2XkxPjCDdkZ2GnWgmhWIh4TO/cLDBtSxRBVnulR06gWBFPS0qdswDxi/jQYSG4BFp7hsbAZzpccpgIo9Gq84bnpXmQlZwEiRTN71OsnMphhWqq4qFiNLliYcCA8U6tDPATBevU/MP30OXyxZsBKcVvtWPGuodk6HfpbMA/Sicj0IeVzJYWGQxpJ4DXHchmeNIRBrNh5BI3cUMNOQS2Q9DvIsz4e6BprwcDkRd2IyrG0FiW8SHO/HIGjZZkHZvwNyDiJKdqSRJMZJ9Z+8/yckaUqm0EHvvRXGm6oORMwpKnFuYgyIjl6X0OM5imTQcNJaEUAD7AYEVpdRE5W/IZ5hKJqsA4AEF+lSHgQ3OUdg9gt3lq+nTrfGguhY5Njs4HWSkxTmDAx3eudO1Z9761KeROcPk9lcN9q9SXjyCwQHY/KUUyXF6H7v4bDd8OuR8patcpZiL/m/HnFqHIYFhh0YR9hgXKu6CI+IvQ5RrfxUCdzz+Lly8jhJOk4La4OF6XYCb2VHmmBE5H4B5xZDE2biBRx8pO5luG6XBEK1e0EZ5Bq6Yb/fdFvYhIO5yh4Dr8xf9W9KbkTKIrPbwowuNxHeirT2A20s3HCNyKBAe/ltk/+rXBal8MCbhLQImNHMlfJiwltlMwWekjVo1lkxqsN4YG+5tXDLh0HJCOeGpsCxF77OyMXq7uNhfCT++PXKB+HkjiJUWH7fQcOw5U8rDMNeDo774vAMmh72n4tZYHYWgVDKzXgBic8bx6swcKffnSezGDC5Q8xn72VDxSK+gkLywOtm/Z9YD0Co8aSvwbxYxjQSlQQd3wEz8ysI3zIrnID4adiJg7qrAJHQ17S7lOzzXzeCATjpZ8eQLuq+ChGSTQlbf08oBe Zc9TZ0hF t78PHqNRoO8CvJ/fCXlDP2T2OUUF4lCXHbTNFWrhXCW4tKHQ7bSH0jSafmMQcbN92q27ta7vzoZUxvFcUjMESzUqRcnQUfieFIBBKnDkCRRyo3jh8NQnrw8CD95dNRprX1QUcBnwmklKB3mgcSw2q+ux7ITbg0PL4twmwv2KHggXYD04QRnNz93r0l9Sl8I4Mr0xrTV/7egqb56NrhUpODYPrjjEfHwl5Iyf6XCbNgrpcL81ykSw8wRlDHeqt4Zf+wOVUPsI6kSIZOrdPqNer/KYdZXTdHb+GyZElL+/jaSzZPTBuLpkzFErE0SqzL9T36N7cy+ulyp5CraRsi392ybICWpwK+ecwi5Wl5gbAp/JhNnASF7KtoZtBvWOZtXy5gD6O+EkUuXC9WxcpgMvsYQTRcV09HT1CjvqYGKRkQ1qX/4PLQgXxEmu8fuMjPzyQdDcM6Cqf5j5eETd24mnTLX0psA== 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: 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) + 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;