Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4318027pxj; Wed, 12 May 2021 03:00:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzcnToq2h4uQl+OE4qQZ+J3sOxTQ6Pi+1yEyHSktL4jsDf2droqGkk2uIVK6BY2aABvXbmt X-Received: by 2002:a50:cdd1:: with SMTP id h17mr41914129edj.178.1620813609812; Wed, 12 May 2021 03:00:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620813609; cv=none; d=google.com; s=arc-20160816; b=XZAcppd2fn/13iyQX7HZf82I8vuMV3Ukv6pEaG8EszWX8BIhwe833zKI/pMG1QuI3n nW2RKAi0EXblo0pWcfKFuA+yTnMMZYS4VTmchjF5d1JA960CN3ItPH7nM8vqMKIHjNja K6KX76u8ND/8ZpMrIThWHgjnth4jy4QsbmVnIA1aKKVcC0eimutgHLCLPQpemY+0+kZI TQvQLUUchXIzz8FUGnJ2hwYAEBH07AipXjRCJQ7PsRMUoJCP2xOCOmT8ZcXNlCUT8Y3T qEhXaqi258s0b7P7w9sfxhA7PJ/ncQZAVuuXp7eCzldPEJw8NjDmkmcYEPbQLmHV4PCB Q69w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=WZFUHLr2Fs6zfmUwrO3up7jPgDFHegJK2ZRQ0KXE+pI=; b=jtGPwWldEd7aJ6iZBbhHbyWcAY9XqBj3TqiFa8BvV18Eo3cM8m5dAZKsMn63Ax1m+t jUvrSO9dgAUV3SpJdo53zct64jsrmEquFcB4U3/iP1Qp/vGsfzmuTE8hRVnw+6Z03Mkj hO3va7je5hsuUlEwj4zIwEYkMfe7UnMvvqGn3A72LcfuBIGFwa7gPcebCrlNGB/GsvWf FRIUmvzgFRLN9okPaDS5ceuzQ/V2KFph6ARGE0dpIaXeOOCxZJL1jwdGlkp44ttcR86J VTtEdQRagJvBY2+8wE+I2r1slvJQ88X0lBBdlZbBKmRU36Wn4qbZHZVCLtX18n7oNk/W 0JUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d14si17567780edx.122.2021.05.12.02.59.45; Wed, 12 May 2021 03:00:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230347AbhELJ5V (ORCPT + 99 others); Wed, 12 May 2021 05:57:21 -0400 Received: from outbound-smtp08.blacknight.com ([46.22.139.13]:41547 "EHLO outbound-smtp08.blacknight.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230379AbhELJ5U (ORCPT ); Wed, 12 May 2021 05:57:20 -0400 Received: from mail.blacknight.com (pemlinmail01.blacknight.ie [81.17.254.10]) by outbound-smtp08.blacknight.com (Postfix) with ESMTPS id ADD191C3845 for ; Wed, 12 May 2021 10:56:11 +0100 (IST) Received: (qmail 29448 invoked from network); 12 May 2021 09:56:11 -0000 Received: from unknown (HELO stampy.112glenside.lan) (mgorman@techsingularity.net@[84.203.23.168]) by 81.17.254.9 with ESMTPA; 12 May 2021 09:56:11 -0000 From: Mel Gorman To: Andrew Morton Cc: Chuck Lever , Jesper Dangaard Brouer , Thomas Gleixner , Sebastian Andrzej Siewior , Peter Zijlstra , Ingo Molnar , Michal Hocko , Vlastimil Babka , Linux-MM , Linux-RT-Users , LKML , Mel Gorman Subject: [PATCH 6/9] mm/page_alloc: Reduce duration that IRQs are disabled for VM counters Date: Wed, 12 May 2021 10:54:55 +0100 Message-Id: <20210512095458.30632-7-mgorman@techsingularity.net> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210512095458.30632-1-mgorman@techsingularity.net> References: <20210512095458.30632-1-mgorman@techsingularity.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org IRQs are left disabled for the zone and node VM event counters. This is unnecessary as the affected counters are allowed to race for preemmption and IRQs. This patch reduces the scope of IRQs being disabled via local_[lock|unlock]_irq on !PREEMPT_RT kernels. One __mod_zone_freepage_state is still called with IRQs disabled. While this could be moved out, it's not free on all architectures as some require IRQs to be disabled for mod_zone_page_state on !PREEMPT_RT kernels. Signed-off-by: Mel Gorman Acked-by: Vlastimil Babka --- mm/page_alloc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 7970efa142b0..5879b595b74b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3519,11 +3519,11 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone, pcp = this_cpu_ptr(zone->per_cpu_pageset); list = &pcp->lists[migratetype]; page = __rmqueue_pcplist(zone, migratetype, alloc_flags, pcp, list); + local_unlock_irqrestore(&pagesets.lock, flags); if (page) { __count_zid_vm_events(PGALLOC, page_zonenum(page), 1); zone_statistics(preferred_zone, zone, 1); } - local_unlock_irqrestore(&pagesets.lock, flags); return page; } @@ -3575,15 +3575,15 @@ struct page *rmqueue(struct zone *preferred_zone, if (!page) page = __rmqueue(zone, order, migratetype, alloc_flags); } while (page && check_new_pages(page, order)); - spin_unlock(&zone->lock); if (!page) goto failed; + __mod_zone_freepage_state(zone, -(1 << order), get_pcppage_migratetype(page)); + spin_unlock_irqrestore(&zone->lock, flags); __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); zone_statistics(preferred_zone, zone, 1); - local_irq_restore(flags); out: /* Separate test+clear to avoid unnecessary atomics */ @@ -3596,7 +3596,7 @@ struct page *rmqueue(struct zone *preferred_zone, return page; failed: - local_irq_restore(flags); + spin_unlock_irqrestore(&zone->lock, flags); return NULL; } @@ -5147,11 +5147,11 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid, nr_populated++; } + local_unlock_irqrestore(&pagesets.lock, flags); + __count_zid_vm_events(PGALLOC, zone_idx(zone), nr_account); zone_statistics(ac.preferred_zoneref->zone, zone, nr_account); - local_unlock_irqrestore(&pagesets.lock, flags); - return nr_populated; failed_irq: -- 2.26.2