Received: by 10.192.165.156 with SMTP id m28csp1169468imm; Wed, 11 Apr 2018 13:48:00 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/21jEAdfakLDdejfXIr8733dC18KMNHGeoq0LThp/NzBSB9JLn+vdTiZZYtXLpsqPEHKC0 X-Received: by 10.101.93.7 with SMTP id e7mr4596525pgr.119.1523479680641; Wed, 11 Apr 2018 13:48:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523479680; cv=none; d=google.com; s=arc-20160816; b=WgepIIP5+/zcDewqazTS9ISHidkDcIkBGVMtwMBZfrcDPBevj8jTc3bfpFHTlvslsQ M510FyFPKW0adqpEtieU7bWFS5EZWiLZk01uzXgWYVaRam57TadsN1ReSJm9Gqj32p4y IdAqtYxFjqDPk67Dk5tGyUOjaYHURk3E2/Hb8cNY3O5wghfYgPFOBhmWGgpPlN0CyHxB VaOPggLnCAACvDQr1pHBYrhaXF7zvKrGql45b5cZ8pG4McqP2/B0byZGsFI32PgiIb8O SxSoGkOsnIq7YCGY2XY9l4waI48XEInIVCNM/tj4zGorOH6n2rGJczp3f1Xs5PHoJbDH 8Csw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=oa5ck88G2xhW2AAqDPtdg5tVT6wDUxP8QJhQuB+5q10=; b=OlTOk0ny+GM0EtYcHZgbuYvmKtYkPlS/+Rre+3LgbcKtY8R1yVDgGB7c8Cy+sRcV8l lh29tv648toGmnVNXqo6wLjTU4TrZAikKi7YVU77B29J4EXVisJN4+4/DTr10XGpYbVZ 306PqPzI8FRsaVG1wNr3Dqx3vdNykl/6w1LTlWmVTOPMlLI/hA7Af0ZytYkoOJuWgM7H ozU9sXcVy9YqnKIC3cua9TxDADZlQy2uyLbvQr4pBdkPXnSsFy19lNjLAxyHmvxO9mNQ 5VYBY0o9R74wmMwUG51PWhE9wL5L+IiqGT73Z9+ZA+Qu5XQv+plgM6W3rZcikVYB8cAy un+w== 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 a84si1399545pfl.154.2018.04.11.13.47.23; Wed, 11 Apr 2018 13:48:00 -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 S932402AbeDKUoB (ORCPT + 99 others); Wed, 11 Apr 2018 16:44:01 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59278 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755860AbeDKSrX (ORCPT ); Wed, 11 Apr 2018 14:47:23 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id A02A3DF3; Wed, 11 Apr 2018 18:47:22 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vlastimil Babka , "Peter Zijlstra (Intel)" , Rik van Riel , Mel Gorman , Linus Torvalds , Thomas Gleixner , Ingo Molnar , Sasha Levin Subject: [PATCH 4.4 062/190] sched/numa: Use down_read_trylock() for the mmap_sem Date: Wed, 11 Apr 2018 20:35:08 +0200 Message-Id: <20180411183553.939186174@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180411183550.114495991@linuxfoundation.org> References: <20180411183550.114495991@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Vlastimil Babka [ Upstream commit 8655d5497735b288f8a9b458bd22e7d1bf95bb61 ] A customer has reported a soft-lockup when running an intensive memory stress test, where the trace on multiple CPU's looks like this: RIP: 0010:[] [] native_queued_spin_lock_slowpath+0x10e/0x190 ... Call Trace: [] queued_spin_lock_slowpath+0x7/0xa [] change_protection_range+0x3b1/0x930 [] change_prot_numa+0x18/0x30 [] task_numa_work+0x1fe/0x310 [] task_work_run+0x72/0x90 Further investigation showed that the lock contention here is pmd_lock(). The task_numa_work() function makes sure that only one thread is let to perform the work in a single scan period (via cmpxchg), but if there's a thread with mmap_sem locked for writing for several periods, multiple threads in task_numa_work() can build up a convoy waiting for mmap_sem for read and then all get unblocked at once. This patch changes the down_read() to the trylock version, which prevents the build up. For a workload experiencing mmap_sem contention, it's probably better to postpone the NUMA balancing work anyway. This seems to have fixed the soft lockups involving pmd_lock(), which is in line with the convoy theory. Signed-off-by: Vlastimil Babka Signed-off-by: Peter Zijlstra (Intel) Acked-by: Rik van Riel Acked-by: Mel Gorman Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/20170515131316.21909-1-vbabka@suse.cz Signed-off-by: Ingo Molnar Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- kernel/sched/fair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -2223,7 +2223,8 @@ void task_numa_work(struct callback_head return; - down_read(&mm->mmap_sem); + if (!down_read_trylock(&mm->mmap_sem)) + return; vma = find_vma(mm, start); if (!vma) { reset_ptenuma_scan(p);