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 2A8B6C433FE for ; Mon, 7 Mar 2022 09:24:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A77548D0002; Mon, 7 Mar 2022 04:24:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A26608D0001; Mon, 7 Mar 2022 04:24:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 915A88D0002; Mon, 7 Mar 2022 04:24:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0060.hostedemail.com [216.40.44.60]) by kanga.kvack.org (Postfix) with ESMTP id 821A98D0001 for ; Mon, 7 Mar 2022 04:24:48 -0500 (EST) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 396999C05 for ; Mon, 7 Mar 2022 09:24:48 +0000 (UTC) X-FDA: 79217055456.29.0F4E684 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf17.hostedemail.com (Postfix) with ESMTP id 8BD6240005 for ; Mon, 7 Mar 2022 09:24:47 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5EA74210F4; Mon, 7 Mar 2022 09:24:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1646645084; h=from:from:reply-to: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=dbesU7tJyBXRg16/sf1QCiyqq4j+TrNZcTyuNDIT7/4=; b=rTLHFWB4bkpJaVJPgKjefViGQ1MW7mGfILnZGnmR/e1uSjeYcrgMulGOd81cy7kQCCew/o qlhKN9armihWCc83R9lwywRfuwL0FTtyI7aqVZNB//zMIUql6X7nqbrnWf4XkQalzVmoXZ DAvljv84jgZXc/4TJZKTzQ6a7ut18xI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1646645084; h=from:from:reply-to: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=dbesU7tJyBXRg16/sf1QCiyqq4j+TrNZcTyuNDIT7/4=; b=WmOasQHVSV5ZUWpJlANconS3gOQ1nNinKIGCsJfgVaOl4agm+UAVZ6lwdDagPbLzyexTBT DKCcO82dGtWe4LBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3000E13A84; Mon, 7 Mar 2022 09:24:44 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id w4wFC1zPJWL+CwAAMHmgww (envelope-from ); Mon, 07 Mar 2022 09:24:44 +0000 Message-ID: <862170fd-a325-a158-36b8-eb73b15c2629@suse.cz> Date: Mon, 7 Mar 2022 10:24:43 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Content-Language: en-US To: Eric Dumazet , Andrew Morton Cc: linux-kernel , linux-mm , Eric Dumazet , Mel Gorman , Michal Hocko , Shakeel Butt , Wei Xu , Greg Thelen , Hugh Dickins , David Rientjes References: <20220304170215.1868106-1-eric.dumazet@gmail.com> From: Vlastimil Babka Subject: Re: [PATCH v2] mm/page_alloc: call check_new_pages() while zone spinlock is not held In-Reply-To: <20220304170215.1868106-1-eric.dumazet@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 8BD6240005 X-Stat-Signature: pn7abts6cziom4rdrgiqby7fdetnx9me Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=rTLHFWB4; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=WmOasQHV; spf=pass (imf17.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1646645087-495734 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: On 3/4/22 18:02, Eric Dumazet wrote: > From: Eric Dumazet > > For high order pages not using pcp, rmqueue() is currently calling > the costly check_new_pages() while zone spinlock is held, > and hard irqs masked. > > This is not needed, we can release the spinlock sooner to reduce > zone spinlock contention. > > Note that after this patch, we call __mod_zone_freepage_state() > before deciding to leak the page because it is in bad state. Which is arguably an accounting fix on its own, because when we remove page from the free list, we should decrease the respective counter(s) even if we find the page is in bad state and discard (effectively leak) it. > > v2: We need to keep interrupts disabled to call __mod_zone_freepage_state() > > Signed-off-by: Eric Dumazet Reviewed-by: Vlastimil Babka > Cc: Mel Gorman > Cc: Vlastimil Babka > Cc: Michal Hocko > Cc: Shakeel Butt > Cc: Wei Xu > Cc: Greg Thelen > Cc: Hugh Dickins > Cc: David Rientjes > --- > mm/page_alloc.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 3589febc6d31928f850ebe5a4015ddc40e0469f3..1804287c1b792b8aa0e964b17eb002b6b1115258 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3706,10 +3706,10 @@ struct page *rmqueue(struct zone *preferred_zone, > * allocate greater than order-1 page units with __GFP_NOFAIL. > */ > WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); > - spin_lock_irqsave(&zone->lock, flags); > > do { > page = NULL; > + spin_lock_irqsave(&zone->lock, flags); > /* > * order-0 request can reach here when the pcplist is skipped > * due to non-CMA allocation context. HIGHATOMIC area is > @@ -3721,15 +3721,15 @@ struct page *rmqueue(struct zone *preferred_zone, > if (page) > trace_mm_page_alloc_zone_locked(page, order, migratetype); > } > - if (!page) > + if (!page) { > page = __rmqueue(zone, order, migratetype, alloc_flags); > - } while (page && check_new_pages(page, order)); > - if (!page) > - goto failed; > - > - __mod_zone_freepage_state(zone, -(1 << order), > - get_pcppage_migratetype(page)); > - spin_unlock_irqrestore(&zone->lock, flags); > + if (!page) > + goto failed; > + } > + __mod_zone_freepage_state(zone, -(1 << order), > + get_pcppage_migratetype(page)); > + spin_unlock_irqrestore(&zone->lock, flags); > + } while (check_new_pages(page, order)); > > __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); > zone_statistics(preferred_zone, zone, 1);