From patchwork Wed Dec 19 19:29:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 10738059 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 93ECF6C5 for ; Wed, 19 Dec 2018 19:30:05 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8487927FAE for ; Wed, 19 Dec 2018 19:30:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7701C27FB1; Wed, 19 Dec 2018 19:30:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 20A8527FAE for ; Wed, 19 Dec 2018 19:30:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728282AbeLSTaE (ORCPT ); Wed, 19 Dec 2018 14:30:04 -0500 Received: from userp2120.oracle.com ([156.151.31.85]:41646 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727383AbeLSTaE (ORCPT ); Wed, 19 Dec 2018 14:30:04 -0500 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id wBJJTc4e159936; Wed, 19 Dec 2018 19:30:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=Yf4cp8/bOdGwF9rVbp/DETVmC4BagKq7/Lrfx1zF9lE=; b=bNfN2boRiZSiJQ1w0i4RQdKYNi1isSp0XesaTtjzGk/DWMkLb5Ydn9z5oGVk4UvodSQf 3/HR0GPJbCpJK5UgpvGT+2mmQ6yknZ6bs0qMHnF4AzAfMpPEw3IxPaCTJgnrBbQmsgim Z6N1JB6KdI8l9obrOn5yE2bssadrLNX+cXLwbV9jobs6Cd5IJaUKI9jk9E9LAlFD/c2i L/0AMv68LGTmPqnoRlHTfJtb7I5YKciCahPv8OlE7333xgWxGb2mFpZ3ftsavEct3Pzb uv/cMW0Vp8YWVfV0pzE57Y9HTFbF7IPgtOSzdG4ZHBsHMYl669Nu57Zdn23YFZFEu0ur /A== Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by userp2120.oracle.com with ESMTP id 2pfn1yth9m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Dec 2018 19:30:00 +0000 Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id wBJJU0QW014202 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Dec 2018 19:30:00 GMT Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id wBJJTxIS016743; Wed, 19 Dec 2018 19:29:59 GMT Received: from localhost (/67.169.218.210) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 19 Dec 2018 11:29:59 -0800 Subject: [PATCH 4/8] xfs_scrub: use datadev parallelization estimates for thread count From: "Darrick J. Wong" To: sandeen@redhat.com, darrick.wong@oracle.com Cc: linux-xfs@vger.kernel.org Date: Wed, 19 Dec 2018 11:29:58 -0800 Message-ID: <154524779871.28646.8062050192682765855.stgit@magnolia> In-Reply-To: <154524776457.28646.3004453037075812416.stgit@magnolia> References: <154524776457.28646.3004453037075812416.stgit@magnolia> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9112 signatures=668680 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1812190152 Sender: linux-xfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Darrick J. Wong During phases 2-5, xfs_scrub should estimate the level of parallelization possible on the data device to determine the number of threads spawned to scrub filesystem metadata, not just blindly using the number of CPUs. This avoids flooding non-rotational storage with random reads, which totally destroys performance and makes scrub runtimes higher. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen --- scrub/phase1.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scrub/phase1.c b/scrub/phase1.c index 2113014b..6b472147 100644 --- a/scrub/phase1.c +++ b/scrub/phase1.c @@ -109,13 +109,6 @@ _("Must be root to run scrub.")); return false; } - ctx->nr_io_threads = nproc; - if (verbose) { - fprintf(stdout, _("%s: using %d threads to scrub.\n"), - ctx->mntpoint, scrub_nproc(ctx)); - fflush(stdout); - } - if (!platform_test_xfs_fd(ctx->mnt_fd)) { str_info(ctx, ctx->mntpoint, _("Does not appear to be an XFS filesystem!")); @@ -193,6 +186,13 @@ _("Unable to find realtime device path.")); return false; } + ctx->nr_io_threads = disk_heads(ctx->datadev); + if (verbose) { + fprintf(stdout, _("%s: using %d threads to scrub.\n"), + ctx->mntpoint, scrub_nproc(ctx)); + fflush(stdout); + } + if (ctx->fsinfo.fs_log) { ctx->logdev = disk_open(ctx->fsinfo.fs_log); if (error) {