From patchwork Wed Apr 7 01:44:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michel Lespinasse X-Patchwork-Id: 12186499 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90069C433ED for ; Wed, 7 Apr 2021 01:51:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1D793613E1 for ; Wed, 7 Apr 2021 01:51:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D793613E1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=lespinasse.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 7F3B46B0088; Tue, 6 Apr 2021 21:51:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A3CF6B0089; Tue, 6 Apr 2021 21:51:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 644266B0095; Tue, 6 Apr 2021 21:51:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0120.hostedemail.com [216.40.44.120]) by kanga.kvack.org (Postfix) with ESMTP id 48C3C6B0088 for ; Tue, 6 Apr 2021 21:51:42 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 01459758E for ; Wed, 7 Apr 2021 01:51:41 +0000 (UTC) X-FDA: 78003894444.16.58DE5F5 Received: from server.lespinasse.org (server.lespinasse.org [63.205.204.226]) by imf03.hostedemail.com (Postfix) with ESMTP id 2BFB9C0001F7 for ; Wed, 7 Apr 2021 01:51:39 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=lespinasse.org; i=@lespinasse.org; q=dns/txt; s=srv-11-ed; t=1617759903; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=lXqSL1NodLGVhPgvf3TxvfQ3Pft8FvuZOwvv5Jh0BNQ=; b=FlfakSxMf6XS9pz7xRsk0OujrO1Y78RHmmo/v92A3WTWxqHlRuojP7dpuZjf1jcdjqeSc qyqJph9vO91y4NKAA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lespinasse.org; i=@lespinasse.org; q=dns/txt; s=srv-11-rsa; t=1617759903; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=lXqSL1NodLGVhPgvf3TxvfQ3Pft8FvuZOwvv5Jh0BNQ=; b=SyzMVd/oPjXcTxIr1A09NN6Sy6JN5EtqFXUb6m3buvczgQ6z+XTzaVJKtKnllmdM9j5M1 aPxK0kiyf3ZhqUYkO11qmeybD7YLnpvV96GI0jWIp+EACru/Mg/MeH1B9aVU7sSnNDnBc+k KoSW+sD8JIMrPNMvgDvYJdhyF9IGT+Q3LUMAur5iLxaufNy68Vfa4Fdz60mILR1CZPiQCx8 xz+MpCbQG9r9eqzGhlfg4dDWaS6vAl+sR4VEDtucW39saGCi7PdpfSX1/j6bqPaeIlzSpGE FUNB94XMo5K84qpqdA35DgxBaqyZrZAXjtA5jgO+3sQSjH61yDozMsxOp32w== Received: from zeus.lespinasse.org (zeus.lespinasse.org [IPv6:fd00::150:0]) by server.lespinasse.org (Postfix) with ESMTPS id 604D316068A; Tue, 6 Apr 2021 18:45:03 -0700 (PDT) Received: by zeus.lespinasse.org (Postfix, from userid 1000) id 513F419F31D; Tue, 6 Apr 2021 18:45:03 -0700 (PDT) From: Michel Lespinasse To: Linux-MM Cc: Laurent Dufour , Peter Zijlstra , Michal Hocko , Matthew Wilcox , Rik van Riel , Paul McKenney , Andrew Morton , Suren Baghdasaryan , Joel Fernandes , Rom Lemarchand , Linux-Kernel , Michel Lespinasse Subject: [RFC PATCH 34/37] mm: rcu safe vma freeing only for multithreaded user space Date: Tue, 6 Apr 2021 18:44:59 -0700 Message-Id: <20210407014502.24091-35-michel@lespinasse.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210407014502.24091-1-michel@lespinasse.org> References: <20210407014502.24091-1-michel@lespinasse.org> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 2BFB9C0001F7 X-Stat-Signature: zw7tx7c3t5tcajynp7y6hsrkf8571scb Received-SPF: none (lespinasse.org>: No applicable sender policy available) receiver=imf03; identity=mailfrom; envelope-from=""; helo=server.lespinasse.org; client-ip=63.205.204.226 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1617760299-877276 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Performance tuning: as single threaded userspace does not use speculative page faults, it does not require rcu safe vma freeing. Turn this off to avoid the related (small) extra overheads. For multi threaded userspace, we often see a performance benefit from the rcu safe vma freeing - even in tests that do not have any frequent concurrent page faults ! This is because rcu safe vma freeing prevents recently released vmas from being immediately reused in a new thread. Signed-off-by: Michel Lespinasse --- kernel/fork.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 2f20a5c5fed8..623875e8e742 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -389,10 +389,12 @@ static void __vm_area_free(struct rcu_head *head) void vm_area_free(struct vm_area_struct *vma) { #ifdef CONFIG_SPECULATIVE_PAGE_FAULT - call_rcu(&vma->vm_rcu, __vm_area_free); -#else - ____vm_area_free(vma); + if (atomic_read(&vma->vm_mm->mm_users) > 1) { + call_rcu(&vma->vm_rcu, __vm_area_free); + return; + } #endif + ____vm_area_free(vma); } static void account_kernel_stack(struct task_struct *tsk, int account)