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 8BD92EE57DF for ; Mon, 11 Sep 2023 17:10:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D8E596B02C3; Mon, 11 Sep 2023 13:10:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D3EA66B02C4; Mon, 11 Sep 2023 13:10:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C05FD6B02C5; Mon, 11 Sep 2023 13:10:50 -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 ACC7A6B02C3 for ; Mon, 11 Sep 2023 13:10:50 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7862C140A2D for ; Mon, 11 Sep 2023 17:10:50 +0000 (UTC) X-FDA: 81224956260.19.9A653B8 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by imf27.hostedemail.com (Postfix) with ESMTP id 85A6A40020 for ; Mon, 11 Sep 2023 17:10:48 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=GQQ7x8SZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.47 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=1694452248; 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=n6syMadHgFPAkfE/eyX/0s8O+02EDKPP57+xWFdRX0k=; b=mMxP0ZRl7cxROYx6Q8or0afwgPj++1C138X33+2JhZQeqjieRA/g1ITy7pX2v3DmHHcb/c NtZyjlYPcfxbtOsZ2oLqi7ZTxxJNpgMb2vWHWxaEtqqXkcQrnsQmchv81zH5AepRtPnjhL TEUCuPP6qjfoVJtTkoFOTDy9lQJ+DSo= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=GQQ7x8SZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.47 as permitted sender) smtp.mailfrom=urezki@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694452248; a=rsa-sha256; cv=none; b=nWgDYt+r/jgzO9mSq0F48psOLMpOY+JR5VMZ36QH4+uJQ/qi9wnP4K2PotEIgO33PfL1Jz E47m9VIcH5bCWC9tY2i2nO7hzYbUYcsRyzGs69MXln7KCTu6KYDIweqrh44CB2eJFJ4MS3 Kf5oez7vmGYBmqr2o/whEPRVjiH3rbw= Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-500c37d479aso7585675e87.2 for ; Mon, 11 Sep 2023 10:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694452247; x=1695057047; 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=n6syMadHgFPAkfE/eyX/0s8O+02EDKPP57+xWFdRX0k=; b=GQQ7x8SZ6XmNOH+z1iT4SkthkTFvFtdDoX6AUtsfpGZG8X138sLZpeTtYwFZFx1Pot d7yUrWjWbsnESO9yJSf9HXRThhOlez2VyKwPaaTKMyaiCDWjV/5MZmhnAUGRY3XXlEUL 0NlcwMJzd2axD0C/jrKvGT0yntyGCb696Oz4E+pLykNGwiRGUWPUmY09Rk2siwSF+osv k830FeWxYTOwXfU6yx4XkPSr15GNRYH27ep4cDlEXQb65JGEFFU7eOSPO6dlAV0bOETs 1PCfE/gYh10GpE20Y8gLK8pQkayyeNs4P2zrgYghq1hNgKH59jl6Y8AlC0xNlu7ls7nu Xe+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694452247; x=1695057047; 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=n6syMadHgFPAkfE/eyX/0s8O+02EDKPP57+xWFdRX0k=; b=poDpajDezVJU5M6P7fdWarFT3v1idCEfXBPT0oFEQOTG0AAuSxpu1nA7Ess9VAy2aa oUJwG1mJ9kTxkNcLQDvtEAwWM2+6oJ+aPocTP1Xoz1QioQiSn15AVjNKCXSLMteoyYpM 7ZOYiCi1kXu8jIVjBvqT0tiphzpQMbG1VSbf+ZvfXy0rt+gOcBOIC7DsUIf28HI2sYTK kfOmFLqjID++t//DUn93i7I9PLZrEGQPJs399eQ+9DmNDRE7En8Bi8/Ci6KUIfe7U3bJ D5gLkTY1/+8MRG+JNLUcZGNxl2daV+6qTFBZ+PjtAvsff0NUGw8zFqbnh43p5hSlwlay 7yqA== X-Gm-Message-State: AOJu0Ywr9t2hEQ7nLbOM+730KaOvAutQvp+tIJp5g81tUX9vYDhhjOcd 7lvNBQ5BlBCaW5uVnQmiCq8= X-Google-Smtp-Source: AGHT+IE44z9fPP/pxu0glLigR7PbpHaue9z+DSqHcXr9ybgrwq7WhRS1Ll8N+R95mx1ubxx/q+tjzA== X-Received: by 2002:a05:6512:36cd:b0:502:bdbd:8442 with SMTP id e13-20020a05651236cd00b00502bdbd8442mr2528153lfs.50.1694452246410; Mon, 11 Sep 2023 10:10:46 -0700 (PDT) Received: from pc636 (host-90-235-20-237.mobileonline.telia.com. [90.235.20.237]) by smtp.gmail.com with ESMTPSA id q21-20020ac25295000000b004fe1bc7e4acsm1388027lfm.131.2023.09.11.10.10.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Sep 2023 10:10:45 -0700 (PDT) From: Uladzislau Rezki X-Google-Original-From: Uladzislau Rezki Date: Mon, 11 Sep 2023 19:10:43 +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 6/9] mm: vmalloc: Offload free_vmap_area_lock lock Message-ID: References: <20230829081142.3619-1-urezki@gmail.com> <20230829081142.3619-7-urezki@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 85A6A40020 X-Stat-Signature: o8mdtx1qthadfk7re1zfm4k4k734eeou X-Rspam-User: X-HE-Tag: 1694452248-333783 X-HE-Meta: U2FsdGVkX19M7f13ElYc+7GqmAk9XystIO3bXqfKp14WaWY26qoco6PNLtg3IEIp6PFW0Vs1JhrSCci3U/KXOgbDW548cdODr6nODa7AApjsOrp8NvQiQT05JJCNaikqtBSCbgt7nf9uS/n8WuVprqMfoJ7dhrvv3vZWOk0FiwC3Mlyb4LHEmRHiKqOVVuUO7bLDKrV44Iw0j8IAQBePY5EBEgKmPlI+0ca6pstyjo4cFlktvMZqo0GQgpLAi2vOcw/1Z3ZUfzNBOGq+Q/4Q0IWXWdNVx2IbvQaRrNgGnmJhPI7AeQQyugXsl5nDfFzSUS3slvc3MprnbmNL37f+qGc0YAC8oumInYYMf4ZP8GoMn5vVTjyGMdF67pEULkxg4ZOaMfjvketDRxPMFyFToI2msF1k/M1c9D4AgoIEir6XnS7cLMFUh3dcgVeKSqK2kFqlWYI8+2erDZVLNVvCKN2eMDNzbdCq19T6JGw3G3VgQX5WLl6l2RO0Q/8F21IBFBuvBdumdVBmN7Xpepe1ov6tq0OujDWu3ff/4SC5JPBy6hHlI4hWeG8pnI8R0HRjKow81GzDdj2BI6IaafC+OMFGE9DyXB5AtXftvBVolJr2RtgJgGC6MH1ff5flpGkIEQjxgI9QKnr3eIsteJKsg4xuvnYDFv8sm4mfHceKnNLPXMbkCWCihyyHRxm+fZMCyEJ4r82llAp9vIEtpuefrXFxq4x9zUVQfnxeuzas9uhpttpXKWDYcdui3Ak/nv4yhqOM73ilrvnsOopx7izv7LbP3dOmE5Sqr2wMyad1y5LIw7dppBLXhyFtavcLcBz6wml3VaP4FHRV9Nf7vGhnSjAreBCv8vqj21s7FdHi9c01HRhB/Px5az2CLI/nAdzTQ6l2S+C+dsmUFc56NB4uoNsmFUgGhQi5bkMk2RkS14S8kWpnI+ZpEspYQ6lTf7XF3Zh8G6nAWRh6g/6a7NC SmezM42Q 7YIwUAjDDBaAdaPL7G4JxovuNpdsjatEMsWNJCgP3+c/3CakeJPHhC1U5OmLHzniZsTR83MmtL3g3hOk4LPcVHH45gB5PZThcXJFc9GnHsFFigKG9mJepJhdu75zecLT6NtFrCWLqbDbIlkVRv+Afcg1eQEmih1aLVIxYBhVqaFKQC41azJRW5D5przTLMK9KQ3Nd2FSmCYxMmLYqNUdn5bnAXmmabmdGI0sJx6AVN90ajs/lAX4IUQ4ejVnN/MRrPGuqRLKuE+H8gSQanqKZrsXTx24Ci7I3U/93SRIrf8gZL7Bp2lwxB4GQdhDNTmmpoqpJYIndULde9GDcHgs5Cr0rMiTRFY0twR95TZaiI6lutRBL53i8bYNQ3WmBMtra8DPjVeHWfdxaCsAhwxf+Czt0gVLLcox+kfe5x6E28OsoJa76Pp+ED+qotL2szJNQjxhHw3Gqu0S2c42V7rg46DpNcQwi4c22xl8TxoMRNJNS0ZMPDD0ZI6OmBgqMZbY9I1Wa 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 11:25:01AM +0800, Baoquan He wrote: > On 08/29/23 at 10:11am, Uladzislau Rezki (Sony) wrote: > > Concurrent access to a global vmap space is a bottle-neck. > > We can simulate a high contention by running a vmalloc test > > suite. > > > > To address it, introduce an effective vmap node logic. Each > > node behaves as independent entity. When a node is accessed > > it serves a request directly(if possible) also it can fetch > > a new block from a global heap to its internals if no space > > or low capacity is left. > > > > This technique reduces a pressure on the global vmap lock. > > > > Signed-off-by: Uladzislau Rezki (Sony) > > --- > > mm/vmalloc.c | 316 +++++++++++++++++++++++++++++++++++++++++++++------ > > 1 file changed, 279 insertions(+), 37 deletions(-) > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index 5a8a9c1370b6..4fd4915c532d 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -779,6 +779,7 @@ struct rb_list { > > > > struct vmap_node { > > /* Bookkeeping data of this node. */ > > + struct rb_list free; > > struct rb_list busy; > > struct rb_list lazy; > > > > @@ -786,6 +787,13 @@ struct vmap_node { > > * Ready-to-free areas. > > */ > > struct list_head purge_list; > > + struct work_struct purge_work; > > + unsigned long nr_purged; > > + > > + /* > > + * Control that only one user can pre-fetch this node. > > + */ > > + atomic_t fill_in_progress; > > }; > > > > static struct vmap_node *nodes, snode; > > @@ -804,6 +812,32 @@ addr_to_node(unsigned long addr) > > return &nodes[addr_to_node_id(addr)]; > > } > > > > +static inline struct vmap_node * > > +id_to_node(int id) > > +{ > > + return &nodes[id % nr_nodes]; > > +} > > + > > +static inline int > > +this_node_id(void) > > +{ > > + return raw_smp_processor_id() % nr_nodes; > > +} > > + > > +static inline unsigned long > > +encode_vn_id(int node_id) > > +{ > > + /* Can store U8_MAX [0:254] nodes. */ > > + return (node_id + 1) << BITS_PER_BYTE; > > +} > > + > > +static inline int > > +decode_vn_id(unsigned long val) > > +{ > > + /* Can store U8_MAX [0:254] nodes. */ > > + return (val >> BITS_PER_BYTE) - 1; > > +} > > This patch looks good to me. However, should we split out the encoding > vn_id into va->flags optimization into another patch? It looks like an > independent optimization which can be described better with specific > log. At least, in the pdf file pasted or patch log, it's not obvious > that: > 1) node's free tree could contains any address range; > 2) nodes' busy tree only contains address range belonging to this node; > - could contain crossing node range, corner case. > 3) nodes' purge tree could contain any address range; > - decided by encoded vn_id in va->flags. > - decided by address via addr_to_node(va->va_start). > > Personal opinion, feel it will make reviewing easier. > Sure, if it is easier to review, then i will split these two parts. All three statements are correct and valid. The pdf file only covers v1, so it is not up to date. Anyway i will update a cover letter in v3 with more details. -- Uladzislau Rezki