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 3D33FC369B2 for ; Thu, 17 Apr 2025 16:19:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3482F6B0296; Thu, 17 Apr 2025 12:19:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2F6B16B0297; Thu, 17 Apr 2025 12:19:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 197AD6B0298; Thu, 17 Apr 2025 12:19:04 -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 EBFE56B0296 for ; Thu, 17 Apr 2025 12:19:03 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 4BE9CB41CC for ; Thu, 17 Apr 2025 16:19:04 +0000 (UTC) X-FDA: 83344045008.27.CD67755 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by imf06.hostedemail.com (Postfix) with ESMTP id 4A2BB180006 for ; Thu, 17 Apr 2025 16:19:02 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dpQqKj1T; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=urezki@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744906742; a=rsa-sha256; cv=none; b=8IPJxAU4DhfvXe0d3vjYlv5bKJzu8sCBKL3WI0uaQN7u6mvNBct6gALmvkMqFAzpBGIrQX DiQyRWPYdNr3Ndk8bfrvBA5uPHFoA+61Yx9Y1+E3Y4JHKoJkR8uyEHUE598F1BnrbmYEKS lu4trlV3LM7v0ScURmmZ/JsSd2CK8XE= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dpQqKj1T; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=urezki@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744906742; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vPskhcbl5jGXpRpm5GOfbaOmkWsPfCLOp03oVIAJ7es=; b=SPQHeG9KtpQ0xxkREr22ifGJ6M5vVUdFHsMK9kLOXhW2WDVoJ6F7d3EQ4e2YuASqkmarRm OCTMfDn6JsTlp+k5XLoX2uEdtGPuVPaZ/33wB/VWNmlQcMXPQKTegMbshrks67oZjeKffC 31aOPmP5xKZ9iqH2/dvuc9pY/R5mF4U= Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-5498d2a8b89so1025202e87.1 for ; Thu, 17 Apr 2025 09:19:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744906741; x=1745511541; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=vPskhcbl5jGXpRpm5GOfbaOmkWsPfCLOp03oVIAJ7es=; b=dpQqKj1TjdX6DeAzaSzaXMl5D/mPoeaGEyfKwD1j47Fj/PPeSoWipTYwCfZYeYqgXm j84zmez8E+2s0LzKm2AWb/W3Fv+9UL2ITPKMRVo8uan3D34OHpm0l/JmM2h07vx5Itah ranQSPf36d6APrP9DxjI3JuAIpt52OPwo3ly+RJFhP56iFtlAuzsEtsCTz74EXd4uGgw Q1m6BxQwoS2/997KkWyU8XvXgAP43QVY+tKLXWIAdVkIUNxw7/aeyu4hQEgndGplgN91 DKafuYgG6S4wHH6Euho3Dmoq0BRhBxmwyzCtkrsGERDxHuPRR3IXEmK5g8cYav1kwgXm WfpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744906741; x=1745511541; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vPskhcbl5jGXpRpm5GOfbaOmkWsPfCLOp03oVIAJ7es=; b=YqBGNEqc4SjlSWHA+HH4hjK/ctmLBdH2MxMTK9iO+Tz4D2KvrW+2yvBx9/cTMGqlei FOJx2msXkQ92eBt75PK+gJjs3CzrPcR2dZglW44rcpouwd3VR8HxlfQdMx2eWkiWFre7 rbqUaCeUttHk47TNbh0Ud9YHgXrIV7s3ty8SjLehEpKSON1KGOBKtYJVKiBlnw4Shz92 BvlL04NtQatX9IJSuvlR1iWFH69m7X0Fjgi6nFrGtbWkGW3aFQYDX8Gs13qOg86cMS2F xweF0rM/5PmB7VoyC8OLhIsyfCzJ3w0DdCiayIQgcTPbxKj6tD6etotiJBEWkxnBeRRp +5wA== X-Forwarded-Encrypted: i=1; AJvYcCXs+3OnrByQyc2oQEg2tvrdI/PKK2f6gpRIjjJ00sEojvrS1jYOhhMCzpalj+s7uClie2kUAf+ddw==@kvack.org X-Gm-Message-State: AOJu0Yx8/zxXWuCePIRIezk3/U8qhhO7DIGlQQQ7pcmfrFf9CEoS5IbO feWjDypewVuFPCgjxbr2MRpQTC8w6V+waOIPKLGF9z5EPtwusZQ8 X-Gm-Gg: ASbGncsd+AtBkduWgwrpEKZdKbwtgcbIEYI99qtPcfcHWkj3cEASqdCr2Rlz97AzyIO DC9RDwMqI8dAsKX77eij83bDbIIFxkRAQTiNKBSeVt+nb3oCx3bHXZSjkpRRdjuK9fGSieuU4Y6 skygB7V33RUKz+nV/9o5IYxlCFRRGMazF6YUcz/N8veb0u/T5h7kbOOK+svsHEunJIrotVjHzIb ys5ZDdLJaR72/FnGUW84Av7WVQavFVDpIcd7KSjYdJeEB1g8mbTYRE9U2p+7q9aKmpDDdmj/kgM iII/d0J2DIgBhZ53jJ8fCapgQzz5tT8XP3l6wk6huXhHaRSKDlztCpHmeCEtF/GUZosv X-Google-Smtp-Source: AGHT+IHkOvyZf2qj6Whva3DMKWIH3m5oml5dy5H2yOOMPZAj11xW+Y1vBMQgJXjGLZrXAoH4U3M4aQ== X-Received: by 2002:a05:6512:3da3:b0:542:28b4:23ad with SMTP id 2adb3069b0e04-54d64a9c1a5mr2252831e87.16.1744906740308; Thu, 17 Apr 2025 09:19:00 -0700 (PDT) Received: from pc636 (host-90-233-217-52.mobileonline.telia.com. [90.233.217.52]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d6dfa2e7csm2210e87.190.2025.04.17.09.18.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 09:18:59 -0700 (PDT) From: Uladzislau Rezki X-Google-Original-From: Uladzislau Rezki Date: Thu, 17 Apr 2025 18:18:57 +0200 To: Baoquan He Cc: Uladzislau Rezki , linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] mm/vmalloc.c: optimize code in decay_va_pool_node() a little bit Message-ID: References: <20250415023952.27850-1-bhe@redhat.com> <20250415023952.27850-4-bhe@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 4A2BB180006 X-Stat-Signature: jtxko9nqmthc9unsfzhwz5sz33pknukb X-Rspam-User: X-HE-Tag: 1744906742-609066 X-HE-Meta: U2FsdGVkX18CRV8JIp9R78dvB6FXgS+RtoB7Wr7n6C2b04QZTsud4lVuNAZMDnuHr3tgaCYKA+T5HcTN5KjMUZLlHkzDBHIkDHvMNPGVs1T6n4ntpaxCzZ54l/92M6JFXT75zhJMIAWo++QJW7BKSRiwdlfBeVOhBWA7k00tXkfAZUdASsXPp4gdV8vm4OQ6RK9fcen/oY3+0Gn8k0NpxH7Sm9KsnO5IjKm2JCQ0O0ygGInQYUa6Pc6cbZsyo1YdS5cIlEviffjlk3d2McmJyq95/SmOrUUy/uJUTC4AjTxpn023GzTrfU41EmUPN3JOPxpNseIAiywJMiX1V9FDIfeSjW9O3zKmNXATJTb1D6FvRconI7N/YxqF62zqbgSOOrgKUWMvSq7/kZEW8TBIulVr8wCI2j5UNbio7l/W7Ugu+lAlPMPx9AHF+msKNK1gGcW3OvsnwqCBz/FrUz7FVvfHi56vGGMHaBzLE/KsQ1lCS13gX+P4G+zKyMbFPvHCgUWwTDBOUcrnsMv9JWSGUOsvDP6yOzY3pS2JJbV8cjiTWgUzEXZZ0m/OHPVLtYM54fZ8CviEzGdXOuyc9E/6RnQeVyJDl7NyGeY1Ompkz4xn4l4KzBjjyA4Z2o4AdSjIpurpVDfSw3IjaYVYouxtemwIhwlZU6H4kRcI4DSv6cR2kjOPCZah5na9H0TJgHxkCYbGa5mfui8rS1P27f003+nCT6kyAlOfbUkh+55+6wt9zh+yVpReWwaw0u0+rXnLE+3tLBlxcRJJ2suo1Rig0UFml2aydKCEiDNe2vnviJBUo6kJ2FwixyMfQU6EpPTTNH9vhEXCeMbxu3F+OqrJPFEws1fBRDluh67SWjXj+gB8lg7XHrr2iz+fMl0SBt/Ml/Xs1F3nFD1fatAc+N+9pNQP8Ld3loAZT8TDHsICFdLb7DRrZdduxoYkapKl41FE2uUnriYUDED+baQD/xK vFPV+6N2 CK5UyH8rTeKryw64JeivpzUbDQ13jPTtrMyMa1uUbGT0+64/INhAI2ScoqLOL/gB/7cB8zjTtiSTRkk2PsFIe2b+VwY1CVkpxTMRKpKKwKyZ60iHH8eGIpTEBQB4nUhiNJl7mrSGPwwu9MQT4zvpvf39EVwa1piDpAXuPX8Dv3kDrDX5GH11KDNfaXyRCjUt4OSuwFrrT8E933Sv40YascnOOtDcJHhcAVPFNS2X7Gc9u4dECBqhyr+ZZDcs2y7tjfcPHxZgIIhMXPgQlwCyE/Vio6jiWT7diMfByX4bBCaxKnu5SFqPmEk6CxYLsvaiw8Vhfg/epEJZk7YY4Fg7LnbkHWRrBZanntdfCw7r42EWreRlRkMobSV7fHXUeqSxm1ditemKD4wUHWokzbnd9/nmR9LesBxuvFxPkMEwKzRrUt7dgu6oCdeHiQnrvW+rNSQPRkqNZXvJDhgwXiEc7Wuf7zA== 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: List-Subscribe: List-Unsubscribe: On Thu, Apr 17, 2025 at 10:51:44AM +0800, Baoquan He wrote: > On 04/16/25 at 03:50pm, Uladzislau Rezki wrote: > > On Tue, Apr 15, 2025 at 10:39:50AM +0800, Baoquan He wrote: > > > When purge lazily freed vmap areas, VA stored in vn->pool[] will also be > > > taken away into free vmap tree partially or completely accordingly, that > > > is done in decay_va_pool_node(). When doing that, for each pool of node, > > > the whole list is detached from the pool for handling. At this time, > > > that pool is empty. It's not necessary to update the pool size each time > > > when one VA is removed and addded into free vmap tree. > > > > > > Here change code to update the pool size when attaching the pool back. > > > > > > Signed-off-by: Baoquan He > > > --- > > > mm/vmalloc.c | 23 +++++++++++------------ > > > 1 file changed, 11 insertions(+), 12 deletions(-) > > > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > > index 488d69b56765..bf735c890878 100644 > > > --- a/mm/vmalloc.c > > > +++ b/mm/vmalloc.c > > > @@ -2150,7 +2150,7 @@ decay_va_pool_node(struct vmap_node *vn, bool full_decay) > > > LIST_HEAD(decay_list); > > > struct rb_root decay_root = RB_ROOT; > > > struct vmap_area *va, *nva; > > > - unsigned long n_decay; > > > + unsigned long n_decay, len; > > > int i; > > > > > > for (i = 0; i < MAX_VA_SIZE_PAGES; i++) { > > > @@ -2164,22 +2164,20 @@ decay_va_pool_node(struct vmap_node *vn, bool full_decay) > > > list_replace_init(&vn->pool[i].head, &tmp_list); > > > spin_unlock(&vn->pool_lock); > > > > > > - if (full_decay) > > > - WRITE_ONCE(vn->pool[i].len, 0); > > > + len = n_decay = vn->pool[i].len; > > > + WRITE_ONCE(vn->pool[i].len, 0); > > > > > > /* Decay a pool by ~25% out of left objects. */ > > > - n_decay = vn->pool[i].len >> 2; > > > + if (!full_decay) > > > + n_decay >>= 2; > > > + len -= n_decay; > > > > > > list_for_each_entry_safe(va, nva, &tmp_list, list) { > > > + if (!n_decay) > > > + break; > > > list_del_init(&va->list); > > > merge_or_add_vmap_area(va, &decay_root, &decay_list); > > > - > > > - if (!full_decay) { > > > - WRITE_ONCE(vn->pool[i].len, vn->pool[i].len - 1); > > > - > > > - if (!--n_decay) > > > - break; > > > - } > > > + n_decay--; > > > } > > > > > > /* > > > @@ -2188,9 +2186,10 @@ decay_va_pool_node(struct vmap_node *vn, bool full_decay) > > > * can populate the pool therefore a simple list replace > > > * operation takes place here. > > > */ > > > - if (!full_decay && !list_empty(&tmp_list)) { > > > + if (!list_empty(&tmp_list)) { > > > spin_lock(&vn->pool_lock); > > > list_replace_init(&tmp_list, &vn->pool[i].head); > > > + vn->pool[i].len = len; > > > spin_unlock(&vn->pool_lock); > > > } > > > } > > > -- > > > 2.41.0 > > > > > Which Linux version this patch is based on? I can not apply it. > > I can apply them on the latest mainline kernel, next/master and > mm-new branch of akpm/mm.git. I checked just now. > Sounds good. -- Uladzislau Rezki