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 3E736C05027 for ; Thu, 9 Feb 2023 08:44:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE11E6B0072; Thu, 9 Feb 2023 03:44:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B902E6B0074; Thu, 9 Feb 2023 03:44:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A7F036B0075; Thu, 9 Feb 2023 03:44:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8917D6B0072 for ; Thu, 9 Feb 2023 03:44:13 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 3F38880217 for ; Thu, 9 Feb 2023 08:44:13 +0000 (UTC) X-FDA: 80447116386.11.609B628 Received: from out-5.mta1.migadu.com (out-5.mta1.migadu.com [95.215.58.5]) by imf09.hostedemail.com (Postfix) with ESMTP id 105AB140013 for ; Thu, 9 Feb 2023 08:44:10 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WwQGh7T9; spf=pass (imf09.hostedemail.com: domain of yajun.deng@linux.dev designates 95.215.58.5 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675932251; 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=X09NlSnlCqOFDHRmNIUla4/Fdrekk7b5KqSyYEpqWl8=; b=eJ+cV+qoOjXRnkNrwTL3+4Npn9A4f6Nr35acJgNRNwgkt5zS2BbNocWNEW8LOVWWCXjDnA 0jJG4FNPR511tsIyz183BjCiMSuDbdQZM9NN9pQOPUT2ARKGr47k+f04Qzf83hTPJh0MUp gmyzXbI9+OCcExZSLq5Y8spCO8jFWkw= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WwQGh7T9; spf=pass (imf09.hostedemail.com: domain of yajun.deng@linux.dev designates 95.215.58.5 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675932251; a=rsa-sha256; cv=none; b=MSxQVjgJYlS3YcRo9GzvvLX6Do/qnVv9WO9XskE6iUJPkNmxjANSg6hgtr66SKjkSlNust JGTFbxToUzNOLYyVH9WxyZnIwYvdCTqWmhE+oBOHj8xsoGwHlXWP0nQQqjbtHrktaahBtw Z86SxC7uDKREG6rdJPnGkwjFr/f3mHs= MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1675932248; 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=X09NlSnlCqOFDHRmNIUla4/Fdrekk7b5KqSyYEpqWl8=; b=WwQGh7T9xxTDhr9W788ubHBHcdXgYY7Oqovq8/c9trbzG6OndR+u8qbMNc2OFhttbkT/m/ 8eKX8QOVMyAemHWbNxTIPeSlxVP293Ju4CqdYN6UvsEDMe1M2QSS82HQ3BgUhyz6BKXCfe izEKhVRlxFKMICPZA45aYQo1YX9IJkA= Date: Thu, 09 Feb 2023 08:44:02 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: "Yajun Deng" Message-ID: <7cc548bc6be5f84e1fb9c6cac07b7451@linux.dev> Subject: Re: [PATCH] mm/page_alloc: optimize the loop in find_suitable_fallback() To: "Vlastimil Babka" , akpm@linux-foundation.org Cc: ziy@nvidia.com, mgorman@techsingularity.net, david@redhat.com, rppt@linux.ibm.com, osalvador@suse.de, rppt@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org In-Reply-To: <362e1270-8a54-36f5-f7c0-d922b3d12860@suse.cz> References: <362e1270-8a54-36f5-f7c0-d922b3d12860@suse.cz> <20230209024435.3392916-1-yajun.deng@linux.dev> X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 105AB140013 X-Stat-Signature: 8eq8tp74e64xgkw9ejkx8pj1j5jitneo X-HE-Tag: 1675932250-717222 X-HE-Meta: U2FsdGVkX18CRg0w9hBAM4tFapdu12wSOO7NNDcvp5EkcP4nrNodltF8lNZMukkCKqEZ4Qik+Ghom+elEL4L1ppF8ySX++HbQC31rMghzyO+oh5nnsxc4KgOCbGJyUuurvQLFwJvmBIQQ75vdJjiX5yZL985QAyydbTWBejDpQe0SX1opi3w6wRtZCkcvuAokRQ9pC6xKv+VYgxT5Y361TwMeM53AsRZ6Hplcv3KxYZnuwnuKHruzPClYVLJlckjDez4rvWeiN30va1pt9HMez+XgEhOUn6gHqFLZ3A24jh1FUFAnn1YPAMfS3RZuogGHgCaf+9b/vRmM98PbATv0ngMYEH+XLPrztwduvL1EpyYzPSszHHUhlDELtLSNmTrVWCziTNuBwxrkgI+BVj6W/VU4SNtuQ81sErr6cm3iai+F9rQIDXywlPLYU2+FEXHENdhBDHD9Hbgy79GkEaonTk9MnV/xV0NN88gInHVR1GdHrTCvx14JHE4lPiM838WGllZ8y3sM5NPD0rV5YYERmupcO6QZuJ33m9fYj/9kSHZqdiSSkMuw/XPHwot9LFsIRP9x66lkWPCB5UznXFklMFTDJqUCgY0njYiT8xQdaNMEqqGbqxN1zlmZnbmlZCV/6psqu3/1K0If4DTpZZ2gJZ2NZEuYMZs2jBrexqttLsGIvI7f2CUDYRh29XFvFw81UR7k8w354ruDyggHhAxXgluiioOGC3O+vFZeUwtTaIvSTrS7FPn6HX5zZXDX6n2ny64izTh1oz8kAOHiH3RWC6v5IuoQwjBSWnqI36MsLDyCSkESB6cEJgpkJ+Rc44JbDfSlEBHDMZHGUjymJYGOdV1GxAQeuV4CH25cr4cKy20sNrwIfVCpW9QxOcH7HE+Kd7xrksLYdDIZd+MvNKf5GbK+5VGX+iSqzG9TFC0i/vv9lvqvZwwdZ+drpCX+p1+4JA+P8HRKXOlYi3xLzd QF7BHGbK WOvQpKCQBHmtCBzwi+FTDFsNkCms+T9gYL5fhDHuWlyLSAjlIyH2subkRf0USAs3+XwDmw3xND8UhKMhanhMPMO1nHt8c7nv4YSIUcNRXHI97+aat011XVNMpKyk9D1PHCfN2exH4P9WIFuo= 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: February 9, 2023 4:12 PM, "Vlastimil Babka" wrote:=0A=0A= > On 2/9/23 03:44, Yajun Deng wrote:=0A> =0A>> There is no need to execut= e the next loop if it not return in the first=0A>> loop. So add a break a= t the end of the loop.=0A>> =0A>> There are only three rows in fallbacks,= so reduce the first index size=0A>> from MIGRATE_TYPES to MIGRATE_PCPTYP= ES.=0A>> =0A>> Signed-off-by: Yajun Deng =0A> =0A> = Acked-by: Vlastimil Babka =0A> =0A>> ---=0A>> mm/page_all= oc.c | 11 +++++------=0A>> 1 file changed, 5 insertions(+), 6 deletions(-= )=0A>> =0A>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c=0A>> index 11= 13483fa6c5..536e8d838fb5 100644=0A>> --- a/mm/page_alloc.c=0A>> +++ b/mm/= page_alloc.c=0A>> @@ -2603,7 +2603,7 @@ struct page *__rmqueue_smallest(s= truct zone *zone, unsigned int order,=0A>> *=0A>> * The other migratetype= s do not have fallbacks.=0A>> */=0A>> -static int fallbacks[MIGRATE_TYPES= ][MIGRATE_PCPTYPES - 1] =3D {=0A>> +static int fallbacks[MIGRATE_PCPTYPES= ][MIGRATE_PCPTYPES - 1] =3D {=0A>> [MIGRATE_UNMOVABLE] =3D { MIGRATE_RECL= AIMABLE, MIGRATE_MOVABLE },=0A>> [MIGRATE_MOVABLE] =3D { MIGRATE_RECLAIMA= BLE, MIGRATE_UNMOVABLE },=0A>> [MIGRATE_RECLAIMABLE] =3D { MIGRATE_UNMOVA= BLE, MIGRATE_MOVABLE },=0A>> @@ -2861,7 +2861,7 @@ int find_suitable_fall= back(struct free_area *area, unsigned int order,=0A>> int i;=0A>> int fal= lback_mt;=0A>> =0A>> - if (area->nr_free =3D=3D 0)=0A>> + if (area->nr_fr= ee =3D=3D 0 || !migratetype_is_mergeable(migratetype))=0A> =0A> Just curi= ous, did you the check for extra safety or did you find (by running=0A> o= r code inspection) that this can be indeed called with a non-mergeable=0A= > migratetype, and cause out of bounds access of the shrinked fallbacks a= rray?=0A> =0A=0ANo, I'm not sure if it is called with a non-mergeable mig= ratetype.=0AIt is just for extra safety.=0A=0A> BTW, I noticed the commme= nt on migratetype_is_mergeable() contains:=0A> =0A> "See fallbacks[MIGRAT= E_TYPES][3] in page_alloc.c. "=0A> =0A> Should probably change it to e.g.= "See fallbacks[][] array ..." so we don't=0A> have to keep it in exact s= ync...=0A> =0A=0AYes, this comment should be changed.=0ASo do I need to s= ubmit a v2 patch?=0A=0A>> return -1;=0A>> =0A>> *can_steal =3D false;=0A>= > @@ -2873,11 +2873,10 @@ int find_suitable_fallback(struct free_area *ar= ea, unsigned int order,=0A>> if (can_steal_fallback(order, migratetype))= =0A>> *can_steal =3D true;=0A>> =0A>> - if (!only_stealable)=0A>> - retur= n fallback_mt;=0A>> -=0A>> - if (*can_steal)=0A>> + if (!only_stealable |= | *can_steal)=0A>> return fallback_mt;=0A>> + else=0A>> + break;=0A>> }= =0A>> =0A>> return -1;