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 38124CD68E3 for ; Tue, 10 Oct 2023 03:03:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89D098003D; Mon, 9 Oct 2023 23:03:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 84D2780027; Mon, 9 Oct 2023 23:03:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 73B578003D; Mon, 9 Oct 2023 23:03:49 -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 6495C80027 for ; Mon, 9 Oct 2023 23:03:49 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 35D5BB4CD0 for ; Tue, 10 Oct 2023 03:03:49 +0000 (UTC) X-FDA: 81328056978.20.0CB38A1 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by imf18.hostedemail.com (Postfix) with ESMTP id 955C01C0004 for ; Tue, 10 Oct 2023 03:03:46 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=K19mIfOw; spf=pass (imf18.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.173 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696907027; 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=MYJPot/yVsN2eIMJtsBswpwz3V3PaxdYOrydQnf75Uk=; b=rHqnMxLSYGdv0FkQRLhUDF7WdLRuzWc7+2FXW7DgUR9yxanzuF1E/XGHvZZE9/PkYDSLa5 p0Ji94KMixyTV+qeRtFut7r+4URhTRH15/BXTPIH3G5M5En7Iy51HgiXLaGiKsmEfBLfWx lK9+ogKbVwgKzwjj93BSXY7cKQsfVks= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696907027; a=rsa-sha256; cv=none; b=eP1NnQKM9HHLD9z033TAGdtB3PMNCvyqLvNF5UiknxP/2PcHJcG2CApsI5XsFcMOawQIgn zW/Fz0FvpNkMcAVB7KI9p7V5IiDsnfMq2MtPkpRu7cKXN+HTsGaq62AxVSeGQQQK3mnwE4 eP/UvNUfX6/HIyRLfxYuVZ3+8sK2Mmk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=K19mIfOw; spf=pass (imf18.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.173 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-69101022969so4584831b3a.3 for ; Mon, 09 Oct 2023 20:03:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1696907025; x=1697511825; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=MYJPot/yVsN2eIMJtsBswpwz3V3PaxdYOrydQnf75Uk=; b=K19mIfOw3agpb2eFOxEDw4jJoCF62blNsSyWrOmyWzf57OlYDvabDqNmK7vHMNuMAx 2xP95UmgFLsMeFdLNUYl8oDnlvByES9WE8aTXEEhkRxY6cH3W3XtA99mPMtcQHNfMOJH mBV0TGe8Bo/EiVEOnqZOVF78Q0Cw2i4k0Jb5fy+LwIw66tmZ3fg0UYkV7XFmYZbf+lJi r0H6EjHaolP+AO/Gz6FGa13BdcDBwUDnz8TwvCX5peXrHjIRqFyt9sk+zyCr5nn8wn4r fpJwGNp/NriypM/PreKN2Y+B9KaZpY18IYbF5wmiI7oUdRI7XL7cRQK0xZqSfjGX8Snp +YEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696907025; x=1697511825; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MYJPot/yVsN2eIMJtsBswpwz3V3PaxdYOrydQnf75Uk=; b=Y8Vxd5Bk95VBpv2lo6BsYY5liZLP6sodwFzbSUq+y44d4YEtgn3TJK5iB2xwmvGUlw BiBxWCBXKfD57GW1cJ74GvY6/Hvsf0gRA+e/5Ud6dpUxn6CkcHDQWnY8Mh9Wo6ZW01S1 8GOdmKG39Ljqj+UbY9YS1W6YkqXRRUmdn4TtRhNqZdBQNwmhclc0EaLOFr28sraPHUMI WN6Hi6TmARPsCZ3IHtYWf60JTzKys6EwceVW8bpk/2k3c4ZwiHCsPibLcEAvF8bf3duv mcfurHh7quopwnm8YIS3l1kpMTZl3j8MpYlET88qsm2MRsQaQyStm6LShwzjZA7lMZxX Qeug== X-Gm-Message-State: AOJu0YzCh3czzdi39Px9j21c7oPco/btMskMw9V7QJVfqOrUPOLMfaR+ 1sGgmi7aAuoTPm+hDwf0kMvT0A== X-Google-Smtp-Source: AGHT+IEbrzbEAva3M0ASlIUW/CtNVe+b9f8Xdj/DAyRa2sO6N+9VQiEKu5D+kuahjHNpAlDkb71Sjg== X-Received: by 2002:a05:6a21:8cc5:b0:153:63b9:8bf9 with SMTP id ta5-20020a056a218cc500b0015363b98bf9mr17465286pzb.0.1696907025078; Mon, 09 Oct 2023 20:03:45 -0700 (PDT) Received: from [10.254.233.150] ([139.177.225.243]) by smtp.gmail.com with ESMTPSA id q4-20020a170902788400b001c611e9a5fdsm10343207pll.306.2023.10.09.20.03.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Oct 2023 20:03:44 -0700 (PDT) Message-ID: Date: Tue, 10 Oct 2023 11:03:39 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] maple_tree: use preallocations in mas_store_gfp() To: Sidhartha Kumar Cc: akpm@linux-foundation.org, willy@infradead.org, liam.howlett@oracle.com, zhangpeng.00@bytedance.com, linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, linux-mm@kvack.org References: <20231009201639.920512-1-sidhartha.kumar@oracle.com> <20231009201639.920512-3-sidhartha.kumar@oracle.com> From: Peng Zhang In-Reply-To: <20231009201639.920512-3-sidhartha.kumar@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 955C01C0004 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 6u4ka4z8sn5mret1mzfz89w5ix8k8j5z X-HE-Tag: 1696907026-203175 X-HE-Meta: U2FsdGVkX19bjypBHLNxXHTwLYqYyQR1pcMn1YyNpF7CEsbhfeZC5kdEGUtLT/QQhAn5RosafFW/FenHUIuTP8JQEI1VLt7KQqh6VUo7AWHW+bahCszVs3q+AK8nU1tC0LPoyo3O7W3UXGbftqc3Yr4r+nBDJEIXaj7iq3w3rwPeIjeS6D3S/blXxsfX63PBXwNyfTkD9RFqevMus7Cw7qwlnSUzc3wwURO4U1bETHu88lGPor71uzrP1dR4/bfNLmmjL5IoWsDEDsOe/cgtfRWLG+MLLhq9vY0ozZZlR8cMUKxo3DrE+xsFHQuDwGzvj/SjdhOyVv2ZaUfWd2m2tGlUzY742/cGF4gO5Y9XZ9qIMgdp2RxG3ANQVno/gsvDV26sH6NxXCe2FdrGQWOLmRq49lyzLbk5zA1dDuLFJVS7je/jDhrw91/1An4amp1zlMirZrVg3FTnf8lrMJBqr/8L2zo32c2hA87SBByOjbmga9DZD78fxXi1+8PEqcwK1VhtpYc4CUkrRNfZidZhdxwklGn4F6wqVYkU0guBdfW0AEF7jpjM3fXnXrDl9DvNRk6bgHC0DcZK+tVei+gggjphnhRA0FE9IcdL2VWtHBwBQZzob/Rh6BT6iy1UzFfz3qEhtn6MZGSDlm7jWl4MrosDNxkqzzpQYTd2XHbS1IIZaeTzsxxhcUAt3RjT+FM7hAJeGHMbAdzSgDIQ6sJKEnYccVpnsZJqSMDO7FXTSpFX4Xa9mpaCWDyU5KcWmYnRmeUFR4uLpoHzQ+T3SuzNNiilFoRy5noJRwiTZ9PZnrJuybpTJZC5Y8jSwYGubKmyngJugdu75Pw73m1ILRXs2RzuGnvf8hdFVIcXIrZpz9zKY1aE5aPm0MpdjTHFEZGJ+hP+at7/YIZbR52qdjs446ZCJX3Xgyt7mQMqNPody1yEw81mJo7rSC8JZN/j2Iqq/N52lQxFAjlpdZ4Ux0J R4AXoALS pajhbQlt02ecJKsiWq40Of6yefRllm33znNMwt/mASYvZxeNy0kv+nwYRrap4Q5/jLXS+2Ei+RSJqtI7hanHyLqtOUU9HXdaxMiCHw6Wa+wuH8kYigkH/xODnhbvdXtPwM8iD/IcufWHV+hG/xqRKU+z/B/qpOxDGAT9uy2DLlN2VVhN5mFpQ/Nz1p1+AVtPlr/qDWoLILG81XcjqCamxjJVbZjIFAzycC/uTiO+s8oGWWFz78tBg+3q9Tn8R3SuNV9KVgACSzAB+bUtQIY23qiLD5MBCJFeSwGaO1xW/dtAzhC23QFxGx4WSlTsHJVnwO82VkxsXXSUAscHJVtim2d1XZylaZNYXkCa0+EUh5pHTu3xEHy5uxDm1Sk4YWoi38B8F0ukvupJJMR5oJb5jvs9p05vPtZrrLzb4ojvEEgwpH8+jgowTbZ8CmgHlMOQfLNuiApkAgDrlsUMwDF191M5QFOGzz02kPGgO 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: Hi, 在 2023/10/10 04:16, Sidhartha Kumar 写道: > Preallocate maple nodes before call to mas_wr_store_entry(). If a new > node is not needed, go directly to mas_wr_store_entry(), otherwise > allocate the needed nodes and set the MA_STATE_PREALLOC flag. > > Signed-off-by: Sidhartha Kumar > --- > lib/maple_tree.c | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index e239197a57fc..25ae66e585f4 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -5478,17 +5478,33 @@ int mas_prealloc_calc(struct ma_wr_state *wr_mas) > int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp) > { > MA_WR_STATE(wr_mas, mas, entry); > + int request; > > mas_wr_store_setup(&wr_mas); > - trace_ma_write(__func__, mas, 0, entry); > -retry: > + wr_mas.content = mas_start(mas); > + > + request = mas_prealloc_calc(&wr_mas); mas_wr_store_entry() does something similar to mas_prealloc_calc(). Now, making it do it twice would incur additional overhead. We encountered this issue while optimizing preallocation, but it hasn't been resolved yet. Previously, this problem only occurred when using mas_preallocate(). Now, this change would bring this impact to all write operations on maple tree. What do you think about it? Thanks, Peng > + if (!request) > + goto store_entry; > + > + mas_node_count_gfp(mas, request, gfp); > + if (unlikely(mas_is_err(mas))) { > + mas_set_alloc_req(mas, 0); > + mas_destroy(mas); > + mas_reset(mas); > + return xa_err(mas->node); > + } > + mas->mas_flags |= MA_STATE_PREALLOC; > + > +store_entry: > mas_wr_store_entry(&wr_mas); > if (unlikely(mas_nomem(mas, gfp))) > - goto retry; > + goto store_entry; > > if (unlikely(mas_is_err(mas))) > return xa_err(mas->node); > > + trace_ma_write(__func__, mas, 0, entry); > return 0; > } > EXPORT_SYMBOL_GPL(mas_store_gfp);