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 3BE78C369A1 for ; Sat, 12 Apr 2025 09:15:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 561F768003D; Sat, 12 Apr 2025 05:15:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 511A968003A; Sat, 12 Apr 2025 05:15:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38B0A68003D; Sat, 12 Apr 2025 05:15:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1C42068003A for ; Sat, 12 Apr 2025 05:15:18 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C8679BB5A8 for ; Sat, 12 Apr 2025 09:15:19 +0000 (UTC) X-FDA: 83324833158.25.27CE24D Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) by imf28.hostedemail.com (Postfix) with ESMTP id EB136C000A for ; Sat, 12 Apr 2025 09:15:17 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="WvKo2/j7"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.48 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744449318; 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=MbIUHCmcAX0DkYjFh/o6M5S/0HjNuCssHAp5/9byzKQ=; b=Oz7MTt/oSdoQ7SyCYIsdt6vtzBmTWr9UD458QZj1NJQFxT8HXS7HRjxT+fcJ+NEy0DHNsy ItgLHZdDWieo0ZiaLit18dxd9goLOZDpNr9rjcWBzoSNDDhDafCdiu3bz4BQisWZiGctwn 14b1kRwrfcqhmLGk5rpkLvNoexFMwMw= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="WvKo2/j7"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.48 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744449318; a=rsa-sha256; cv=none; b=shnKpT5ZhNBEEIrx6D6Lz2UvYcGEAg9AFH5lmODTGmpoGfk3okjZiqviBhvb53yDMlulFr xPYXAuTKvYxr9sizkw42ROtwCTtVkl/5zNRFSydUi7RHNmKhXIMKrCRIt18g6M2cGBHdWO plxJDP4Mgh9apKVr2alvJSVGUTdfI9w= Received: by mail-ua1-f48.google.com with SMTP id a1e0cc1a2514c-86d69774081so1175503241.0 for ; Sat, 12 Apr 2025 02:15:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744449317; x=1745054117; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=MbIUHCmcAX0DkYjFh/o6M5S/0HjNuCssHAp5/9byzKQ=; b=WvKo2/j7narI1S0Nhgb2JnqTS4ZtK/TQxeCeX1kcgrfiHLZIVBe8pkKPLw8opS8NIb 47+XPDI9EqKGZ3pHtaniiff2F8WFoBknOOewrvcUyDnD+eBOgWOqwYctYV0ujdPVNzqc A/4K8qlbcDdtwxChPGau/1dzpIJtq8dLLB+TTDdRb+lT2XBMniIJwV52yKF8v4cmxcRC 8Cs5ppX/mTjJ7My6Gqh8PrZR0S+tlB9f6sg0D1ZW8mQEyFyPz475aVVSRWeyi8XPg4d+ MWydEAmeOMC960JLuNJ03QB9OyzHAbs+NjjvN1raCGiStHA0HupnOtpRwRAJ0JIlAt+l /6dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744449317; x=1745054117; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MbIUHCmcAX0DkYjFh/o6M5S/0HjNuCssHAp5/9byzKQ=; b=Srk4b3jlTPVJBeg/dx3wxRK9Wr+PnxeLxcBQfgkTq4CMZPX4Oj9Dk/qAXi8CU58CHi tNvG8vJkPWyct7gK5GnOMTnU+SNLG0g7cfzmhagqYm8FJnlZFZoZs/ALClezHngbse1c 0SvLsWIzPiN+3w3EoDLbX2b29WidOwnhcNnjWeP/DacyxR2z2IJy8uRVDsqQI3fsXWyM 0NjW+mCaWRB5MvEJYpi3GQod2EHZzxhwo/T1MlzLiOjNWRnzoUr0fjB8ZWcA3ht+L0aj c8gL9dOAenZuXGCmFm61LcVn+DZm7vNqG8YWQ3ui9G6C2DtmvzfYTCcFiAyNva6y6wd4 DdMw== X-Forwarded-Encrypted: i=1; AJvYcCWBH0AJ0SJASZM5Lasi/Y//emhdNfE/FhYrCi7Q+hNDLzYCyLBXr8w9UxZ+UZ7EuG5YW0dPHU+EoA==@kvack.org X-Gm-Message-State: AOJu0YxSO0stE8N4FwhvaG5Nc5X7tZqIdFhsnqR9zaBfGFvroVHNEhp+ 1PDk6CNKRV93DLG1iRFX+pUxBp+gphaq+nxYqgFZT3rSViC6fcfqBUbV2eBnPsD7y61QChA9jSu 8IyKUv9QRyrDfkfAdV21pmtcKUX8= X-Gm-Gg: ASbGncuno4Ud1qJBdaQlbiMzcHsCuf1mHhuhJluH4/86Ub92TPvfSdopVBkIJYykkoo t4UyN0FreG5kMlzfUkAPKbUWAbWiZDO0ryYEC4LjQ+1xGeP+6LOvOGHys67c3gh89vC0q0OmWjA NBze6d3aGXP9FXzJe1v4iRRw== X-Google-Smtp-Source: AGHT+IEBQGFsZi7n8KNE2IfV+nuOxMHsAwhATBG8kEn0jBgAbA7ZVcCE2F06V2SZhSD8AWnbzwk/8bz8M/Moca6BKyo= X-Received: by 2002:a05:6102:5046:b0:4c1:9439:f70 with SMTP id ada2fe7eead31-4c9e4ee6672mr3764722137.6.1744449316860; Sat, 12 Apr 2025 02:15:16 -0700 (PDT) MIME-Version: 1.0 References: <2d42decac5194c2c8d897b0424f0dcf3@honor.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Sat, 12 Apr 2025 21:15:05 +1200 X-Gm-Features: ATxdqUFW6diTcCQvnjYzGU35F1q8ZAKLmhonTwYVQRoLOohz_odZsQebh12L9R4 Message-ID: Subject: Re: [PATCH] mm: simplify zone_idx() To: gaoxu Cc: Mike Rapoport , Andrew Morton , "surenb@google.com" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , yipengxiang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam01 X-Stat-Signature: 1y48rffw9wcdueidxiahrn9i3dnqzh6j X-Rspam-User: X-Rspamd-Queue-Id: EB136C000A X-HE-Tag: 1744449317-511155 X-HE-Meta: U2FsdGVkX1/wnMo9sF9+a47rTwxiw+rKVuMm1R060UA/VGj5CvLtBzzKuNsPPgfD7oLudZWPEW7BX3wupJJfNRPI7r1pb+TnlCwQPYpYv3TNw+XOoJ3bXZR2k7DXcYHO2/Q+1sK3XUpn8jm2Uod53y8sOHaB2GTOzdBOp9cm6SX9Yw8UKAq2nW6XAJD31H525wrAhaJkri6oOQ0OZBL4OOu0S51ojBrV3zsdF2bcUOP2fIi3rNmwL4hjQ920EzhYbCwFlejeCCv6/Q5Lu3yVF+wEXN+Kn1KLSqiFSmWSX2UvwXEuCahZyRVzkeklhtg+eZ1ppe2L9hI2TNbz0/bcAqZbX7tfw2JIZqu1gNDYv1VpidMMbbm/10LmXrQm5RSIqu5DZqFwKzXVr6pPDl+gW2v7A+73mvtHfblEndiSgwuXei+8auTutRG/5zms5n+GF8NWCQB9M/IArskJgJzCC4R+LNgD5aMn2IVYuR5AoMBV2PoI05PBT7n1sexwiA1hTuwQb4NZWdEIJk8msW5x3D1NTs2swiD6wbDZ5THOvuZ4Sswl/Hea53/TMMY2tW/FRqT2cr7nfJSJ5uDkiI9MxkGHclw8KUr7aArIWRyzMvAy/jJDqGsmsMe1TNoDQqTtN1nKKNakNG64hfoFglYs8KhHQL0agDpA/ol7pP9Xc4uBWKhp44GTY1mAu48vy5Q0venAdjmG9lKyX3XL8bdOe+R2BUd56ilaBvnaYwpid3405GIeZzceyxzXtJEzCqYcVBb5plA/nx3oV9z9OlRESfQLgR5SfN1pDXFORhWQAUS0WcdWm+QIu241Pyzn7uDBgMIXXJ9zmC9dBtbwLkm4Ui70/hZ6UJMtn+hRPR41AuXBqQ8JdbxF/VAszOTChhD22KdyZu/LdWAJuKs7MSvDzQYIerzVa+6oiKnjUnQLEd4hdvJEMjbK1I8qCBReEWtX4VN03NADSPc4c3TJyc3 oGQ0eqH7 DogAq4M6Y0vSIZFp9YdYkBzR7kK0pJg7NQo6iqGHiiE11Vp7sYIwgtBj9G7XbH22mKZN3AewlgvxEkPyemG2sou7I0IaYxMfwyim6PUPzKx/iJjNvIwUvw9NIV90b2vLzU65zpaFysvw7I4snNo2HsuQrM1ByKwhZpBgtFto0qAqjLKi7/x/0a81V5l23ErppxMQsQYNc4R5RyZlsIbALEl21mXeUJSVXS9NGz8+8tAjdQiolTxeB2g34OUeyhXbNt3008hvPmNWhNGYvKXk3tSQ89cSUoM8n2Oqd/GqQhK3JO0/60zo32uG++1GtCgfICDLleViM1ThnVtEdErFA0ifwNkn691VHiiNvMjTeQGhTaDHPyeq9A4Lp78PuE0T2Dsb+/gzYuyYKquNUtxkRZQ0sYUs9m4eZq5G3qiEyWXL/ntKzG66JeD0dwtgqUNnzgrZcHBho9rZJnDMJnzicUT4par3ikISFhXEFjwNrO1I1dq3mM9Z/owdZrc1ZNwIRUipSBge7ePUW40UllKWquWN3Y6g7cD2eHD1gMzk8Xh8d0ku+fhJDv7sEwB3jDTIesPa/ 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 Sat, Apr 12, 2025 at 8:34=E2=80=AFPM gaoxu wrote: > > > > > On Fri, Apr 11, 2025 at 2:42=E2=80=AFAM Mike Rapoport = wrote: > > > > > > Hi, > > > > > > On Thu, Apr 10, 2025 at 12:03:00PM +0000, gaoxu wrote: > > > > store zone_idx directly in struct zone to simplify and optimize zon= e_idx() > > > > > > Do you see an actual speed up somewhere? > Almost negligible. my simple code tests showed the patch provides an aver= age improvement of ~0.02%. > Thus, in the Android 15-6.6 kernel, I confidently retained the original z= one_idx function. > (https://android-review.googlesource.com/c/kernel/common/+/3578322/2/mm/p= age_alloc.c#770) > > This patch only eliminates 2-3 assembly instructions, making it challengi= ng to > observe measurable performance benefits. > However, since the zone struct includes CACHELINE_PADDING (reserving unus= ed space), > adding a new member variable does not alter the size of zone. This makes = the patch > effectively zero-cost while achieving a cleaner implementation of zone_id= x. The struct zone contains many CONFIG_ options to include or exclude certain fields. If we're confident that our new zone_idx doesn't increase cacheline usage for all those cases, this seems like a worthwhile cleanup. Have you checked the numbers? > > > > +1. Curious if there's data indicating zone_idx is a hot path. > There are several functions in the memory management code that are freque= ntly > executed and will call zone_idx: > rmqueue()->wakeup_kswapd()->zone_idx() > alloc_pages_bulk_noprof()->__count_zid_vm_events()->zone_idx() > > The patch (https://lore.kernel.org/all/20240229183436.4110845-2-yuzhao@go= ogle.com/) > will add new hotspot paths, with the details as follows: > __zone_watermark_ok()->zone_is_suitable()->zone_idx() > zone_watermark_fast()->zone_is_suitable()->zone_idx() > get_page_from_freelist()->zone_is_suitable()->zone_idx() > __free_one_page()->zone_max_order()->zone_idx() > > Although The patch (https://lore.kernel.org/all/20240229183436.4110845-2-= yuzhao@google.com/) > has not yet merged into the Linux mainline; it is already included in And= roid 15-6.6. > > > > > > > > > > Signed-off-by: gao xu > > > > --- > > > > include/linux/mmzone.h | 3 ++- > > > > mm/mm_init.c | 1 + > > > > 2 files changed, 3 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > > > > index 4c95fcc9e..7b14f577d 100644 > > > > --- a/include/linux/mmzone.h > > > > +++ b/include/linux/mmzone.h > > > > @@ -941,6 +941,7 @@ struct zone { > > > > #endif > > > > > > > > const char *name; > > > > + enum zone_type zone_idx; > > > > > > > > #ifdef CONFIG_MEMORY_ISOLATION > > > > /* > > > > @@ -1536,7 +1537,7 @@ static inline int local_memory_node(int node_= id) > > { return node_id; }; > > > > /* > > > > * zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORM= AL > > zone, etc. > > > > */ > > > > -#define zone_idx(zone) ((zone) - > > (zone)->zone_pgdat->node_zones) > > > > +#define zone_idx(zone) ((zone)->zone_idx) > > > > > > > > #ifdef CONFIG_ZONE_DEVICE > > > > static inline bool zone_is_zone_device(struct zone *zone) > > > > diff --git a/mm/mm_init.c b/mm/mm_init.c > > > > index 9659689b8..a7f7264f1 100644 > > > > --- a/mm/mm_init.c > > > > +++ b/mm/mm_init.c > > > > @@ -1425,6 +1425,7 @@ static void __meminit zone_init_internals(str= uct > > zone *zone, enum zone_type idx, > > > > atomic_long_set(&zone->managed_pages, remaining_pages); > > > > zone_set_nid(zone, nid); > > > > zone->name =3D zone_names[idx]; > > > > + zone->zone_idx =3D idx; > > > > zone->zone_pgdat =3D NODE_DATA(nid); > > > > spin_lock_init(&zone->lock); > > > > zone_seqlock_init(zone); > > > > -- > > > > 2.17.1 > > > > > > -- > > > Sincerely yours, > > > Mike. > > Thanks Barry