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 28C8AEB64DC for ; Mon, 3 Jul 2023 08:40:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B58F8E0098; Mon, 3 Jul 2023 04:40:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 265F08E007C; Mon, 3 Jul 2023 04:40:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0DF698E0098; Mon, 3 Jul 2023 04:40:02 -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 ED2088E007C for ; Mon, 3 Jul 2023 04:40:01 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id ABEBB1A085A for ; Mon, 3 Jul 2023 08:40:01 +0000 (UTC) X-FDA: 80969653002.27.68CA1A7 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf23.hostedemail.com (Postfix) with ESMTP id F13E4140004 for ; Mon, 3 Jul 2023 08:39:58 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=SWKvwkuj; spf=pass (imf23.hostedemail.com: domain of jaypatel@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=jaypatel@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688373599; a=rsa-sha256; cv=none; b=tVWvwV94ohH2HNlyxV9pGZs0dThL1nojfupY3MEsx88n/kwknaBrz9cVQ3zjgZ4Uui9Bno 6C+c57YhHb7gBZa0J3ZvzfZ2s5KMgpLPwlsPK3ctCxm/e5hfYBylWXvLnzP/GkVsm4+Zj5 00kS/mSmiHHGRa9t/bQCjuLp+u/9C8I= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=SWKvwkuj; spf=pass (imf23.hostedemail.com: domain of jaypatel@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=jaypatel@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688373599; h=from:from:sender:reply-to: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=2u9j1Gnwlxxerl2n1T5l32saA6F0xiVVqinNLRDoV7Q=; b=HX4ML4HCRTrx9rbODdEXqUG/R0yVBkDpRGmOd+hl8fgV6OLN8NMcvwZSOz4kR2HO39EKG2 tU4BkZDF50Y578A8Ojx6Yc7XzAOvWhJ38u0owrXjazWrTCoIBzYyr5N5KPXbdUJrO1+Ol4 Twhpi3R7d3Kf8ZZTC2QAkG6q9u6QP6c= Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3638Gwe2012951; Mon, 3 Jul 2023 08:39:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : reply-to : to : cc : date : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=pp1; bh=2u9j1Gnwlxxerl2n1T5l32saA6F0xiVVqinNLRDoV7Q=; b=SWKvwkujhuxEB8ROXv4i41lSZT9NkG4AUR0ZickXqH3r399PbACJhbKqRsvjcqhVB6RC ZuMxuS5VH0uY1MHkOmStnhcUwG3WVT/EbRYGSQni9q1s0Jg6FMqTjz4BRrkQ3R/t0hw9 n6lZuQRtqz0bwJem7zR9FGuFS9/UKQt9C0v0Qu8kdzYFFbyaGKoxX5IlFpMLzVpx84JU vmEF6PwgT1oInQmKNPLs3wQ1jJ0KKbEcQ/PfnzhLlXF43r8qQTCqV21rffuQ0w4HCgeE rr/3utVJ2+7A8Mgl71D5zbkqiYIgutBAFRUStX7H0aQNpSTCHpLsQ8CgDycrlKq7trIZ 0g== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rktpa8ge1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Jul 2023 08:39:48 +0000 Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3638HjYe015626; Mon, 3 Jul 2023 08:39:48 GMT Received: from ppma04dal.us.ibm.com (7a.29.35a9.ip4.static.sl-reverse.com [169.53.41.122]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rktpa8gdv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Jul 2023 08:39:48 +0000 Received: from pps.filterd (ppma04dal.us.ibm.com [127.0.0.1]) by ppma04dal.us.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3636T5Ma030173; Mon, 3 Jul 2023 08:39:47 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([9.208.129.114]) by ppma04dal.us.ibm.com (PPS) with ESMTPS id 3rjbs5eut0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Jul 2023 08:39:47 +0000 Received: from smtpav01.dal12v.mail.ibm.com (smtpav01.dal12v.mail.ibm.com [10.241.53.100]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3638djH324183500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 3 Jul 2023 08:39:45 GMT Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2999158064; Mon, 3 Jul 2023 08:39:45 +0000 (GMT) Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C0F4458058; Mon, 3 Jul 2023 08:39:41 +0000 (GMT) Received: from patel.in.ibm.com (unknown [9.109.195.224]) by smtpav01.dal12v.mail.ibm.com (Postfix) with ESMTP; Mon, 3 Jul 2023 08:39:41 +0000 (GMT) Message-ID: Subject: Re: [PATCH] [RFC PATCH v2]mm/slub: Optimize slub memory usage From: Jay Patel Reply-To: jaypatel@linux.ibm.com To: David Rientjes , Brian =?UTF-8?Q?=E2=80=9CBinder=E2=80=9D?= Makin Cc: linux-mm@kvack.org, cl@linux.com, penberg@kernel.org, iamjoonsoo.kim@lge.com, Andrew Morton , Vlastimil Babka , aneesh.kumar@linux.ibm.com, tsahu@linux.ibm.com, piyushs@linux.ibm.com Date: Mon, 03 Jul 2023 14:09:40 +0530 In-Reply-To: References: <20230628095740.589893-1-jaypatel@linux.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 (3.28.5-22.el8) X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: S5iHKpMIZZWCasl6-SObHIgmGtzJYC5v X-Proofpoint-GUID: zKllqkxh3HGQd0nj1v-lM0qtl1P3B6bV Content-Transfer-Encoding: 7bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-03_06,2023-06-30_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 spamscore=0 clxscore=1015 mlxscore=0 mlxlogscore=999 suspectscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2307030078 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: F13E4140004 X-Stat-Signature: qbeshqmwrcp6414iqcezjik1ci87zgck X-Rspam-User: X-HE-Tag: 1688373598-571599 X-HE-Meta: U2FsdGVkX19kjIMU3ehvZ2pK/dAYMDEWm22D22Y87MmAOkcrTWifill0WreaUD0sPKWXIwiDcV0hOjspp4mjU86dtaoA75gGTl4OANXbJHLOjC3GYNYFtdwA2Cajc51zQ/jSrevVxDg0mFZbX4FVXb/q0S5P+9Yn4fz/TqJW/yV0fecPUKMJXokauYCDUsg7yne5viBq8jwlM9U/72QltJUtUivJqRnJPu4uQZpwq1vZDtfHAyIll7p8G7e6/SctyuODyB9DRlGLeJvGVEwyzJ1q5aeAACebDtg1kj76owVOSaeuyE5ccxL4rnphujBodX+XGdZB0zaeO8aL7KegKH3wI1oFA10QNUd1W2X/70rpp0SwJfJjNTxOhy8LRx2UqYwDf4JzGHR9Z3Sp9ywv9pPnHdQ6mk5GfA16WEZ+0sm+wkCVAIV9QHAirMw0yPLMNfmee2VMQevwe+iGOvTH0tONOn8jOrsVa9GNG7bs1/MvFu3Tallq2T1BKTGao28Fj2Hz56q/Y1dHK2fqB0PsY9DMd1QAF3soh9TXs0BPj+qHZKYvkEB4V7inFfj7sqFvLtA/gmKXw+Ugwqdsvgscg1jGgMy0dgtEIdvi3QH3p+j1XM4w8cyEv5MKKXZiF+imY5fNGhTlJAKTJoOnQVce8fcNu3NObAYPii4EmOW0bmOXCiCYuW2EMcLNvhBtDi+OhPYoNjgKP6IWV9kInWJ1AsVQftUr9g+AG0+VyibqmN1AH7x7EdVSQaBX2CADVVqdDhTk/Ym08AfPTzt0luEBlkj+hbOAnOb7afF/ppEUPoEpsrxwWzuAD4zgdyR+E120gAxLYurCV2MBZL+ir/cvwE8GxAf5XTRQi0DagHhRlVIaZE1h+1xpzpph4V3vPp81djTwffdB8+cXUfziPLznNKvfEhb3rTjg5fPdOnnaBLX2Xe3/hwLObi+ye3bSh7HjsVUu5GZ69xMQLWxub1p PUAVmEm9 nir6Y0CE4TuFwRBmJlcaHXEKsZOnuAkTdLxm5hF7dZcevWhDrVMoCEXxbla26BKOrZf/yPxg6vwRqSobZdmQJ8lLduUCM5+M8BoWmoR29Ay0RY7uRupMzVDSApiiZG0tzWSwAH74L9NunCn5bO0Y++SAO3lofdWqccnAH0UCqxZcbCvz+gJhiY+u+RvKOWm8pwEkJTz/BMQNZrm9uzjN+M/YV20l30K5SPZFijBH9S8z+mO02rvQCJ11i3DJIPW783ySXZKn4sUtsIDZ52w54zb1qXqt5hvALKV8WYEYhIuFKERRy9Q2w9mosn94ccYW8Ubo1tF1Fr5vSP51BCdQBZFlEiA== 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 Sun, 2023-07-02 at 17:13 -0700, David Rientjes wrote: > Thanks very much for looking at this, Jay! > > My colleague, Binder, has also been looking at opportunities to > optimize > memory usage when using SLUB. We're preparing to deprecate SLAB > internally and shift toward SLUB since SLAB is scheduled for removal > after > the next LTS kernel. > > Binder, do you have an evaluation with this patch similar to what Jay > did? > > Also, tangentially: we are looking at other opportunities for > reduction in > memory overhead when using SLUB. If you or anybody else are > interested in > being involved in a working group with this shared goal, please let > me > know. We could brainstorm, collaborate, and share data. > > Thanks again! > > Hi David, Thank you for keeping me informed. I'm interested in working together towards our shared goal. Thanks Jay Patel > On Wed, 28 Jun 2023, Jay Patel wrote: > > > In the previous version [1], we were able to reduce slub memory > > wastage, but the total memory was also increasing so to solve > > this problem have modified the patch as follow: > > > > 1) If min_objects * object_size > PAGE_ALLOC_COSTLY_ORDER, then it > > will return with PAGE_ALLOC_COSTLY_ORDER. > > 2) Similarly, if min_objects * object_size < PAGE_SIZE, then it > > will > > return with slub_min_order. > > 3) Additionally, I changed slub_max_order to 2. There is no > > specific > > reason for using the value 2, but it provided the best results in > > terms of performance without any noticeable impact. > > > > [1] > > https://lore.kernel.org/linux-mm/20230612085535.275206-1-jaypatel@linux.ibm.com/ > > > > I have conducted tests on systems with 160 CPUs and 16 CPUs using > > 4K > > and 64K page sizes. The tests showed that the patch successfully > > reduces the total and wastage of slab memory without any noticeable > > performance degradation in the hackbench test. > > > > Test Results are as follows: > > 1) On 160 CPUs with 4K Page size > > > > +----------------+----------------+----------------+ > > > Total wastage in slub memory | > > +----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 2090 Kb | 3204 Kb | > > > With Patch | 1825 Kb | 3088 Kb | > > > Wastage reduce | ~12% | ~4% | > > +----------------+----------------+----------------+ > > > > +-----------------+----------------+----------------+ > > > Total slub memory | > > +-----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 500572 | 713568 | > > > With Patch | 482036 | 688312 | > > > Memory reduce | ~4% | ~3% | > > +-----------------+----------------+----------------+ > > > > hackbench-process-sockets > > +-------+-----+----------+----------+-----------+ > > > | Normal |With Patch| | > > +-------+-----+----------+----------+-----------+ > > > Amean | 1 | 1.3237 | 1.2737 | ( 3.78%) | > > > Amean | 4 | 1.5923 | 1.6023 | ( -0.63%) | > > > Amean | 7 | 2.3727 | 2.4260 | ( -2.25%) | > > > Amean | 12 | 3.9813 | 4.1290 | ( -3.71%) | > > > Amean | 21 | 6.9680 | 7.0630 | ( -1.36%) | > > > Amean | 30 | 10.1480 | 10.2170 | ( -0.68%) | > > > Amean | 48 | 16.7793 | 16.8780 | ( -0.59%) | > > > Amean | 79 | 28.9537 | 28.8187 | ( 0.47%) | > > > Amean | 110 | 39.5507 | 40.0157 | ( -1.18%) | > > > Amean | 141 | 51.5670 | 51.8200 | ( -0.49%) | > > > Amean | 172 | 62.8710 | 63.2540 | ( -0.61%) | > > > Amean | 203 | 74.6417 | 75.2520 | ( -0.82%) | > > > Amean | 234 | 86.0853 | 86.5653 | ( -0.56%) | > > > Amean | 265 | 97.9203 | 98.4617 | ( -0.55%) | > > > Amean | 296 | 108.6243 | 109.8770 | ( -1.15%) | > > +-------+-----+----------+----------+-----------+ > > > > 2) On 160 CPUs with 64K Page size > > +-----------------+----------------+----------------+ > > > Total wastage in slub memory | > > +-----------------+----------------+----------------+ > > > | After Boot |After Hackbench | > > > Normal | 919 Kb | 1880 Kb | > > > With Patch | 807 Kb | 1684 Kb | > > > Wastage reduce | ~12% | ~10% | > > +-----------------+----------------+----------------+ > > > > +-----------------+----------------+----------------+ > > > Total slub memory | > > +-----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 1862592 | 3023744 | > > > With Patch | 1644416 | 2675776 | > > > Memory reduce | ~12% | ~11% | > > +-----------------+----------------+----------------+ > > > > hackbench-process-sockets > > +-------+-----+----------+----------+-----------+ > > > | Normal |With Patch| | > > +-------+-----+----------+----------+-----------+ > > > Amean | 1 | 1.2547 | 1.2677 | ( -1.04%) | > > > Amean | 4 | 1.5523 | 1.5783 | ( -1.67%) | > > > Amean | 7 | 2.4157 | 2.3883 | ( 1.13%) | > > > Amean | 12 | 3.9807 | 3.9793 | ( 0.03%) | > > > Amean | 21 | 6.9687 | 6.9703 | ( -0.02%) | > > > Amean | 30 | 10.1403 | 10.1297 | ( 0.11%) | > > > Amean | 48 | 16.7477 | 16.6893 | ( 0.35%) | > > > Amean | 79 | 27.9510 | 28.0463 | ( -0.34%) | > > > Amean | 110 | 39.6833 | 39.5687 | ( 0.29%) | > > > Amean | 141 | 51.5673 | 51.4477 | ( 0.23%) | > > > Amean | 172 | 62.9643 | 63.1647 | ( -0.32%) | > > > Amean | 203 | 74.6220 | 73.7900 | ( 1.11%) | > > > Amean | 234 | 85.1783 | 85.3420 | ( -0.19%) | > > > Amean | 265 | 96.6627 | 96.7903 | ( -0.13%) | > > > Amean | 296 | 108.2543 | 108.2253 | ( 0.03%) | > > +-------+-----+----------+----------+-----------+ > > > > 3) On 16 CPUs with 4K Page size > > +-----------------+----------------+------------------+ > > > Total wastage in slub memory | > > +-----------------+----------------+------------------+ > > > | After Boot | After Hackbench | > > > Normal | 491 Kb | 727 Kb | > > > With Patch | 483 Kb | 670 Kb | > > > Wastage reduce | ~1% | ~8% | > > +-----------------+----------------+------------------+ > > > > +-----------------+----------------+----------------+ > > > Total slub memory | > > +-----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 105340 | 153116 | > > > With Patch | 103620 | 147412 | > > > Memory reduce | ~1.6% | ~4% | > > +-----------------+----------------+----------------+ > > > > hackbench-process-sockets > > +-------+-----+----------+----------+---------+ > > > | Normal |With Patch| | > > +-------+-----+----------+----------+---------+ > > > Amean | 1 | 1.0963 | 1.1070 | ( -0.97%) | > > > Amean | 4 | 3.7963) | 3.7957 | ( 0.02%) | > > > Amean | 7 | 6.5947) | 6.6017 | ( -0.11%) | > > > Amean | 12 | 11.1993) | 11.1730 | ( 0.24%) | > > > Amean | 21 | 19.4097) | 19.3647 | ( 0.23%) | > > > Amean | 30 | 27.7023) | 27.6040 | ( 0.35%) | > > > Amean | 48 | 44.1287) | 43.9630 | ( 0.38%) | > > > Amean | 64 | 58.8147) | 58.5753 | ( 0.41%) | > > +-------+----+---------+----------+-----------+ > > > > 4) On 16 CPUs with 64K Page size > > +----------------+----------------+----------------+ > > > Total wastage in slub memory | > > +----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 194 Kb | 349 Kb | > > > With Patch | 191 Kb | 344 Kb | > > > Wastage reduce | ~1% | ~1% | > > +----------------+----------------+----------------+ > > > > +-----------------+----------------+----------------+ > > > Total slub memory | > > +-----------------+----------------+----------------+ > > > | After Boot | After Hackbench| > > > Normal | 330304 | 472960 | > > > With Patch | 319808 | 458944 | > > > Memory reduce | ~3% | ~3% | > > +-----------------+----------------+----------------+ > > > > hackbench-process-sockets > > +-------+-----+----------+----------+---------+ > > > | Normal |With Patch| | > > +-------+----+----------+----------+----------+ > > > Amean | 1 | 1.9030 | 1.8967 | ( 0.33%) | > > > Amean | 4 | 7.2117 | 7.1283 | ( 1.16%) | > > > Amean | 7 | 12.5247 | 12.3460 | ( 1.43%) | > > > Amean | 12 | 21.7157 | 21.4753 | ( 1.11%) | > > > Amean | 21 | 38.2693 | 37.6670 | ( 1.57%) | > > > Amean | 30 | 54.5930 | 53.8657 | ( 1.33%) | > > > Amean | 48 | 87.6700 | 86.3690 | ( 1.48%) | > > > Amean | 64 | 117.1227 | 115.4893 | ( 1.39%) | > > +-------+----+----------+----------+----------+ > > > > Signed-off-by: Jay Patel > > --- > > mm/slub.c | 52 +++++++++++++++++++++++++------------------------ > > --- > > 1 file changed, 25 insertions(+), 27 deletions(-) > > > > diff --git a/mm/slub.c b/mm/slub.c > > index c87628cd8a9a..0a1090c528da 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -4058,7 +4058,7 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); > > */ > > static unsigned int slub_min_order; > > static unsigned int slub_max_order = > > - IS_ENABLED(CONFIG_SLUB_TINY) ? 1 : PAGE_ALLOC_COSTLY_ORDER; > > + IS_ENABLED(CONFIG_SLUB_TINY) ? 1 : 2; > > static unsigned int slub_min_objects; > > > > /* > > @@ -4087,11 +4087,10 @@ static unsigned int slub_min_objects; > > * the smallest order which will fit the object. > > */ > > static inline unsigned int calc_slab_order(unsigned int size, > > - unsigned int min_objects, unsigned int max_order, > > - unsigned int fract_leftover) > > + unsigned int min_objects, unsigned int max_order) > > { > > unsigned int min_order = slub_min_order; > > - unsigned int order; > > + unsigned int order, min_wastage = size, min_wastage_order = > > MAX_ORDER+1; > > > > if (order_objects(min_order, size) > MAX_OBJS_PER_PAGE) > > return get_order(size * MAX_OBJS_PER_PAGE) - 1; > > @@ -4104,11 +4103,17 @@ static inline unsigned int > > calc_slab_order(unsigned int size, > > > > rem = slab_size % size; > > > > - if (rem <= slab_size / fract_leftover) > > - break; > > + if (rem < min_wastage) { > > + min_wastage = rem; > > + min_wastage_order = order; > > + } > > } > > > > - return order; > > + if (min_wastage_order <= slub_max_order) > > + return min_wastage_order; > > + else > > + return order; > > + > > } > > > > static inline int calculate_order(unsigned int size) > > @@ -4142,35 +4147,28 @@ static inline int calculate_order(unsigned > > int size) > > nr_cpus = nr_cpu_ids; > > min_objects = 4 * (fls(nr_cpus) + 1); > > } > > + > > + if ((min_objects * size) > (PAGE_SIZE << > > PAGE_ALLOC_COSTLY_ORDER)) > > + return PAGE_ALLOC_COSTLY_ORDER; > > + > > + if ((min_objects * size) <= PAGE_SIZE) > > + return slub_min_order; > > + > > max_objects = order_objects(slub_max_order, size); > > min_objects = min(min_objects, max_objects); > > > > - while (min_objects > 1) { > > - unsigned int fraction; > > - > > - fraction = 16; > > - while (fraction >= 4) { > > - order = calc_slab_order(size, min_objects, > > - slub_max_order, fraction); > > - if (order <= slub_max_order) > > - return order; > > - fraction /= 2; > > - } > > + while (min_objects >= 1) { > > + order = calc_slab_order(size, min_objects, > > + slub_max_order); > > + if (order <= slub_max_order) > > + return order; > > min_objects--; > > } > > > > - /* > > - * We were unable to place multiple objects in a slab. Now > > - * lets see if we can place a single object there. > > - */ > > - order = calc_slab_order(size, 1, slub_max_order, 1); > > - if (order <= slub_max_order) > > - return order; > > - > > /* > > * Doh this slab cannot be placed using slub_max_order. > > */ > > - order = calc_slab_order(size, 1, MAX_ORDER, 1); > > + order = calc_slab_order(size, 1, MAX_ORDER); > > if (order <= MAX_ORDER) > > return order; > > return -ENOSYS; > > -- > > 2.39.1 > > > >