Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2001289pxb; Thu, 11 Feb 2021 01:28:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJxxcxoDOvPaVDUPrskN9kUc7rUDz1v85dQm3QtW8yMDciW5+IDAJo4Vg0RQCCniH9T2ardI X-Received: by 2002:a17:906:2a8b:: with SMTP id l11mr7572595eje.1.1613035691983; Thu, 11 Feb 2021 01:28:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613035691; cv=none; d=google.com; s=arc-20160816; b=NBT4MsmIAmY81bFVsA4iTs+RueahOhsCp8C4Bd47VB5H0s6hH9VCQp586wYOnVeAvK Uu9aMCN/YJu2AHAwhoVrgiY6uVg5za6cuDy+h4mE6ZyVFmLwvHSA4qau7GQhxbnCRTvX rXyUwApXslqDUyk9PSIOaAIEU6F4i2az4VHbUb45xeOVva3mLa6RRVe7ddi6BPbPG86D iEIgSRsqnteGUKYvEnnmvdomTw/b8aYkpiktH8utNDX8XQxU2PQw5frOTKhQtJPGOzDZ b5UF8ha74nDn/2rvQcUgkjkHgA7fmMpcaxcztpbEsZz8QRs0Nd+dVsjTFFa38+HWGymW nSGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=Gpr4PgfuzDM65UpAb69ufaO8NLgbQDCNBJeVewuX+Cg=; b=y3SFuGfvre08GeElnNG7IidGy8tOlzKcB2FyaaAbHd2QKLNOCT6yQ6IrcIFU11xF+t eoIoG03385PULeMekdYQUr3EekwCHeuqRpBlMktZ+kZGCsZCer9aioiLpkzTrSVmJMMK 0tJg3XzzoVtAPI2FuXgMspDMZNMp6Sggxb00+Wgh7YQ23jOdGPlxB3NSOKL3MECj18Zg 4ZKn5lmOzOTF/mOM7xTpxU7rm4/Zn5YZQLi7I94BKIfg2PVQi8SP6kzLJsLomPvvyWLV fZI8zYBIH7dEXww1BhDa3eGZWrCFncYiUuEJAnOREqj9J9ee8hypqtzEOw2k53TY+FzC I9fQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-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 a67si3557256edf.42.2021.02.11.01.27.36; Thu, 11 Feb 2021 01:28:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-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-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230051AbhBKJ1K (ORCPT + 99 others); Thu, 11 Feb 2021 04:27:10 -0500 Received: from outbound-smtp32.blacknight.com ([81.17.249.64]:52440 "EHLO outbound-smtp32.blacknight.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230303AbhBKJVB (ORCPT ); Thu, 11 Feb 2021 04:21:01 -0500 X-Greylist: delayed 427 seconds by postgrey-1.27 at vger.kernel.org; Thu, 11 Feb 2021 04:20:59 EST Received: from mail.blacknight.com (pemlinmail04.blacknight.ie [81.17.254.17]) by outbound-smtp32.blacknight.com (Postfix) with ESMTPS id F3F07BEED0 for ; Thu, 11 Feb 2021 09:12:37 +0000 (GMT) Received: (qmail 21012 invoked from network); 11 Feb 2021 09:12:37 -0000 Received: from unknown (HELO techsingularity.net) (mgorman@techsingularity.net@[84.203.22.4]) by 81.17.254.9 with ESMTPSA (AES256-SHA encrypted, authenticated); 11 Feb 2021 09:12:37 -0000 Date: Thu, 11 Feb 2021 09:12:35 +0000 From: Mel Gorman To: Chuck Lever Cc: Mel Gorman , Jesper Dangaard Brouer , Linux NFS Mailing List , "linux-mm@kvack.org" , Jakub Kicinski Subject: Re: alloc_pages_bulk() Message-ID: <20210211091235.GC3697@techsingularity.net> References: <2A0C36E7-8CB0-486F-A8DB-463CA28C5C5D@oracle.com> <20210209113108.1ca16cfa@carbon> <20210210084155.GA3697@techsingularity.net> <20210210124103.56ed1e95@carbon> <20210210130705.GC3629@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Wed, Feb 10, 2021 at 10:58:37PM +0000, Chuck Lever wrote: > > Not in the short term due to bug load and other obligations. > > > > The original series had "mm, page_allocator: Only use per-cpu allocator > > for irq-safe requests" but that was ultimately rejected because softirqs > > were affected so it would have to be done without that patch. > > > > The last patch can be rebased easily enough but it only batch allocates > > order-0 pages. It's also only build tested and could be completely > > miserable in practice and as I didn't even try boot test let, let alone > > actually test it, it could be a giant pile of crap. To make high orders > > work, it would need significant reworking but if the API showed even > > partial benefit, it might motiviate someone to reimplement the bulk > > interfaces to perform better. > > > > Rebased diff, build tested only, might not even work > > Thanks, Mel, for kicking off a forward port. > > It compiles. I've added a patch to replace the page allocation loop > in svc_alloc_arg() with a call to alloc_pages_bulk(). > > The server system deadlocks pretty quickly with any NFS traffic. Based > on some initial debugging, it appears that a pcplist is getting corrupted > and this causes the list_del() in __rmqueue_pcplist() to fail during a > a call to alloc_pages_bulk(). > Parameters to __rmqueue_pcplist are garbage as the parameter order changed. I'm surprised it didn't blow up in a spectacular fashion. Again, this hasn't been near any testing and passing a list with high orders to free_pages_bulk() will corrupt lists too. Mostly it's a curiousity to see if there is justification for reworking the allocator to fundamentally deal in batches and then feed batches to pcp lists and the bulk allocator while leaving the normal GFP API as single page "batches". While that would be ideal, it's relatively high risk for regressions. There is still some scope for adding a basic bulk allocator before considering a major refactoring effort. diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f8353ea7b977..8f3fe7de2cf7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5892,7 +5892,7 @@ __alloc_pages_bulk_nodemask(gfp_t gfp_mask, unsigned int order, pcp_list = &pcp->lists[migratetype]; while (nr_pages) { - page = __rmqueue_pcplist(zone, gfp_mask, migratetype, + page = __rmqueue_pcplist(zone, migratetype, alloc_flags, pcp, pcp_list); if (!page) break; -- Mel Gorman SUSE Labs