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 58D19EEB580 for ; Mon, 11 Sep 2023 16:53:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BAED06B02B7; Mon, 11 Sep 2023 12:53:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B36786B02B9; Mon, 11 Sep 2023 12:53:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B05B6B02BA; Mon, 11 Sep 2023 12:53:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 843176B02B7 for ; Mon, 11 Sep 2023 12:53:53 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 56E3A1A04B0 for ; Mon, 11 Sep 2023 16:53:53 +0000 (UTC) X-FDA: 81224913546.12.A1F5839 Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) by imf16.hostedemail.com (Postfix) with ESMTP id 721A218001E for ; Mon, 11 Sep 2023 16:53:51 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aLH6qrRL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of urezki@gmail.com designates 209.85.208.177 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=1694451231; 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=5srutzo1BddM/TCc6OOu/CdzmFcQ83QZi+pAlNeBHaY=; b=1aTFZiYWeZ5iMKubOagBiCTvOtPjAs6ZhJpIDt2oKQaO8JUiEIzDEtv0Pqciv3XzLrHbLN PfV4BN3Nj72m+mFeabV9bHmq85pegyp7UTy9B/oxpVcnPm7ccVbeUfree+p41mV0VTRMQm BSzKUF9HlyzhdRxHjG+lvlyCeefjM4I= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aLH6qrRL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of urezki@gmail.com designates 209.85.208.177 as permitted sender) smtp.mailfrom=urezki@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694451231; a=rsa-sha256; cv=none; b=hvO7o0pr16qfAD6QwYFG0ZS4TnQoAiVUDyAyNpA7hcNhya2KZR89Jedj/uKGsIF8xbgG4d MbocUaecy6u1LdsB0Yf9l0RW9mx2J1qf8VL+HIvoMs5EcrpAvdF3i7LzGxQXWPVIpz74gu GNoUO/lww45G9X+T0tZ2Br1O7uMFIVk= Received: by mail-lj1-f177.google.com with SMTP id 38308e7fff4ca-2bf66a32f25so56303321fa.2 for ; Mon, 11 Sep 2023 09:53:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694451229; x=1695056029; 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=5srutzo1BddM/TCc6OOu/CdzmFcQ83QZi+pAlNeBHaY=; b=aLH6qrRLUu5Oa4tcM1TCeQDO9PoKRh5bY65gk9CenTJ4pENiPSkc7JVgAd3qUseIZE YuB/AHbcmCsuemCjHnKMGUp+qHesY/KBqmFSU6FM/5faTdRPBT+rK3CCURoN8FEJaBGC S2qiZKeOuhlTDuY91Iu5E174GqCPU16zwckSHeComb0dIi9ssb5LfWbn0MoUO8azAUeL hgNPW96OGMLIvETWqARabwyg0KyK1hqj2/qpTud5jlXqeBr25ulMtd7Uq+7OYa7K25hj MTGPF1yEyKeISEujJHrvmx0OhJCOpk20iPM3IQaaGW+XU81iapnd4+49kqJedxGOequk WTMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694451229; x=1695056029; 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=5srutzo1BddM/TCc6OOu/CdzmFcQ83QZi+pAlNeBHaY=; b=RW+myeN7penv57HOUGoXG9c7K0P357XUTSj8LvbwQE/GGq5rhpm9/3ivlnmYiv/MoS 5vELGBBFk2sBSYBWQxmBzScWg5R6NU2bV0d6IyqRzgwk8+4bDqkV5u0nCH8vRF1kupgk 1hNSSHEr6QSL6rjT88D0dayaAQNVtk2eJBkHUtXCJLEPBRUmt92pUzjRprxQ0WZB/lBm B4VNqjNU2CiDEr+i3h2Zv7aPB+tlbfyxAumh1yxnbCnqL9j43Zav5vqx7oHLddM+TJk4 hx8MoKiqvBvlBMQyQRAGmMZJ6LmnTK+UrLrrZpy2Ngec+CACWUpcHeQB11mDURQ98yus Q1Wg== X-Gm-Message-State: AOJu0YyyOEr3RYJGzz5xU6XHdAlSBrgx7newHwC+VLZECn7CTM+/1e1N BK5FTt4e8wRm5sOE+gWBRbk= X-Google-Smtp-Source: AGHT+IF5ie5+fR/y92Nbopcxkp0rBX3RA2X3/kgUn5aHdofrkbMm3oT0ubb25cM1f5j45OotNAJO3Q== X-Received: by 2002:a2e:8850:0:b0:2bc:c51d:daa1 with SMTP id z16-20020a2e8850000000b002bcc51ddaa1mr9532788ljj.39.1694451229108; Mon, 11 Sep 2023 09:53:49 -0700 (PDT) Received: from pc636 (host-90-235-20-237.mobileonline.telia.com. [90.235.20.237]) by smtp.gmail.com with ESMTPSA id p15-20020a2e9a8f000000b002b9f4f3e16dsm1604798lji.85.2023.09.11.09.53.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Sep 2023 09:53:48 -0700 (PDT) From: Uladzislau Rezki X-Google-Original-From: Uladzislau Rezki Date: Mon, 11 Sep 2023 18:53:45 +0200 To: Baoquan He Cc: "Uladzislau Rezki (Sony)" , linux-mm@kvack.org, Andrew Morton , LKML , Lorenzo Stoakes , Christoph Hellwig , Matthew Wilcox , "Liam R . Howlett" , Dave Chinner , "Paul E . McKenney" , Joel Fernandes , Oleksiy Avramchenko Subject: Re: [PATCH v2 4/9] mm: vmalloc: Remove global vmap_area_root rb-tree Message-ID: References: <20230829081142.3619-1-urezki@gmail.com> <20230829081142.3619-5-urezki@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Stat-Signature: itmhssqnn8y9obsza7jbzwxxup9p513t X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 721A218001E X-HE-Tag: 1694451231-362637 X-HE-Meta: U2FsdGVkX1/BRAulMogytfKIhj7YBm3crL96sRq1+FIIzVoTmw4VfXVxACnVz4eB8j1isOuIX7K8Ts4a6ytKqJVHsFn6r4HaarVAl98+4FrIQrBgyq3gt6smMN2piWtKEvYQbly1SrMxczuR6bVYNtBHT8kk//jRNY/U4B73XHy+QpxncvPUKAWP1zwzI7k/wHqJiVP1tHUmPYqmHPdMrAL1Y7jqWURm/7Z8b22A3XESgu5xl/VxXgV5gQ/ZTaHOWED7QshEzrP33CHrLnCRghh6awUPX+XOTDonc8zOWVKd811ZdOw5t9u1mWql+Ad5LifEbBJtnjkUbX3JhkIgaxxM7h49aVWoyj8UYVv0XOaC/3BWyVEyfBkREXimjXUOapfYtOM4VZVZJMeyqVv+tj+oYfRq/vpt0r0KCNZqIrY6FHEE33Mh/eK31YCQyZjbTbE5SNDxvnv7+hegt20ULj4A6zWye599LQMkT9H+o/4lK4G8W8dZhnVS87GKUmctQzs8Wfpa3mpah9Bzjsh1GD1b/JeQI2xx434rQYwUEp/T2H17famTElfNQs24vgv3jmbdkq+4vxbt0KHwqd6WMnNv+UZ+L1stUR42xzF/xnx8AU4P4awt5W7dSnN636BfLfy4GK/n5SF0vgkHlECFBGnYDrz+wvHLRvE/C2peflBBwv0AKJRVbXLtJVOdPQLIvcQwo+jDprKaOSl97Ug9gRKED0FlWB7VHozkFIwAqIkwTmZ5uCd7B3K0uJsnfTSYrTgC81mdDnFPxfAly6YJ9L1qsO7C0hClgcu00fEjR/C+w2E13x5A+0AEp2a71/M4Luq23cJWKPezgL1qude9FeE7PI6YEUGoFC/26yr1zUVhqjpfmF1qvNcnfcFDiVqIP/3LcgKLR7nnFYMLcWRmVwnyGdp1dlJwaMdLddGynbHUf0yvA1ZQPp4VmBAHNL46n+nRTLG7i1FqCLc13n6 Y4rrU2uo Z5U/LaZqsEO12MvoNe2a74mbopOSpKVNX2cZHxGMwLAhFUIdNag3VLBYCYyECsNdC1rx4hKxi5EZCSngiCOHKopbLSMf754jM3DsTI5fztP/xVji9jlhwU2407tQ5ahoR3GJuM4Y4n7N316HZ1V4ea8WKLp5FQpwllTowu3GkpyJ4LK7xfWJanzglYMSBjcD/Oz5yBNXDrfkFHFxPX/zHdrvL0wfLKIxSVuvoMbcp8hs3Qa9/jRzLR7Fp/dmEyUdaf84Lk7Y7nO4eTmi31vLygffeXVkI0fCiwAEjxpePAsQn5lZkbN/imBfOp2jfNxgYDMV2qZbO4/jZ2me7OmKQC6njmrMTue4yiOXtgmIpShjbCEiOAHIpLcs1xxG3JA5FeZpe/hoA34hOA9DyvFvoDCSk2vP7Uq3dHuZI+ccoyy8XjbmZuHEay9AEfV+6/3EYXf4KNzOiNLDIozkyJuAZI5ETi/e4Xbw7tVpEdIQXAXLvH7cTgTMi3y/0pjZqzu5vXOgZ 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 Mon, Sep 11, 2023 at 10:38:29AM +0800, Baoquan He wrote: > On 08/29/23 at 10:11am, Uladzislau Rezki (Sony) wrote: > > Store allocated objects in a separate nodes. A va->va_start > > address is converted into a correct node where it should > > be placed and resided. An addr_to_node() function is used > > to do a proper address conversion to determine a node that > > contains a VA. > > > > Such approach balances VAs across nodes as a result an access > > becomes scalable. Number of nodes in a system depends on number > > of CPUs divided by two. The density factor in this case is 1/2. > > > > Please note: > > > > 1. As of now allocated VAs are bound to a node-0. It means the > > patch does not give any difference comparing with a current > > behavior; > > > > 2. The global vmap_area_lock, vmap_area_root are removed as there > > is no need in it anymore. The vmap_area_list is still kept and > > is _empty_. It is exported for a kexec only; > > > > 3. The vmallocinfo and vread() have to be reworked to be able to > > handle multiple nodes. > > > > Signed-off-by: Uladzislau Rezki (Sony) > > --- > > mm/vmalloc.c | 209 +++++++++++++++++++++++++++++++++++++++------------ > > 1 file changed, 161 insertions(+), 48 deletions(-) > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index b7deacca1483..ae0368c314ff 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -728,11 +728,9 @@ EXPORT_SYMBOL(vmalloc_to_pfn); > > #define DEBUG_AUGMENT_LOWEST_MATCH_CHECK 0 > > > > > > -static DEFINE_SPINLOCK(vmap_area_lock); > > static DEFINE_SPINLOCK(free_vmap_area_lock); > > /* Export for kexec only */ > > LIST_HEAD(vmap_area_list); > > -static struct rb_root vmap_area_root = RB_ROOT; > > static bool vmap_initialized __read_mostly; > > > > static struct rb_root purge_vmap_area_root = RB_ROOT; > > @@ -772,6 +770,38 @@ static struct rb_root free_vmap_area_root = RB_ROOT; > > */ > > static DEFINE_PER_CPU(struct vmap_area *, ne_fit_preload_node); > > > > +/* > > + * An effective vmap-node logic. Users make use of nodes instead > > + * of a global heap. It allows to balance an access and mitigate > > + * contention. > > + */ > > +struct rb_list { > > + struct rb_root root; > > + struct list_head head; > > + spinlock_t lock; > > +}; > > + > > +struct vmap_node { > > + /* Bookkeeping data of this node. */ > > + struct rb_list busy; > > +}; > > + > > +static struct vmap_node *nodes, snode; > > +static __read_mostly unsigned int nr_nodes = 1; > > +static __read_mostly unsigned int node_size = 1; > > It could be better if calling these global variables a meaningful name, > e.g vmap_nodes, static_vmap_nodes, nr_vmap_nodes. When I use vim+cscope > to reference them, it gives me a super long list. Aside from that, a > simple name often makes me mistake it as a local virable. A weak > opinion. > I am OK to add "vmap_" prefix: vmap_nodes; vmap_nr_nodes; vmap_node_size; .. If you are not OK with that, feel free to propose other variants. Thank you! -- Uladzislau Rezki