Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp917357pxf; Wed, 7 Apr 2021 15:01:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxC0U03ffEIzQmlxb+p5IcBDNQO7Hk9TFVoMVhZs82P9m5wLmLZcmWe4QpctwJUJ/RIBVsm X-Received: by 2002:a17:90a:bd09:: with SMTP id y9mr5178601pjr.179.1617832919009; Wed, 07 Apr 2021 15:01:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617832919; cv=none; d=google.com; s=arc-20160816; b=J/FbiGM3atKXdkcm1hvoPw5R680tu+dTxXPP5SCgdUe5A5iM4qU1yzeWrSFyefXsBP 1uRRp6mLGm8fNhmwx6KFFE29eOReAXTjpuDK30N4EDFbO7bh6KC4Mq5bb4zWvvxhRm5/ jNtEiO9MVOX51kPX2XljibIG0bRSd1CqsUPSeAypBQzPxxSQpSGPytFPGt6hlzViV6sM 4WZq55+q3+sjwRQbm5mRgFuFJreTiK9EWYd8yVCyGIMAc5OQ5NaOJvHb9vhq88MvAM1g o6JhoHoPwQd5sCeKObUbeqq40vioHe7i0lL80Oo6pgxv6tETqdDU5GQrtNBq1TVG8cnD /07Q== 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=G9lOkuxBFZG/vT8m/A9YqToI1xjkRYteJ56aaQSJMds=; b=Md+vH/CuZgpLkGopUh+jJdlNAinWI5YpElUbNv1QO6M/gPBvCVIzm+gHV5RxNXHGsc BvV7LcLCLkTdKvxN9hYjT1oguk50dnF8KBg2MOGhjw5GwSYDhfwK6JNxf6w7ji52+0et C9SRAID6m6CIbLMweREcu0wDD+le48Kg9VvsDdUg0865ibj01iAybiK8s28F+03FWAEs M4NEz8NAnSqXXhhujFVj6nII2otehbqqVWv/Xu8uobAXu35Xz073Voly5GO2g0ttZlrK lUvi3X2fY73ursZZKOwPkF6WQBQp5MNLlOg3lFfECtw70Z7bPv3+dxHdcpzd7VImq4+c dzJg== 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 s191si17763096pgs.463.2021.04.07.15.01.47; Wed, 07 Apr 2021 15:01:58 -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 S1356184AbhDGU0v (ORCPT + 99 others); Wed, 7 Apr 2021 16:26:51 -0400 Received: from outbound-smtp31.blacknight.com ([81.17.249.62]:45903 "EHLO outbound-smtp31.blacknight.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356143AbhDGUZ7 (ORCPT ); Wed, 7 Apr 2021 16:25:59 -0400 Received: from mail.blacknight.com (pemlinmail01.blacknight.ie [81.17.254.10]) by outbound-smtp31.blacknight.com (Postfix) with ESMTPS id CB767C0D7A for ; Wed, 7 Apr 2021 21:25:46 +0100 (IST) Received: (qmail 16972 invoked from network); 7 Apr 2021 20:25:46 -0000 Received: from unknown (HELO stampy.112glenside.lan) (mgorman@techsingularity.net@[84.203.22.4]) by 81.17.254.9 with ESMTPA; 7 Apr 2021 20:25:46 -0000 From: Mel Gorman To: Linux-MM , Linux-RT-Users Cc: LKML , Chuck Lever , Jesper Dangaard Brouer , Matthew Wilcox , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Michal Hocko , Oscar Salvador , Mel Gorman Subject: [PATCH 07/11] mm/page_alloc: Reduce duration that IRQs are disabled for VM counters Date: Wed, 7 Apr 2021 21:24:19 +0100 Message-Id: <20210407202423.16022-8-mgorman@techsingularity.net> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210407202423.16022-1-mgorman@techsingularity.net> References: <20210407202423.16022-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_RTkernels. Signed-off-by: Mel Gorman --- 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 defb0e436fac..bd75102ef1e1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3474,11 +3474,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; } @@ -3530,15 +3530,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 */ @@ -3551,7 +3551,7 @@ struct page *rmqueue(struct zone *preferred_zone, return page; failed: - local_irq_restore(flags); + spin_unlock_irqrestore(&zone->lock, flags); return NULL; } @@ -5103,11 +5103,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