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 D29B9C27C53 for ; Sat, 8 Jun 2024 00:48:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 47EAC6B0098; Fri, 7 Jun 2024 20:48:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 42F1C6B009B; Fri, 7 Jun 2024 20:48:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2F76B6B009C; Fri, 7 Jun 2024 20:48:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 110026B0098 for ; Fri, 7 Jun 2024 20:48:13 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id BDF241A0378 for ; Sat, 8 Jun 2024 00:48:12 +0000 (UTC) X-FDA: 82205884824.10.96055AE Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by imf17.hostedemail.com (Postfix) with ESMTP id C034440008 for ; Sat, 8 Jun 2024 00:48:10 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pu6Oxbo1; spf=pass (imf17.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717807690; h=from:from:sender:reply-to: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=0ZclPfKbJOXFHX4eNEjcs6y6LlWAX+uot7YacNhsz1I=; b=uLvByUCE7FCgBV6niVwT5ZUKncpVHtP20iwNVyPWhNebKiNxzjocOQBoTsy7V54wXnquoe 4BapqCei9Th9psqgRXJtTlmKKtg3kMnEcgUoUizkavIj/Kh/JT1Ze+PvOkg7NMgNoqO9wb uzTdOeuy4AcMvmVLGTDjOiBQ2sgzZOM= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pu6Oxbo1; spf=pass (imf17.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717807690; a=rsa-sha256; cv=none; b=OQjX62f6UTNHppcbvggR9aWpI7hasBv99YsJ3XPcD/6EvO9lX0w63tHV7ZBZwygk9fdPy7 91rB4lTqEAuPLF/tn4txUQwCbDkcUpJKy5IdvRemswSwOtIWvhvDK3pBmIsVic6fts1eMb 0fvKkaqhq8R34HsFSJZG9n9cfMpQK8Q= Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-572c65cea55so3090639a12.0 for ; Fri, 07 Jun 2024 17:48:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717807689; x=1718412489; darn=kvack.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=0ZclPfKbJOXFHX4eNEjcs6y6LlWAX+uot7YacNhsz1I=; b=Pu6Oxbo1nw/j2e2K/FCMuEtewLsTKMIrK9vepjOV896JyDBE79jNt8hDD0zsnR+rVS idyrVxNmGply2EZ2/jlcpB6Y1QkaSk15CGVKik84Tj6uYvMU1Q0EfNGrY7ogl2+YTr38 jrmPE97XtK7PtKgEAb3bLKRACuzFRi9PGk0ZPAeBQVkNCRTWhlyM80u7l+g4PnNTiykh vFzfnOY0+Nyh6kwQlaVK64nbLXVtdychSzBR0l1FSrH6ibFMSGhNBFYYNpapDkXfUUS0 hQiAPrwvQtfkSffdZzgB4Bow0iEW/AieksrlewHv/lrekfHr9Vs5nWWTkp0FNHvuV5EI EXDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717807689; x=1718412489; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0ZclPfKbJOXFHX4eNEjcs6y6LlWAX+uot7YacNhsz1I=; b=IXZGQd0DSzlaYq2S/lMaz+bFL+6ehCAP3YejXOw7RsChHqlEsAaByNMxXkKLmtLP/J Ood1MBi/ZI9yWnVLDn6LRNlWi3aVWQONCjZHoIOPjZ9F/FrVCxiTtgq7Iyvz/8nah6yE hZ49Fnd5P6YFtPrd0YDZ2cVKJV76rLAZ6ElH+QVwquQP4Io9Y+KmcmZ8DnYsfjWH3isb vpP6zQ7+MYBuZ2FzemiIU5WXKGNawOBPF8t4No9DZQqC38X+t9y5aL9z/HcJOZ9o4/65 onHTU165imSIRne+zURJJ8KuMKKcMQe/4PjuL0mDEtc4uD6Vxdwbw3SFWYg/CL3sKc0h DD4g== X-Forwarded-Encrypted: i=1; AJvYcCUwtR8P0ZR9AJjHobkSMEI/rlItdsus+VJ9fI81cvoJ7ksnoeRRXt8VXxwKzRDCVY6ETw1lrWL0xMLUwOLVUWnrn9Q= X-Gm-Message-State: AOJu0Yx8ckF45dWtIcx9m+HP4kmAk0qrjJm4tth+Vf+HZnUvy/KlKyNx NK9OwnFzhJHs5o6Cc6QT/cYryOXTELt7rt7pTReK7yO3nksShHWL X-Google-Smtp-Source: AGHT+IH0gfd/+frh1rvb/qdnYUlnif0r/zC8iisL7n2FQvT/mEeDVimHRpf1N4z1dLx6EfPIgJd3Xg== X-Received: by 2002:a50:cdc2:0:b0:574:ebf4:f786 with SMTP id 4fb4d7f45d1cf-57c4e3f5be7mr3340803a12.16.1717807688962; Fri, 07 Jun 2024 17:48:08 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57aae2340f6sm3533008a12.90.2024.06.07.17.48.08 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 07 Jun 2024 17:48:08 -0700 (PDT) Date: Sat, 8 Jun 2024 00:48:07 +0000 From: Wei Yang To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Wei Yang Subject: Re: [PATCH v1 1/2] mm/highmem: reimplement totalhigh_pages() by walking zones Message-ID: <20240608004807.3t6pnjvut3vmp23m@master> Reply-To: Wei Yang References: <20240607083711.62833-1-david@redhat.com> <20240607083711.62833-2-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240607083711.62833-2-david@redhat.com> User-Agent: NeoMutt/20170113 (1.7.2) X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C034440008 X-Stat-Signature: rxiygrrqg7npqc6m99w7octowaacbx1m X-HE-Tag: 1717807690-963043 X-HE-Meta: U2FsdGVkX199yOsMyrokv+1oGWCngUnXzjPyRTMQfvWnklYPGNJ1FO6iHJHNA4X3n1JMu4GbxNm7d/rOA/7NcY34yqXiQDm1CpuNBlRfrD1EzDwiBipxP5mv7X2yWsPyWOsu4gUm9WC1g1NeKU7LO0nas6OkMzEaEUC5sUQE88OtLTo/L6GP2EkLXmEkgu6ga84n4hNNOalxyGJjs+A4S8RVP2XwRUW0+SLdWcpdjSp8KeExLaEzM/17gzgXYVt+XgoHlXcAYTUh4QBiK9d/aNqG1FWpXLie70o2/lgVQGunPI0DDEWnLych/u8DDw7joabxjyRlo1jta7F1NsCg+0wPk8bkugb54eCQfPKAaB8b4NVu1qyws2iJ6ncdg/uPpm5+yoroMXdvfRUEDfNipKWV7y/Rbzz7da9K1fvp2RUlecVlFfm5D4D1dCVvmrefMJ0fk9rkrMRpF3ncARh/Pe8h7x8xYFGhb1QZ36DmDcAwOXDggNr+v/OMwSUcdLKZJXKncEznasbXdAI7/0Ucij/nINqFASg0lf6CnWsfaDWu6kyZqyjcsy4+Q72f021UaM5/f10AUGasByeHVbKUUEqtUX87wE+0Ulj3lezh7ovrJx/l0GWm+x4bbhwQcuzDXaxGFHoT4pAPqoESSXZ6djKStmiTduSY7k93t6mej70j2qS6FsPaD0z32fJHLvNzgndypahYHGwUxj2Lku2/g3NVdzho21dMM87yb0QX+Hfg1/dTfi3wtPZmB0pDU6LujzIYdJ34mYxzyza9oMukNr8Ne75Ey92nw3SFHbdS6vtotV+CjtExeoD4wLfqS9gJ5kkuqmxGXPAKmZ+4mQWypkXnGsfJCeoLsvoQ2jszeCz+fp+nxVWYr0ThYlEacqk2SnpHc9CJMJ9ax14Vm9vL5FohbCdmQcUML6GdecxHZFfzJi6BIad461fO1whmJTUw/eoOD1jyqH2Ds7Eue0d IE29KndV /TiB/+1KFRwjnPg3h2N4yKENm3uDwMBqUzs7q6WYZWEkDQLX5B/GxLiSindOXQjO22rOhpBRrh+LTCjBMJc3i6GfBN47QPFDDP8Ww27WaV6VcfWAX9hCfEdoq+3pWHFiExtRT4mWJX3l/ci9W1Ly3vHhV9Ncs8wgJevC9+ohf6/hZhqOuJgtTBrP8jWJdLxMIF2l2uRd2bp1dc88C9QfdGXVWIISo38oKadsx4BMw8rTkexVDOCXfePgxmea5IwauXn3bnmml9h77kZY/xRQkLUtAt2E4/wSvPeRXcUxAKqj6TXfedf1KJhtDyog08A1HOzKy9KLpNWBBYaJF6aDv3ODgLBi9ntZpifFR/2iWGI4N8YxCxeq8suUEU7m+pvJh3hSdwwsbYx9HddZqFAF0tZ4fCWcTiy+p3nj2RX/nkbxcn/zThp3J0dO0a8zbDxgxqJsIBtDy9bUTLIjmgeZQe/c9U3wGJ5grGRnpOy14vLQm5V2/O8VuaL4GTIr8e4QuwoGwrihKcnELAuS37jrrxtz02BO0hK1Fcu7VboLa6F3Jr3hwRJqaYoVLRTjTHNuLQi9Tg9mkirSUt48p5+vE+rCHZIKiDqSHk+mILOdy4TXEX535o3yqnd7g9ft0uxa0+SCz5I67Hu/tQ8aVRwG27Uydo7CfhIfEGqARXahkksAi7/B7CNVr2QfI6RWT1Gw17lpbYcHOf1yHQa1JNr4fXpH6K6juKyBR1Oz9d4b37XsXNpDGx9oslwmTpzCP1jL0P1s7pu6Obx2zooIqNP+faC5fSQ== 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 Fri, Jun 07, 2024 at 10:37:10AM +0200, David Hildenbrand wrote: >Can we get rid of the highmem ifdef in adjust_managed_page_count()? >Likely yes: we don't have that many totalhigh_pages() users, and they >all don't seem to be very performance critical. > >So let's implement totalhigh_pages() like nr_free_highpages(), >collecting information from all zones. This is now similar to what we do >in si_meminfo_node() to collect the per-node highmem page count. > >In the common case (single node, 3-4 zones), we really shouldn't care. >We could optimize a bit further (only walk ZONE_HIGHMEM and ZONE_MOVABLE >if required), but there doesn't seem a real need for that. > >Signed-off-by: David Hildenbrand Reviewed-by: Wei Yang >--- > include/linux/highmem-internal.h | 9 ++------- > mm/highmem.c | 16 +++++++++++++--- > mm/page_alloc.c | 4 ---- > 3 files changed, 15 insertions(+), 14 deletions(-) > >diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-internal.h >index a3028e400a9c6..65f865fbbac04 100644 >--- a/include/linux/highmem-internal.h >+++ b/include/linux/highmem-internal.h >@@ -132,7 +132,7 @@ static inline void __kunmap_atomic(const void *addr) > } > > unsigned int __nr_free_highpages(void); >-extern atomic_long_t _totalhigh_pages; >+unsigned long __totalhigh_pages(void); > > static inline unsigned int nr_free_highpages(void) > { >@@ -141,12 +141,7 @@ static inline unsigned int nr_free_highpages(void) > > static inline unsigned long totalhigh_pages(void) > { >- return (unsigned long)atomic_long_read(&_totalhigh_pages); >-} >- >-static inline void totalhigh_pages_add(long count) >-{ >- atomic_long_add(count, &_totalhigh_pages); >+ return __totalhigh_pages(); > } > > static inline bool is_kmap_addr(const void *x) >diff --git a/mm/highmem.c b/mm/highmem.c >index bd48ba445dd41..3c4e9f8c26dcd 100644 >--- a/mm/highmem.c >+++ b/mm/highmem.c >@@ -111,9 +111,6 @@ static inline wait_queue_head_t *get_pkmap_wait_queue_head(unsigned int color) > } > #endif > >-atomic_long_t _totalhigh_pages __read_mostly; >-EXPORT_SYMBOL(_totalhigh_pages); >- > unsigned int __nr_free_highpages(void) > { > struct zone *zone; >@@ -127,6 +124,19 @@ unsigned int __nr_free_highpages(void) > return pages; > } > >+unsigned long __totalhigh_pages(void) >+{ >+ unsigned long pages = 0; >+ struct zone *zone; >+ >+ for_each_populated_zone(zone) { >+ if (is_highmem(zone)) >+ pages += zone_managed_pages(zone); >+ } >+ >+ return pages; >+} >+ > static int pkmap_count[LAST_PKMAP]; > static __cacheline_aligned_in_smp DEFINE_SPINLOCK(kmap_lock); > >diff --git a/mm/page_alloc.c b/mm/page_alloc.c >index fc98082a9cf9c..2224965ada468 100644 >--- a/mm/page_alloc.c >+++ b/mm/page_alloc.c >@@ -5794,10 +5794,6 @@ void adjust_managed_page_count(struct page *page, long count) > { > atomic_long_add(count, &page_zone(page)->managed_pages); > totalram_pages_add(count); >-#ifdef CONFIG_HIGHMEM >- if (PageHighMem(page)) >- totalhigh_pages_add(count); >-#endif > } > EXPORT_SYMBOL(adjust_managed_page_count); > >-- >2.45.1 -- Wei Yang Help you, Help me