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 CA0CDCA100B for ; Sat, 31 Aug 2024 07:04:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CBB9A6B0294; Sat, 31 Aug 2024 03:04:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C6AA46B0295; Sat, 31 Aug 2024 03:04:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B59BB6B0296; Sat, 31 Aug 2024 03:04:03 -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 90D9A6B0294 for ; Sat, 31 Aug 2024 03:04:03 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A97BD80A40 for ; Sat, 31 Aug 2024 07:04:02 +0000 (UTC) X-FDA: 82511651124.08.07B052F Received: from smtp.smtpout.orange.fr (smtp-21.smtpout.orange.fr [80.12.242.21]) by imf03.hostedemail.com (Postfix) with ESMTP id 96F4720006 for ; Sat, 31 Aug 2024 07:03:59 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=wanadoo.fr header.s=t20230301 header.b=BlclahhY; spf=pass (imf03.hostedemail.com: domain of christophe.jaillet@wanadoo.fr designates 80.12.242.21 as permitted sender) smtp.mailfrom=christophe.jaillet@wanadoo.fr; dmarc=pass (policy=quarantine) header.from=wanadoo.fr ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725087748; 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=nQY1gyPhkj6L2TL696AnPtGpi4GUmhTji5v5MQ+bEjs=; b=DJHvAOleSWaaukeJMFI06YtGa2e3IhbNQ78RI5NzvfvVkfgZ4E0tijwFGQBTxO5N/UnhtV vvagKsnSEl7LCUgJ2QL5E62/4til+F/k/FP9lUUjYUlGc3qnY+v9dYoIKpPs6B6O1WRe5W suzpT/7harWrBDvAA7DcrEuXcbgh+ac= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725087748; a=rsa-sha256; cv=none; b=QBC3hel6/thCu4xMPsBpRNAO0OU+y1muJYoHlg4suTPV1hYQ97SPfVQ6MEsIoLn4PpRrbI LD1tvzjZ6zzRG98buFpFBqNHyAvt9ZVRppqqd+XKdlnBAvA76SRAZnlJB6IgtOwhsTDP++ /CdcFQZH5cebiv4Romrkr7UWhkCKJU4= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=wanadoo.fr header.s=t20230301 header.b=BlclahhY; spf=pass (imf03.hostedemail.com: domain of christophe.jaillet@wanadoo.fr designates 80.12.242.21 as permitted sender) smtp.mailfrom=christophe.jaillet@wanadoo.fr; dmarc=pass (policy=quarantine) header.from=wanadoo.fr Received: from [192.168.1.37] ([90.11.132.44]) by smtp.orange.fr with ESMTPA id kI9MsSUW4QaX2kI9Ms6D8D; Sat, 31 Aug 2024 09:03:58 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wanadoo.fr; s=t20230301; t=1725087838; bh=nQY1gyPhkj6L2TL696AnPtGpi4GUmhTji5v5MQ+bEjs=; h=Message-ID:Date:MIME-Version:From:Subject:To; b=BlclahhYQvjhND3nEJOXIGDADht72+UtsKa30curK3njZs9gc/pnC0ghFIC2zvbJk Mi8STBa59wgKz0zAZQXqsBS4vBEeY3nMwjwdgVPJEUd0c3Z9RKbxUR/8wKGg1zdflm PDJFMMYVlmXv2xuC0KLO74Fohh/S6fXBx7GM680XhvatQ1IA7aZ7n1DUMMA5Q0raSV Yoyf4yBQs/K2MLPD+OYVO+D1BnVBBWtqqLf74HuM9Ph18EMmGzR+ZqgfvjUHL7YEGm ewcZASs79m1w0k9Vc1pCqRKgTlt2R/PUzzRdpxhzOmsGKEEE0x+47/Yr7EZLf/JyCA J3M2MiH/tEVGg== X-ME-Helo: [192.168.1.37] X-ME-Auth: bWFyaW9uLmphaWxsZXRAd2FuYWRvby5mcg== X-ME-Date: Sat, 31 Aug 2024 09:03:58 +0200 X-ME-IP: 90.11.132.44 Message-ID: Date: Sat, 31 Aug 2024 09:03:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Christophe JAILLET Subject: Re: [PATCH 1/1] mm: vmalloc: Optimize vmap_lazy_nr arithmetic when purging each vmap_area To: Uladzislau Rezki , Adrian Huang Cc: Andrew Morton , Christoph Hellwig , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Adrian Huang References: <20240829130633.2184-1-ahuang12@lenovo.com> Content-Language: en-US, fr-FR In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 96F4720006 X-Stat-Signature: thmbiph3h37y76ywbdiweyn9dteur6sm X-HE-Tag: 1725087839-741590 X-HE-Meta: U2FsdGVkX1+tiZFIusL1g2zWz+MdZTFRPP1XCLyhsW3vZjrwlZOlLLw+c26YdPH5wmC6Bk3WyHvwLTKMEolPR25fgYksUFMR5G7RRm5L/xIPe6wZ8uvCwZC7K3MOH2OETJaEET6LtUw2vnj5fgSH8jCS2bWi8ezFNDpPdhXK9At3tEmGgIvjPlt5gAyicl0X+XSABEq5evcU6TVBlFrR+wZumuONpfWSkm516TOyiGPQJEkkL1kqmTZkcdYTTyopW3jgt7JbNfZmcRDIV2jFlNDVv2apVRKBq+pX4ChPPri1SxnVbqUCXVPBS4VXIyL6MLcinw8tftazX7RIu2ecu2esFaWsRNjw+GkfDYjsnxH3uvlA6mh+X9iSGtL8Cg6otR/SmgbP0BzD/mnsG54ccL1WUxvVLmEXIDOFHByTG5iR0qzYtOc2OIb6jdl61rd1v1ucFe6wdR0nNvHpa2Oh9CWBr1sdbzyhopggajQTI/BcLxUW2n3TuEN7rifGWY2cd0o4iaGqlrt2AJLF2AnWW/WBXCXou6ADF8T8P2JOVStB6FJHbFQG155Jr9MyVFsyt0EltDiNRIgxSiQRpbK0aYYPmd5cDaup9QUvgRxxD3oeg3kEN+iUbgIjqZDD05tvDHb3jkSrAJ8K8JmyFSf2vcTHCmMFu/wsQsIl6przkZJ0j84VmnLI9Jsja6xB2QtVlfHHCXle04y9ApzSOfbmJRFLUlzp9ZRP9rtlR6xkiFrOs6wwEKwxI/wrKtZVl0EXVDlq07TKPDg717E5YC+zB3U+MgpcFWkfbPFUKWT/0wwAOpbLCyoz5Ve5b3ufmKkEYVqa4IeCW4OGcAD9hBjJU/4wGexWJUEYiztpxQGGTWb40nez0WAh45SQzXWf9r+kqxMksWIyAZGOcBC/pqcnbzixw1KxGUFSoI7e0mXT3DiEFQtatW6k4Nm+fj+Tcj1MkOfA4sNBQxYUgmgS25N 2JhK2dDR HxXVQXnlQTY2vqpSm5nB+Uo70Ba5kFhwK9njTJ/ZnMlvP6iUTuEPrr3eKdHzlUqUMsVsuQ8d/weloG/wuKcgAkfo/hcuqfCTc6iZksRiJUcwymqJ/xk5ocbMigbM9iMejq+0WfWgWokYAvJtIw0M4zD/XzmmO0yWxGz1KNWSafPLAkuB/RKMroOo0Q1MVQCg5zmKh5Z6OJf31zHhzjDaYsYXm33rYbIm+l/ommXjhhn3xjraTsQ3Nftd8gVJZR5huhkFv4bullkUDu9WhE7oMPJPTiGAT+IBDaFCAVlgpTwxfeqPn6iunpA++av0u9EVgvq6NReEho08PhahRFoxd0hDroJhS008iSk8xZRPKjeDviObzrF5ww5thbUbXE9urhw02JeMAhUsl/FYlReLQjlzkBFvDTlPNDpyIXkTm6/C7B2RicTxkPSRHqijb3bJxlihY 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: Le 30/08/2024 à 18:26, Uladzislau Rezki a écrit : > At least in my case, HW, i do not see that atomic_long_add_return() is a > top when it comes to CPU cycles. Below one is the hottest instead: > > static bool > is_vn_id_valid(unsigned int node_id) > { > if (node_id < nr_vmap_nodes) > return true; > > return false; > } > > access to "nr_vmap_nodes" which is read-only and globally defined: > > static __read_mostly unsigned int nr_vmap_nodes = 1; > > Any thoughts? > > -- > Uladzislau Rezki > Hi, unrelated to your use case, but something that coud easily save a few cycles on some system, IMHO. Maybe: #if NR_CPUS > 1 static __read_mostly unsigned int nr_vmap_nodes = 1; static __read_mostly unsigned int vmap_zone_size = 1; #else #define nr_vmap_nodes 1 #define vmap_zone_size 1 #endif So that the compiler can do a better job because some loops can be optimized away and there is no need to access some memory to get theses values. Not sure if such a use case can exist or is of any interest. This is valide because of [1] and the #ifdef around the num_possible_cpus() declaration [2, 3]. Just my 2c. CJ [1]: https://elixir.bootlin.com/linux/v6.11-rc5/source/mm/vmalloc.c#L5026 [2]: https://elixir.bootlin.com/linux/v6.11-rc5/source/include/linux/cpumask.h#L1083 [3]: https://elixir.bootlin.com/linux/v6.11-rc5/source/include/linux/cpumask.h#L1136