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 39A9FC4828D for ; Mon, 5 Feb 2024 08:26:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C5D6E8D0003; Mon, 5 Feb 2024 03:26:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BE70A8D0001; Mon, 5 Feb 2024 03:26:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A87588D0003; Mon, 5 Feb 2024 03:26:35 -0500 (EST) 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 94DFF8D0001 for ; Mon, 5 Feb 2024 03:26:35 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 2D47B80530 for ; Mon, 5 Feb 2024 08:26:35 +0000 (UTC) X-FDA: 81757068750.14.D7F54BD Received: from out-179.mta1.migadu.com (out-179.mta1.migadu.com [95.215.58.179]) by imf16.hostedemail.com (Postfix) with ESMTP id 34464180010 for ; Mon, 5 Feb 2024 08:26:32 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=r6EZbbN5; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf16.hostedemail.com: domain of gang.li@linux.dev designates 95.215.58.179 as permitted sender) smtp.mailfrom=gang.li@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707121593; 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=FYnIGA8kuvR5y6gmVI63CeQLe1FfUo5SgyZ3aZHYeLs=; b=JcBW72gUXCEKU0ahACBu+LCMmt/bnweTZp02theHA/A/LApCmARVxlBYKIUp1QOoUy/P/+ yMv4GCq4hbN5Rop95VeymPzYRZdYWa/XVj0KU+rFIzO8v2S3v/p94OnOjqnu6RQKpY0K04 uFZpXKL4do+29LrU2YPwCJO0B3qpd0s= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=r6EZbbN5; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf16.hostedemail.com: domain of gang.li@linux.dev designates 95.215.58.179 as permitted sender) smtp.mailfrom=gang.li@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707121593; a=rsa-sha256; cv=none; b=YHUCSnoW+rdt/E0aqrwYQUfowbkcAe2BBYCcdSYMup78h1+S0j8LwoRpyolzMYNw3r7kO+ +q5nrXPWUgaiU3LBqG7dAH4wMaRgNIABZ++0L3MrP0vyhezgegpvpYSVehPCyfV7W/oEK7 pQC5QAhmpZBua+4AglXqk3qlrPXYrGI= Message-ID: <277e0eed-918f-414f-b19d-219bd155ac14@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1707121591; h=from:from: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; bh=FYnIGA8kuvR5y6gmVI63CeQLe1FfUo5SgyZ3aZHYeLs=; b=r6EZbbN5p7gCBCmq+arlz/5myx0SG5omwL9pKEuLL3Fgc1mWjvfa7e4ghJS2/D1r7f9o8H 8rV5IuT967VrA15Le/KCExhcfV+Wc0YhnkX+JwsKSeSLSG2VYR5B03ySNjwj2s1g2l2HeI kXvuz95nxj9X8f4n3S45zUZS2XctVMI= Date: Mon, 5 Feb 2024 16:26:23 +0800 MIME-Version: 1.0 Subject: Re: [PATCH v5 7/7] hugetlb: parallelize 1G hugetlb initialization Content-Language: en-US To: Muchun Song , David Hildenbrand , David Rientjes , Mike Kravetz , Andrew Morton , Tim Chen Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, ligang.bdlg@bytedance.com References: <20240126152411.1238072-1-gang.li@linux.dev> <20240126152411.1238072-8-gang.li@linux.dev> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Gang Li In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 34464180010 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: nsetrgifzbomb8a6ar9dp3dth77ghntc X-HE-Tag: 1707121592-609878 X-HE-Meta: U2FsdGVkX1+iFU670I1KEvxhNbIagBbo7prVFjchigKk4jr1w+QK2yXZlHiDsMYLP0Bh0z+a0ZVpZqUq/rHnRjvCKO8GCMH57xuATyk4iF0PHhqzxUyXgLSVhTeQLrkCx5c68P+EEs7bsFrCnX2tqZPWUya1v+bqTFOf3NtzRn/jCku9Jzc1Da/CxGCmIDSDeF7T0U9a6yuaddIfnlOZg0dtDk+gI0wcnkJcfaFIVzjK5HHn7VywNgwWsfey8DHBYH6sJW+DkP0M7brhY6Rb2/X4cvnD+qn9zJ62BhCDADkcRQr5X4G1KSXyvCcqrvMKOnGqAO2aMhjJVgLJ/4Le+3UYsa4nIiEh32feCmKFKA4ZPuKPqTMqrSnnTgfJRdFIGpPAnCRfLS8J4RUe+C4Cxfeo/JdC1BWDMFeTmv8/5q4nKljLjd58eOuJHidFZrxOacPAX+e5ymiRcRKkAS/GXufXl5mWsZMP/lmtTp2xjrc2hX2GTeaXMoEM/MshRDNe7rd9gqZ18K07EF18pRYLelenGbIvBTKDt5m9i4EZey1jfrRaWlLCsyRntSMQ9SaOUflo6J0+Bko9g2HrSCrv/dO9coOzJ28j1hb/ENMUo/o4IYEl2rjnkPqvmXqNaNm2ly8jSFJB/y/v+nBiLNtiCSzf5WnCn8fNMAF5B7FGjz/j22JtV3NYABww7qOhJvOAXzpWj/WjufDYI93B/fyVot3ldOZ4AAq993hNUPEFMbHKV60uCvfe1x14WYbZ5Nhsd95Vueq67je+pdaxvb0wXwnFOorWLTTa39Qm33x7HGKc4kgbtYoOcHOhoZwH8mlpTaIHdPVIGLDiXkbegdaHq0redfWa/jcD0C9XYirmoIctNeEr5W2iwOwQYR/wb324dgTlOVQNzGXgNKDfjNdOcTpDrW6+NW8mVwz0ntsyn5Jd5JrF8kAajtKb5qCmeJHTmIM996LZbAXkGeZ5uGz ppWUfMW3 12D49wewGsq+Kms0jo9oNRW1BA031L9NMjjmqbmdbhKXVE+mAF8sXRtt0rvak49taUBLztwrLGnlBQoaoGLL4jiDos9ebtj4ejsONyTVaQl86sUpL9hUIGJ0raA== 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 2024/2/5 15:28, Muchun Song wrote: > On 2024/1/26 23:24, Gang Li wrote: >> @@ -3390,8 +3390,6 @@ static void __init >> prep_and_add_bootmem_folios(struct hstate *h, >>       /* Send list for bulk vmemmap optimization processing */ >>       hugetlb_vmemmap_optimize_folios(h, folio_list); >> -    /* Add all new pool pages to free lists in one lock cycle */ >> -    spin_lock_irqsave(&hugetlb_lock, flags); >>       list_for_each_entry_safe(folio, tmp_f, folio_list, lru) { >>           if (!folio_test_hugetlb_vmemmap_optimized(folio)) { >>               /* >> @@ -3404,23 +3402,27 @@ static void __init >> prep_and_add_bootmem_folios(struct hstate *h, >>                       HUGETLB_VMEMMAP_RESERVE_PAGES, >>                       pages_per_huge_page(h)); >>           } >> +        /* Subdivide locks to achieve better parallel performance */ >> +        spin_lock_irqsave(&hugetlb_lock, flags); >>           __prep_account_new_huge_page(h, folio_nid(folio)); >>           enqueue_hugetlb_folio(h, folio); >> +        spin_unlock_irqrestore(&hugetlb_lock, flags); >>       } >> -    spin_unlock_irqrestore(&hugetlb_lock, flags); >>   } >>   /* >>    * Put bootmem huge pages into the standard lists after mem_map is up. >>    * Note: This only applies to gigantic (order > MAX_PAGE_ORDER) pages. >>    */ >> -static void __init gather_bootmem_prealloc(void) >> +static void __init gather_bootmem_prealloc_node(unsigned long start, >> unsigned long end, void *arg) >> + >>   { >> +    int nid = start; > > Sorry for so late to notice an issue here. I have seen a comment from > PADATA, whcih says: > >     @max_threads: Max threads to use for the job, actual number may be > less >                   depending on task size and minimum chunk size. > > PADATA will not guarantee gather_bootmem_prealloc_node() will be called > ->max_threads times (You have initialized it to the number of NUMA nodes in > gather_bootmem_prealloc). Therefore, we should add a loop here to > initialize > multiple nodes, namely (@end - @start) here. Otherwise, we will miss > initializing some nodes. > > Thanks. > In padata_do_multithreaded: ``` /* Ensure at least one thread when size < min_chunk. */ nworks = max(job->size / max(job->min_chunk, job->align), 1ul); nworks = min(nworks, job->max_threads); ps.nworks = padata_work_alloc_mt(nworks, &ps, &works); ``` So we have works <= max_threads, but >= size/min_chunk. Thanks!