From patchwork Fri Mar 1 23:27:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 10836223 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 9A8E31390 for ; Fri, 1 Mar 2019 23:27:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 85FE72F08A for ; Fri, 1 Mar 2019 23:27:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 77F272F050; Fri, 1 Mar 2019 23:27:36 +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 06AC12F050 for ; Fri, 1 Mar 2019 23:27:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725958AbfCAX1f (ORCPT ); Fri, 1 Mar 2019 18:27:35 -0500 Received: from aserp2130.oracle.com ([141.146.126.79]:42144 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725982AbfCAX1f (ORCPT ); Fri, 1 Mar 2019 18:27:35 -0500 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x21NOAfU122685 for ; Fri, 1 Mar 2019 23:27:34 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=l2IEvpZBhdKTQwM0dZwsj2XnO5pxqouWmohVCwUSQKHSU2iGegfyf6g8EsgzBPfsRcOv vqOjXAM12879fAhdyTMH3hSQJFbAV/WU/w1o5udfTDuB7DTdYkTspcG+ZRi6ED+ohZGI w/R8o70sMk4o4fr4v1gB2Vk7xQBxG+w1QG2YeoUox3FOkdDLumpacyyQ6S4+qT1zwuSA 5qi1zhAi76qcBDTM4q8yX3kwmCCeb4+gUB2FbsK46VehHzdtYiGtbzG93tFCFHG0MSze fif3aiQOGI2Y9In96EhxN+lsYWrUYTxa3l6oMONoWFTxXfa6OZo+SOnMurYTb5+/BY8k XQ== Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp2130.oracle.com with ESMTP id 2qtupetejw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 01 Mar 2019 23:27:33 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id x21NRWZI031935 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 1 Mar 2019 23:27:33 GMT Received: from abhmp0022.oracle.com (abhmp0022.oracle.com [141.146.116.28]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x21NRW3e020212 for ; Fri, 1 Mar 2019 23:27:32 GMT Received: from localhost (/10.159.229.175) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 01 Mar 2019 15:27:32 -0800 Subject: [PATCH 07/23] xfs_scrub: use datadev parallelization estimates for thread count From: "Darrick J. Wong" To: darrick.wong@oracle.com Cc: linux-xfs@vger.kernel.org Date: Fri, 01 Mar 2019 15:27:31 -0800 Message-ID: <155148285165.16677.5573180437389379617.stgit@magnolia> In-Reply-To: <155148280859.16677.6057998944865066232.stgit@magnolia> References: <155148280859.16677.6057998944865066232.stgit@magnolia> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9182 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903010161 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 --- 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) {