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 C9634C27C75 for ; Tue, 11 Jun 2024 14:42:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 55CCE6B009A; Tue, 11 Jun 2024 10:42:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 50BAD6B009E; Tue, 11 Jun 2024 10:42:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3ACF16B009F; Tue, 11 Jun 2024 10:42:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 1E2956B009A for ; Tue, 11 Jun 2024 10:42:53 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B63B44068D for ; Tue, 11 Jun 2024 14:42:52 +0000 (UTC) X-FDA: 82218874584.11.438F5C1 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by imf28.hostedemail.com (Postfix) with ESMTP id BC897C0012 for ; Tue, 11 Jun 2024 14:42:50 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cmnXPbf+; spf=pass (imf28.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.44 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=1718116970; a=rsa-sha256; cv=none; b=c4doAnIngkfPR2Y1GSqRt7wy1OfKlp08pD2Q9V9NMWwAGt3vYA0cZ3BTKCTVaxpUnhhpXa ncAz/4RpFWJY2CjQ6bg1bk8GWl/6E86WWIShkXuHTyXiVEqaj3lkql0426P+QQ7Sddjuwo hU4Kcmz/Bq2KvF7airiEzcPBBGqLtqA= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cmnXPbf+; spf=pass (imf28.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.44 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=1718116970; 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=mtP8LvscXH/LQmfaFUm+61L28zVZ5ZSoDjwZH6ucI84=; b=ALfQIDdmHRObPybDQcZRffevqXfIb/OPAKe8ucU0QU/NQ3RFNSL3L1FQDePnliqcEv1ft8 vTDeArGTXZm4b+yTPJaM+HiKzVboaY6wcbdFN2wmVtJH8TVcINEc81oIuxSIl4kPSzi+0c cYQBzz2IKoA8jl5RulqhcpW56cTBEpM= Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a6265d48ec3so120726766b.0 for ; Tue, 11 Jun 2024 07:42:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718116969; x=1718721769; 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=mtP8LvscXH/LQmfaFUm+61L28zVZ5ZSoDjwZH6ucI84=; b=cmnXPbf+0aM87BY9HHwpeywGCZqUZZ8OqkKgfoTzIUtJfd81dbtxQzjox0oy9XtttQ jRf/BAazLZz28dDmwfmZ19jGAz5m/t/ntmWfdcj3Wy2mV2/cZULKKSHUqWB5i/f13sha NJf5gkWgLi0mMZK6jvUf1Pml9Wax0elGuRsnN4kz1QOnG9uEiERYJkSophpmZmn7sU9g OD5tYtNp86V/daYDu/WieWQZHXBFmCk8F0mKMrVo4u79Ej8oD1Sl/lxpuYI09IB0jb7K fYhsE3t7+pRkjWHmrNHkWddwfrxf2ORPQtVh66GbeCv5oU3fXw5pnRSYE45cJ0F4CoHG XKUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718116969; x=1718721769; 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=mtP8LvscXH/LQmfaFUm+61L28zVZ5ZSoDjwZH6ucI84=; b=ZcOTtgqBUhELTyLwzpvKHhgzQj9fpyOVnSI1kU9DLcUo2MQSXQUyBxIsekqsoGAF92 4oydQiafAhBri8yDEMVYkeWJLxH2MosD+0zKRdYj+Cl5Ssc4IXMdC0M96vojmzuH5K/I 2+PhZOnkV3XzCxvxQH6JtJ6rjlRiTreaujhPjhUa9SXxdV1PeIT93jHecxvCCmTRQ7el 8IdNeIfIM6BdXTYarIutdmUzWiLpbpKDbh/qYQxzFjKxBimkEO2ogxxOcFMDFp69OWsS DMHsvayBYqXlDwFTnn5skvkHlHVH5FbwRbXdjBSAkaENcqgzxnTThYvnt7mem2wsOUp6 mYiA== X-Forwarded-Encrypted: i=1; AJvYcCVgGayEycigKDaYAzeP+8zuKZD6+I2fJfeOBvL97supqmS8R5wH3lBc0JyN2uISbl5aUjoSPTYNaln+LUnDpmKBeWw= X-Gm-Message-State: AOJu0Yz4gQmlz3xPJ/ZlayLIcAFldy1w40Cb0E34BNX5w/r6jkw7rGFH 54SPvYed5iEExx0BtK+EJEhbNNjgMS6K7Fa4J4wuYUyp8aL5ywC5 X-Google-Smtp-Source: AGHT+IETDvb9GkfAANOtCjMs9GKT24l4SrmnjfMXU1Nc/kykCsfiGqQuzvbOlvwgY8jBEbIRhoXyiA== X-Received: by 2002:a17:906:1582:b0:a6f:3e18:f9e8 with SMTP id a640c23a62f3a-a6f3e190b31mr95437266b.76.1718116968704; Tue, 11 Jun 2024 07:42:48 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8072a101sm759628766b.201.2024.06.11.07.42.47 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 11 Jun 2024 07:42:48 -0700 (PDT) Date: Tue, 11 Jun 2024 14:42:47 +0000 From: Wei Yang To: David Hildenbrand Cc: Wei Yang , rppt@kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [PATCH] mm/mm_init.c: print mem_init info after defer_init is done Message-ID: <20240611144247.4nspdna7oxbntgnz@master> Reply-To: Wei Yang References: <20240611030812.9582-1-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) X-Stat-Signature: ys3mkhf7idpjg3et41zu659i56tyj6mm X-Rspamd-Queue-Id: BC897C0012 X-Rspamd-Server: rspam04 X-Rspam-User: X-HE-Tag: 1718116970-241236 X-HE-Meta: U2FsdGVkX1+FbvQG+SY/DK7I2GZimV68vOU/40sW3hCm0FoC2rF1jSagoauS5Jhj1A+aEdfA8xlyBWMxU8F650u/0CqD9oqwNx5xL5IsfKJxiccdhQ97/UD809ti7oLZ39jog9BD/B8nURk+Cgbzrls8mpwPt0nWaO6DLViVZU1mbJBqo/05MioGx3VkgpMFOk2bL6OK3i+yuOxsP5gfTgvGC4Ab7I/0sZytOrVta3Fnsn6JHOz3gkn08HMuBGMCjHreQpRL6IU2ETdl0sUL9mO7TYLF0fQQoon03g1HLmTSjV3mPz34pkMrNIiAKBXuEHyZIYmawuLRxqjZFxylgn0mMVWScmA6/M5cV8S95x3aZYgDyjka80Sm/R0XtPbeZzr37NXvwu7APBqn6drKIs6K3LUDTIVzpzJ77WSi631Kf5adQC51XwZTiwbo7FJJ/C+Zznic4i4wKiC1W7eBnkDpfnLFKidsWE4DKhEN+vPlmUrt9pHL70pMXwD01F1Gq2ApSbwoxlqlUAvf9e6vyuxbR4umA+L061HzaYR6V6sWZwKvLnQXycIB9ohs+M64SBU4e3ZSPdLt2Cv4uR7LXv60UgM17k8RD1pQT12rqroBhjVj5sCjBfd9nupwFfoV6S0vH6ZcO7+GBhe+bfbduwN8zLrEeidNv4dWZ3dwexD+RLJcvh6mFeBbYwRxv+NhthYJP1j88SwGKrOE+VptRVdWWLvYb/LpRRmuw8XbNybz1owbyTU2Z9o85HQFq+ih37bLk87DemTgmc5Aaf8FOJAIgYBDJV4yyipvouVZVwtUaL1V3ZV/7fgtNbkDCFI601LFde3C8/9nko7wUcaY2X5E2qQ2N8DsWcX+nZDSVWmkwzqptKodeqGajNImtSZ2dUSkAiniCSCXGPq+4GuzaKWxkwUDkgOCJA1F7uPsNT06lXXf7mYI49vldfjcmbruxDqumNJGNpBfYPWi6SI ZlvdgpmD VteOySmWQs2q5AgumjM8OiyATPVeoL+rzHB4WpbjVqTUi0/3Swr2BUbmr3nlpViK7Iiy2hhULrEqVw44Tz5bnT25zaJsXWCcE/+Ay+/WU+taRA+0OQQBINRSwYltMJvI0SC5gmnSXb8O/fYr5ZB6N4ybGRJkwzPFWfFezqTDrxNm/hqF8aplCyWtm/2gwQ437pkOJOKvhYdR8DcQ/SdN1cd2TyWfPSPiyKrtnbSXw6/V1+9LUyj6KUHLoBppbhKnObdm8ABJaA5fy9ytoAzTt5ur8z3cQAXpWws2JJda+pya1juul1InZlG2seBM6mAHD59QzPRX8rDSKGEv7J6XMcvU635hYBkiKfvZTkvTn1Oxv22sJ6VE25DlXBcDGolIKS3Cz5w+KooMakvRBOpuOC68f5mQFnLkY+f/2oio5EfwMdVTLv0jRs9VU0xaSu172U5YSvRcef5g9HjmJORI8JeA0HCMruOUG/Zz6wR+xAqxXfSjufmwbamLQUK82sjMsMj85hhOBukSvyk5kFBXxzBKiN6uYId/5+FHSY2wX3fyyAu29qAxGt3DOqRuo0ntAt2zN98LA6UkjXOs92S9akRBULGZpGBLYtMNdk5kpVW6kjMmVL7LC+zfvF+A4ds5DemJLl5Sg4reCmMUPccmsXLJgud+fptxiQbUYbI3poK6i/v44m7hQVBPNO9iBlPT6pKu/ 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 Tue, Jun 11, 2024 at 04:26:56PM +0200, David Hildenbrand wrote: >On 11.06.24 05:08, Wei Yang wrote: >> Current call flow looks like this: >> >> start_kernel >> mm_core_init >> mem_init >> mem_init_print_info >> rest_init >> kernel_init >> kernel_init_freeable >> page_alloc_init_late >> deferred_init_memmap >> >> If CONFIG_DEFERRED_STRUCT_PAGE_INIT, the time mem_init_print_info() >> calls, pages are not totally initialized and freed to buddy. >> >> This has one issue >> >> * nr_free_pages() just contains partial free pages in the system, >> which is not we expect. >> > >Maybe mention that this will also help changing totalpage accounting. > Sure. >> Let's print the mem info after defer_init is done. >> >> Signed-off-by: Wei Yang >> CC: David Hildenbrand >> --- >> mm/mm_init.c | 104 +++++++++++++++++++++++++-------------------------- >> 1 file changed, 52 insertions(+), 52 deletions(-) >> >> diff --git a/mm/mm_init.c b/mm/mm_init.c >> index f72b852bd5b8..34a6de20ef77 100644 >> --- a/mm/mm_init.c >> +++ b/mm/mm_init.c >> @@ -2322,6 +2322,57 @@ void set_zone_contiguous(struct zone *zone) >> zone->contiguous = true; >> } >> +static void __init mem_init_print_info(void) > >Can you avoid all that churn simply by doing a > >static void __init mem_init_print_info(void); > >somewhere at the beginning of this file? Ok, if this is preferred. > >> +{ >> + unsigned long physpages, codesize, datasize, rosize, bss_size; >> + unsigned long init_code_size, init_data_size; >> + >> + physpages = get_num_physpages(); >> + codesize = _etext - _stext; >> + datasize = _edata - _sdata; >> + rosize = __end_rodata - __start_rodata; >> + bss_size = __bss_stop - __bss_start; >> + init_data_size = __init_end - __init_begin; >> + init_code_size = _einittext - _sinittext; >> + >> + /* >> + * Detect special cases and adjust section sizes accordingly: >> + * 1) .init.* may be embedded into .data sections >> + * 2) .init.text.* may be out of [__init_begin, __init_end], >> + * please refer to arch/tile/kernel/vmlinux.lds.S. >> + * 3) .rodata.* may be embedded into .text or .data sections. >> + */ >> +#define adj_init_size(start, end, size, pos, adj) \ >> + do { \ >> + if (&start[0] <= &pos[0] && &pos[0] < &end[0] && size > adj) \ >> + size -= adj; \ >> + } while (0) >> + >> + adj_init_size(__init_begin, __init_end, init_data_size, >> + _sinittext, init_code_size); >> + adj_init_size(_stext, _etext, codesize, _sinittext, init_code_size); >> + adj_init_size(_sdata, _edata, datasize, __init_begin, init_data_size); >> + adj_init_size(_stext, _etext, codesize, __start_rodata, rosize); >> + adj_init_size(_sdata, _edata, datasize, __start_rodata, rosize); >> + >> +#undef adj_init_size >> + >> + pr_info("Memory: %luK/%luK available (%luK kernel code, %luK rwdata, %luK rodata, %luK init, %luK bss, %luK reserved, %luK cma-reserved" >> +#ifdef CONFIG_HIGHMEM >> + ", %luK highmem" >> +#endif >> + ")\n", >> + K(nr_free_pages()), K(physpages), >> + codesize / SZ_1K, datasize / SZ_1K, rosize / SZ_1K, >> + (init_data_size + init_code_size) / SZ_1K, bss_size / SZ_1K, >> + K(physpages - totalram_pages() - totalcma_pages), >> + K(totalcma_pages) >> +#ifdef CONFIG_HIGHMEM >> + , K(totalhigh_pages()) >> +#endif >> + ); >> +} >> + >> void __init page_alloc_init_late(void) >> { >> struct zone *zone; >> @@ -2348,6 +2399,7 @@ void __init page_alloc_init_late(void) >> files_maxfiles_init(); >> #endif > >Maybe add a comment like > >/* Accounting of total+free memory is stable at this point. */ > >> + mem_init_print_info(); > > >-- >Cheers, > >David / dhildenb -- Wei Yang Help you, Help me