Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3123123imm; Fri, 20 Jul 2018 10:31:15 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdjSPn1lYgf2yx3c4CItKSgXtPAYWUoZ0Ki8m52Z+SDEL8aEd9BKZbsjtDC7PoCoa2hNEpO X-Received: by 2002:a63:2013:: with SMTP id g19-v6mr2915703pgg.68.1532107875421; Fri, 20 Jul 2018 10:31:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532107875; cv=none; d=google.com; s=arc-20160816; b=pw4Y93IRS4b517FE/g3NFr4n0QciSLi3nLvlPFLM77bQvIsROmkJC8WOuDeRWo8fyB u0Xs4vJtnI0aLDMNN9Ythnx3ULSN3JFWcbbjWEcTzOlS9Ze9b92Fh8vmgZAceBBOIo1c 5zsbLjvFJFwyxdD6/l2T/ojbqAJpsJH5BvK95GGO5WWAXs8gCpROim3BiBFV2w/GoO/l qd/tV2DpKaI/RLtgP1DPUeizRemqVCMpwa/+LJ8A3JMXikRRdD7x8TE5LK263Y6oYQdA IVlnNyOtQZxJrDTQgA6TzdcizZx1VTzSBrnpjXGJPksH1nuJY3cY8yMehtWTA/D7Ntu9 44uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=B0mmRtcnOG2vz4OGwKn7uIltCMvIwu28rjvV2eyJNI0=; b=PqTzvaLLGNpbKC8KAxySUOII+7C+e8hlfdgjgy5l474e36/uAPag1dF9tFAvd1MEwJ R+KDXVMAVN7U3tDXy+kCln2jvwlr9nKIOWmY4vTJBHnXpfhrj2vOnoFztlpUDSqLoE65 SqfxwbEIVtzGYDk+TU8KOcY3wvLRTfx2c8v4/XxULfXljk+98f5PVwOA9I4A0Fgl/rFv hT8NZL1Byl/QSXh32x4uGnYMzrFTIkvows1C1S1OnsZvwmNJuW9HqNw5oh0aUl0xnC0t RKtCP4ptfB0rDdeCm88svTD65e7TJBEssRUvWOst2r/j3Gly6CdG6zo4LCkn5B/Z5Qxw uT3g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h185-v6si2323344pfc.172.2018.07.20.10.31.00; Fri, 20 Jul 2018 10:31:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388186AbeGTSTk (ORCPT + 99 others); Fri, 20 Jul 2018 14:19:40 -0400 Received: from smtp2.provo.novell.com ([137.65.250.81]:41980 "EHLO smtp2.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387931AbeGTSTk (ORCPT ); Fri, 20 Jul 2018 14:19:40 -0400 Received: from linux-r8p5.suse.de (prv-ext-foundry1int.gns.novell.com [137.65.251.240]) by smtp2.provo.novell.com with ESMTP (TLS encrypted); Fri, 20 Jul 2018 11:30:19 -0600 From: Davidlohr Bueso To: akpm@linux-foundation.org Cc: jbaron@akamai.com, viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org, dave@stgolabs.net, Davidlohr Bueso Subject: [PATCH 1/2] fs/epoll: loosen irq safety in ep_scan_ready_list() Date: Fri, 20 Jul 2018 10:29:55 -0700 Message-Id: <20180720172956.2883-2-dave@stgolabs.net> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20180720172956.2883-1-dave@stgolabs.net> References: <20180720172956.2883-1-dave@stgolabs.net> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Saving and restoring interrupts in ep_scan_ready_list() is an overkill as it is never called with interrupts disabled. Loosen this to simply disabling local irqs such that archs where managing irqs is expensive or virtual environments. This patch yields some throughput improvements on a workload that is epoll intensive running on a single Xen DomU. 1 Job 7500 --> 8800 enq/s (+17%) 2 Jobs 14000 --> 15200 enq/s (+8%) 3 Jobs 20500 --> 22300 enq/s (+8%) 4 Jobs 25000 --> 28000 enq/s (+8-12)% Signed-off-by: Davidlohr Bueso --- fs/eventpoll.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 2737ef591b3e..2247769eb941 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -667,7 +667,6 @@ static __poll_t ep_scan_ready_list(struct eventpoll *ep, { __poll_t res; int pwake = 0; - unsigned long flags; struct epitem *epi, *nepi; LIST_HEAD(txlist); @@ -687,17 +686,17 @@ static __poll_t ep_scan_ready_list(struct eventpoll *ep, * because we want the "sproc" callback to be able to do it * in a lockless way. */ - spin_lock_irqsave(&ep->wq.lock, flags); + spin_lock_irq(&ep->wq.lock); list_splice_init(&ep->rdllist, &txlist); ep->ovflist = NULL; - spin_unlock_irqrestore(&ep->wq.lock, flags); + spin_unlock_irq(&ep->wq.lock); /* * Now call the callback function. */ res = (*sproc)(ep, &txlist, priv); - spin_lock_irqsave(&ep->wq.lock, flags); + spin_lock_irq(&ep->wq.lock); /* * During the time we spent inside the "sproc" callback, some * other events might have been queued by the poll callback. @@ -739,7 +738,7 @@ static __poll_t ep_scan_ready_list(struct eventpoll *ep, if (waitqueue_active(&ep->poll_wait)) pwake++; } - spin_unlock_irqrestore(&ep->wq.lock, flags); + spin_unlock_irq(&ep->wq.lock); if (!ep_locked) mutex_unlock(&ep->mtx); -- 2.16.4