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 D3828C25B75 for ; Sat, 1 Jun 2024 02:38:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 646086B00A1; Fri, 31 May 2024 22:38:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F6636B00A2; Fri, 31 May 2024 22:38:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4BCAA6B00A3; Fri, 31 May 2024 22:38:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2EE7F6B00A1 for ; Fri, 31 May 2024 22:38:02 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id A81831A09E4 for ; Sat, 1 Jun 2024 02:38:01 +0000 (UTC) X-FDA: 82180759962.26.BD396B2 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by imf23.hostedemail.com (Postfix) with ESMTP id F2FDF140013 for ; Sat, 1 Jun 2024 02:37:59 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=G0xlhO4y; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of rgbi3307@gmail.com designates 209.85.216.43 as permitted sender) smtp.mailfrom=rgbi3307@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717209480; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references:dkim-signature; bh=eDNMabYW2abbHXnVWwFSqG9v75QNgOfpcXzt7NGTMHM=; b=bo7SYFGB8DS3gMv9JpNEKSeuaQP50BuKNP+8tLphjiQahFa4ZsPTpXX0zC+I3G9v7Yz2EP WvKtbWnGss6VBEkpFdTowSQseMnoouLH9ZMOsD8YTBEoDPkJk39AdflgeBkBYwwQlGdZdD 5dk7EVLFKHzyLWb379mtHC/jEAVPRZY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717209480; a=rsa-sha256; cv=none; b=jDBRd34L5OCcYdMiYVkwz2NcCHBsvLXDj2YCClwj6A2eRhbfei3S/RnetQAUK6nszKX6VQ wdKyI2iVDgUJb/JCpFUCJleoTaougGM5e7CqAKlsAjC2a3qkMF/fPx6yYdl5NWKnEZa3hZ LXXifLBO9GdFIAxuFCNENeHo1F5nnMk= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=G0xlhO4y; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of rgbi3307@gmail.com designates 209.85.216.43 as permitted sender) smtp.mailfrom=rgbi3307@gmail.com Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2c2015e9baeso108112a91.2 for ; Fri, 31 May 2024 19:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717209479; x=1717814279; darn=kvack.org; h=message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eDNMabYW2abbHXnVWwFSqG9v75QNgOfpcXzt7NGTMHM=; b=G0xlhO4ycucowvmS4oaaxqI509CiF6Bl5jAT6321eSg3W/2l/Kn98WmWGS9kU+8Fbi JJYPacpUQubrxuGeYzhMNgH+9fv8Q/D7PQSSdARZnk3GRX4wg+5htxdbV++HHYqO4eMd x5E/0QPxwdSIxalVb9/LcNFem6EDZbl9su5yx+mhYiwX5vPVx71fd5Of0VtqAw19kXbj EUwOewffR7J9LF3ITfolvOaVMjarf8nrpa3Vzefn87vuPBvNZgc4enOXDpaH5Rj29yQI WW8J1RHIazXjS/kptkWRO5Gp7ELTjee+c1Qh6c7VsYw0Lc+M0CkGwReROPgKENoqNmB7 1zCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717209479; x=1717814279; h=message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eDNMabYW2abbHXnVWwFSqG9v75QNgOfpcXzt7NGTMHM=; b=w/O5IMCQZlfBugoa3euivc9HblP2AYHxdHe1DaWKM+OlGkdg5touVRTuCsY9CKutMX 9WtSaPFGcD44C5ovNwkZ3mouob1ZKVq+CAZ6UKD7kxx/T/RIvh4XQpfLhUriPBCtCA8R /6WlIKu9h1i4R1MtIps3X1VZfOBw7bOmWNNdoeGM9r4tE0kocwdP2R4w1iKB2g9fLH/x apQHunXZi2OQD/9NMgYKUFS4oko0tdKhcxKZux4JEP3FnrXAB2AI3acZkk8rPuJo1sew gszFA3i0UBpCF7+6wXbL5RNnAngo590Uh7zpmw9Fjqn5dE/NkYUeIHNe3y4U3G894kAA 5LeQ== X-Forwarded-Encrypted: i=1; AJvYcCUBWFnEvuC9azI4u9NaIYXirA73KVR+iB4/iG7V4kd2F2FMCRyEk86A90AzREnJqQBJ4kGs1VyqQkKhAJZyZkfyv7c= X-Gm-Message-State: AOJu0YzvkkRo2ObKI+bDI564t4zgCpl9hQUe2rF8vk4TbySfYlLtEYZd kh5+h3Mss/oKM7qfGYGcYI3dR/8YYNvAhdLavRex07qsGqcczPz1 X-Google-Smtp-Source: AGHT+IH2wOZUIqhqnHNNRFHyANOJ24cAQXOX5kwZsG73ukdlpI/et6EBALcb1YP8OMfEowxVwr8O2w== X-Received: by 2002:a17:90b:19d2:b0:2c1:948b:6f2e with SMTP id 98e67ed59e1d1-2c1dc5d5698mr3162951a91.44.1717209478737; Fri, 31 May 2024 19:37:58 -0700 (PDT) Received: from localhost.localdomain ([180.69.210.41]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2c1c2831639sm2399858a91.35.2024.05.31.19.37.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 May 2024 19:37:58 -0700 (PDT) From: Jung-JaeJoon X-Google-Original-From: Jung-JaeJoon To: "Liam R. Howlett" Cc: Jung-JaeJoon , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH] maple_tree: add mas_node_count() before going to slow_path in mas_wr_modify() Date: Sat, 1 Jun 2024 11:37:14 +0900 Message-Id: <20240601023714.21226-1-rgbi3307@naver.com> X-Mailer: git-send-email 2.17.1 X-Stat-Signature: pjq7k1afioyur5z178tfus7re1anzk78 X-Rspamd-Queue-Id: F2FDF140013 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1717209479-845214 X-HE-Meta: U2FsdGVkX18ELDne4ojTvgbcSmjjeFZR0XABe6+6OWko/s0fFNVesnaAePWoW3NHP+eNLbGE+3UsxY5wpBKR3a7rWCtdb4nzKFhNbwG7LZV+XgaC9hD0XmwBImDXC+4Vmze3zwvQl+acMBKk2B4unJPsBGL0tGmvStp9aUXNA+tfeVj08wJs/IIaryWPs3pPbnv0BgTt4rbQwu+FmtJax7yJTivSmP7uS9VQ7atW8ERzMEK8hGH8AouxsVc4xUho362hE6Ss5zr44lgBaRxtWK9PRJiOvodiPZZ0fTEqNbG7+1Q/Pw2l42OqSqlhY7PqMLWbRZbUhj70XkGGjwuAcVCVVPrckoeiB5jsOzHihHwbdUDy8rNX0Qove6H2r109lLFDScd8/Fg5aIN46uaM7T05EqxJLjgqlRFkNMoQiYXnLbKNE2dbuZmQOfQbzCYPwJgpBzpXpMTDkLtIXLOVnLQQGYbHbjyPKK08UBismqhhlQVHlS/CIlz6sZGOpik63H9GQrOBRk41iJiT3efEPHLD9rs3JQxYupMlKPIzH/1DeQdyApfl0zB9Pw5tF74axOBPwcGOTWX3HQ2G5mzP1PehrvwNF0biBIx9QQtBcara0YokSO3kkdecEtA3tYn46EPiQnHPHc8shiuaITfbkHn7iZku38WCvjl/1CqquXkwzZjUU/wBkx4JRG3B+JLT39WQ+QOOlRb7YFjTO0aXNdkTOq2347xQzNF1ZyjMKGaa0EvQRIgl8QNe5jmUqfiVZYG6ZVSIY+iLNAGstMMFumjN0+Ug/PJlemNrgU/Y1IvDpNyxJEkovmv7uJ8JgPof4Gdu6YOr9OSld/54gwR3GNLeU3+tkMXtcDwh/z8LOVVOgKmaWcqr1JPeHHaWKvmtRi01MeTnm11ysQ6/nU9o2eMcR8ZkJJEWu1hMCaoFjP/HXQqqmlnx9YtMJ5Ko+OQbxYM0sLdy8yK6jfwcpNU 0hrXy/sH nz1nmZVtHUmEsLg6x/Hk/UdftZVvY5fbehNkz1l+JVOdHS7P19I/DAnctL421wm+2jSJirZs6SeE9I5a4+lLP2isQTEByiQhmlYs4UzkGZa4al212skJFcasTWSf8k10UWBAC5evgh6agzJgPJNhy/Xh5CvdvHamJ2PDRWr2qxaX6vienPg/Pb1rTejBIUoNi6SEhUGhxnuXOLhTFuoQIVOBIfuaMQySF7v49Iqj+KrZlaZbE8+1Bksdu+FeXUp/sVc+zYQvVIjYTWosQ0uGrVFp3jFcDh2TW7us6qDKuMF45M/5s4HhNqySvRjXp4/g7yaP832bQyZ3rtNSmNTuzz3zVpLgycBdZam8JP85kjuSXxpydw3dMsWU45ehLOv3YTLF5vA9C51WXpfsuz6Ox0NwYbg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.050507, 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: Jung-JaeJoon If there are not enough nodes, mas_node_count() set an error state via mas_set_err() and return control flow to the beginning. In the return flow, mas_nomem() checks the error status, allocates new nodes, and resumes execution again. In particular, if this happens in mas_split() in the slow_path section executed in mas_wr_modify(), unnecessary work is repeated, causing a slowdown in speed as below flow: _begin: mas_wr_modify() --> if (new_end >= mt_slots[wr_mas->type]) --> goto slow_path slow_path: --> mas_wr_bnode() --> mas_store_b_node() --> mas_commit_b_node() --> mas_split() --> mas_node_count() return to _begin But, in the above flow, if mas_node_count() is executed before entering slow_path, execution efficiency is improved by allocating nodes without entering slow_path repeatedly. Signed-off-by: JaeJoon Jung --- lib/maple_tree.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 2d7d27e6ae3c..b42a4e70d229 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4176,8 +4176,13 @@ static inline void mas_wr_modify(struct ma_wr_state *wr_mas) * path. */ new_end = mas_wr_new_end(wr_mas); - if (new_end >= mt_slots[wr_mas->type]) + if (new_end >= mt_slots[wr_mas->type]) } + mas->depth = mas_mt_height(mas); + mas_node_count(mas, 1 + mas->depth * 2); + if (mas_is_err(mas)) + return; goto slow_path; + } /* Attempt to append */ if (mas_wr_append(wr_mas, new_end)) -- 2.17.1