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 93E5CC05027 for ; Thu, 9 Feb 2023 08:12:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0AE1C6B0071; Thu, 9 Feb 2023 03:12:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 05EBB6B0072; Thu, 9 Feb 2023 03:12:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8F456B0074; Thu, 9 Feb 2023 03:12:35 -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 D873B6B0071 for ; Thu, 9 Feb 2023 03:12:35 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B0091140EBC for ; Thu, 9 Feb 2023 08:12:35 +0000 (UTC) X-FDA: 80447036670.11.4E06F03 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf12.hostedemail.com (Postfix) with ESMTP id 7C94540022 for ; Thu, 9 Feb 2023 08:12:33 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="YWx/8K6k"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=q7ceL1Pu; spf=pass (imf12.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675930353; a=rsa-sha256; cv=none; b=lVujfmpxhTrfaJTfYS/50IIrCTi79Eq6/58RBemWodBXTrzte2b2Qlw1FCgt1CTJkUO3kW y+9s1AGRAxWcZ68EBdIUhjqS5y65HKd+MQuNuaT+vFaZp21RtTcHFr/jrFVHD3UwHBeW4Z 7j4V5r/offxvnDycNchDbv9Z8o8QUXk= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="YWx/8K6k"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=q7ceL1Pu; spf=pass (imf12.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675930353; 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=pOVo2W/NrKuKki1TsxqsoW2omFPhUBOvX9kvZ0SIc4w=; b=mam3NoJdm4ymlxveN0Daka53u6zp/3NgxZ4dyVpVNRcXc+xV/s0PyuebUGL4RL+O5Ezy1a 9+fDYYCeAqvqgyPmEppFzEJyUehmpIsuJIedJ6inEI6ju7eaBjdXu3SKl1C9I6iR0nRsI0 eYIRM8S5ST42FKL7MH66som5ptMtlUU= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id CC4E734EE5; Thu, 9 Feb 2023 08:12:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1675930351; h=from:from:reply-to: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=pOVo2W/NrKuKki1TsxqsoW2omFPhUBOvX9kvZ0SIc4w=; b=YWx/8K6kZ0h5qgQKdGnFuV6lEJVMK7Ou+5EmOsVJhfangpU0zb5ZOEShdZ83CEJhUaHXM0 EUfGXy7u3fipxFBUzHyL+KjsjMt5Y6uheLEYfL+L/3cxmgqjxPXVWbc0IKS7hRSLYhGVVl TRx+GtyhkZ6gKJcg57VrIRefOGfpPsU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1675930351; h=from:from:reply-to: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=pOVo2W/NrKuKki1TsxqsoW2omFPhUBOvX9kvZ0SIc4w=; b=q7ceL1PukVH3r+Ckrs+gZxrPCZStjsv4ZBLzOU8R7MGur3l1ZvgN6PKUBVufHeCr4I2ywx 1GbZJZyhjtxe23CA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 9FB8713A1F; Thu, 9 Feb 2023 08:12:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id yGNCJu+q5GNADAAAMHmgww (envelope-from ); Thu, 09 Feb 2023 08:12:31 +0000 Message-ID: <362e1270-8a54-36f5-f7c0-d922b3d12860@suse.cz> Date: Thu, 9 Feb 2023 09:12:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH] mm/page_alloc: optimize the loop in find_suitable_fallback() To: Yajun Deng , 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 References: <20230209024435.3392916-1-yajun.deng@linux.dev> Content-Language: en-US From: Vlastimil Babka In-Reply-To: <20230209024435.3392916-1-yajun.deng@linux.dev> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 7C94540022 X-Rspamd-Server: rspam01 X-Stat-Signature: hgiorrrp3wug5m9456ka4hqsi598q6ps X-HE-Tag: 1675930353-427355 X-HE-Meta: U2FsdGVkX1/AC0oqtzpAchdp0MehyP81QfMyvCS3fzFRbMENSn9FB/pGEGjy1ddPrVF59FCCCPChJ0q1jZe5ZOjtYIXUA2hKmj7e2aKLFbQNBxBTdoDkTAI6Ah0pOvOwvgflxNP7Ct39jyYAKQd1ozKaenUb9EK/JsGnBMIEN2gWhWXoxyjH9/HYz/LwGAk9/h/VlFhx8gTEB1MpL1CkyNYZA8g+CP9b2RCM6MSZ+LZnm6yVM1VnpwtPphxdVWokKfhosQ+s6gmaAJzJTtf383OPPnaXz4xmYBALB8UAB3ipPee7VRgJ6nJi6Hx2ijVAwBpqNvgsh1YYHrfLcZ3Mb5xkiaI3QWxFe0kqPFfzV0XIQd42XOandBVbrBGNnNKofAmpozoL81pdeIi7E91iUR84eYhcVX3LsPKZcP1ftu7++KjM5IAMMwdAlfB9w699m8QytBQhPw2HmDO2t/2gNHbrK27Poc+BERGBY52JoECNeRbFEUsgS76xKi6NutHzDfU1dOR8L8EJo7VMzVgk/ygkrOOoYKgnLeGypwWGCGUirKdlhOdG1sBoRA0mZqgldWy/L9bFDr9D9OIQeKaC53LvFaAbWJOafpeNydvWzw0Xxq+b1a/ne0QYXodayR8o/OV0vlZZHCtaiax72W4hbMRjt8IBvI94BzM4lTHb9lBmY5YUpumB2auZjTZV1y8rA2kjs+3qer5lVBiyNGOknuNBSyfqtfjHooUfi+TZOKMpXIBmc2oa1sbiUvfK+G9Etr9PvUgwZ7wI0TtrIEUMVcwnPb7Ydp6sVKAwIY02TjrHUZw/8ImgPZl9lwy/MqU4PDoue0635Gr2GspZxK/1ZW0ry10jOuK45N70+vLpYRNY67Ja+kk1ExI+UwRDW6sIRMsoZS7nhf06sr6nNAGbdTz978taDTRL8+051XzxaaKv+HIjHg+p5Qr31fE35fB1aAG6yLxDV9MqaRBNsZz uJ9riw22 6BBQyv6D7mDCOU2R79LW6IY2Gj/bgMbDmP67h0AOU6ot3zNBlIsEZnM5KLFIJku8yi/MsRz/F555C01ByavUx/GVlGRopRZtRLn6ac/c/p8JrXFX99+CuRQS+0QQY4RtvEmbd/JY4GAekVBRWYihaPtGw05Vin1nbqnogN83lEEU8BhfzDX34bcWib2Y9fmX8AzVEwQGGxsavlRNHQ+wGaq8fpBkPLeyD3xiRjYfeH+/ezqBS+HKna33xyZFLrAyysQ+mTrUmi53OvpE= 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 2/9/23 03:44, Yajun Deng wrote: > There is no need to execute the next loop if it not return in the first > loop. So add a break at the end of the loop. > > There are only three rows in fallbacks, so reduce the first index size > from MIGRATE_TYPES to MIGRATE_PCPTYPES. > > Signed-off-by: Yajun Deng Acked-by: Vlastimil Babka > --- > mm/page_alloc.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 1113483fa6c5..536e8d838fb5 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2603,7 +2603,7 @@ struct page *__rmqueue_smallest(struct zone *zone, unsigned int order, > * > * The other migratetypes do not have fallbacks. > */ > -static int fallbacks[MIGRATE_TYPES][MIGRATE_PCPTYPES - 1] = { > +static int fallbacks[MIGRATE_PCPTYPES][MIGRATE_PCPTYPES - 1] = { > [MIGRATE_UNMOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE }, > [MIGRATE_MOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE }, > [MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE, MIGRATE_MOVABLE }, > @@ -2861,7 +2861,7 @@ int find_suitable_fallback(struct free_area *area, unsigned int order, > int i; > int fallback_mt; > > - if (area->nr_free == 0) > + if (area->nr_free == 0 || !migratetype_is_mergeable(migratetype)) Just curious, did you the check for extra safety or did you find (by running or code inspection) that this can be indeed called with a non-mergeable migratetype, and cause out of bounds access of the shrinked fallbacks array? BTW, I noticed the commment on migratetype_is_mergeable() contains: "See fallbacks[MIGRATE_TYPES][3] in page_alloc.c. " Should probably change it to e.g. "See fallbacks[][] array ..." so we don't have to keep it in exact sync... > return -1; > > *can_steal = false; > @@ -2873,11 +2873,10 @@ int find_suitable_fallback(struct free_area *area, unsigned int order, > if (can_steal_fallback(order, migratetype)) > *can_steal = true; > > - if (!only_stealable) > - return fallback_mt; > - > - if (*can_steal) > + if (!only_stealable || *can_steal) > return fallback_mt; > + else > + break; > } > > return -1;