Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp797923ybz; Wed, 22 Apr 2020 08:11:15 -0700 (PDT) X-Google-Smtp-Source: APiQypLHRijkL3SacLbZryB1svP2K/e/lqoZyz6P9xR2wQGY6/ROPeSQa4RjP7SKxXum0zoD5Tkw X-Received: by 2002:a17:906:505:: with SMTP id j5mr27192617eja.13.1587568275550; Wed, 22 Apr 2020 08:11:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587568275; cv=none; d=google.com; s=arc-20160816; b=m695+nRxHehoZj6i0jgIgtYcI52IgvDnZV1lB+S9DdodB6ALN3YabJJrFcX24v0axv l3KWgwU2Ts3IIZwiCBoWzltQUB2+BgtGmC1NKm0LAAqNhWbBzbDi1RerBAleo70EMb8H LmTBadmqlXwFZ/b9ZzdMldf7szXK9+jKa1jyq7MNo3mmM3f9kvDoEmOCYS0bJu56lFDC bFfqfQbX8mDJff0X6qV7BCPSnmzqFWQ6Ee0z3TEFwH2LxtNmThvKHTIE8fF/4b4myRDO bumR9Eq74eokxhJLxgcZ5/lIBVG5XRyKuxhlBbxykB9cLubd4/hoJ1mn+Ze84XDwQHf9 zbpQ== 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; bh=Ra1t6uopIFG4F4iEW05CdOv4ygeS4bb0RjRWj2WR7z8=; b=NPZMcTViO3pduvs73nPGswxrzSfUjpAZHf1168/d1M8LaR8fc2LFhxZM/uiG4UX/HX Mei2/ro12267q1n4XlkJwLTFI4ZPnh0KF6BHbzeWwyDCpJqyUQBJnVvAMcnd3gyoHsEI c9gbRsW3jqlDJBYkZqDgijaH8ojDVW+03sUT5pyrb3iuL+a6LoPkxXT4OoasHJ3dmYRv BGgCUkRwgIrMkQsBQFvzRnc72nrIAXyA6DUDvf72DTVr/s02fjbmO87EjBA/Gs79i4B/ hbvC30Dp8BEELh0r/VNs0rIrcDrIZ6xZ1EpdPdfIIRe820bA6rhzXXgQSvl8dsMO85Ff Csvg== 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 lc1si3784060ejb.198.2020.04.22.08.10.31; Wed, 22 Apr 2020 08:11:15 -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 S1728363AbgDVPEE (ORCPT + 99 others); Wed, 22 Apr 2020 11:04:04 -0400 Received: from mx2.suse.de ([195.135.220.15]:58114 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728072AbgDVPDH (ORCPT ); Wed, 22 Apr 2020 11:03:07 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 5EB3FADEB; Wed, 22 Apr 2020 15:03:03 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 928911E0E6E; Wed, 22 Apr 2020 17:03:03 +0200 (CEST) From: Jan Kara To: Matthew Wilcox Cc: , LKML , Jan Kara Subject: [PATCH 14/23] workingset: Use xas_store_noinit() to clear shadow entry Date: Wed, 22 Apr 2020 17:02:47 +0200 Message-Id: <20200422150256.23473-15-jack@suse.cz> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20200422150256.23473-1-jack@suse.cz> References: <20200422150256.23473-1-jack@suse.cz> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Shadow entries have no marks. Use xas_store_noinit() to clear the entry so avoid unneeded initialization of the xarray marks. This provides a nice boost to truncate numbers. Sample benchmark showing time to truncate 128 files 1GB each on machine with 64GB of RAM (so about half of entries are shadow entries): AVG STDDEV Vanilla 4.825s 0.036 Patched 4.516s 0.014 So we can see about 6% reduction in overall truncate time. Signed-off-by: Jan Kara --- mm/truncate.c | 2 +- mm/workingset.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/truncate.c b/mm/truncate.c index dd9ebc1da356..baef636564cc 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -39,7 +39,7 @@ static inline void __clear_shadow_entry(struct address_space *mapping, xas_set_update(&xas, workingset_update_node); if (xas_load(&xas) != entry) return; - xas_store(&xas, NULL); + xas_store_noinit(&xas, NULL); mapping->nrexceptional--; } diff --git a/mm/workingset.c b/mm/workingset.c index 474186b76ced..6a492140057f 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -537,7 +537,7 @@ static enum lru_status shadow_lru_isolate(struct list_head *item, * We could store a shadow entry here which was the minimum of the * shadow entries we were tracking ... */ - xas_store(&xas, NULL); + xas_store_noinit(&xas, NULL); __inc_lruvec_slab_state(node, WORKINGSET_NODERECLAIM); out_invalid: -- 2.16.4