From patchwork Tue Sep 12 07:20:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Jianchao X-Patchwork-Id: 13380938 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D6DFCA0EC3 for ; Tue, 12 Sep 2023 07:21:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231548AbjILHV5 (ORCPT ); Tue, 12 Sep 2023 03:21:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231550AbjILHV4 (ORCPT ); Tue, 12 Sep 2023 03:21:56 -0400 Received: from MW2PR02CU002.outbound.protection.outlook.com (mail-westus2azolkn19013052.outbound.protection.outlook.com [52.103.10.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 92300E78; Tue, 12 Sep 2023 00:21:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b6U/v+sZMPC9Ik6lQ0bbfPLOknRPqwkFiLNXU11ANZ+QSz8bp4VHZqCXjFw0YjpUhfzJZ4Y+zq028eHIX8/MutdDqFcYRQntRs8q4YzJqZAjC8joVRu44RW7XXl/W+EM/u3PamxT7IgOy0GwgZtyt0oayVbWVPldw/Nd+55lvPYQU0GRZ/Y4EGcLHkjAmvZPoaJ3a0LmN+BW6N3rUj9Kv1xusn1jrYeFAUJUJrJs36GoJ25siIA345/zA7GIF8cVaGaJ8ThR7hmjEJ0aXzhnBMYGMt2AUhImLwkR9WIrnkJ+NSsZ//PCYS1IPflVieGHVy5uVCxZIZfhwe0CeQ0vEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QSt9M3Lx9ELnykLY4hPhekC2XnMJZbCE7nsKpZmTlww=; b=GGUZ4H/zW+BFq3AabenzXZ09MXu1fCtFeNeAHa46yp9IxwcOLK42G3wIPDEpkebRYmi2Wtn9oktk+d1DHusLbqxFHFLJ6CKMTVzJc3vpjXsJf1hjEtGbJIc2Fnc5fCRCmUIqLtRYYq17lZc6FrPN2/TYfafB/0Mon6PmjhRX6WfXOsnC0iFHsNUbPrQt+cvqPmaKj4nNYu7hlYGRvbHlQfGdwr7dUY4AmndnFM1gVFfYBHUQ6EtN0PyvQEKtK+D+WMsRpez1fXPCwBzoE2JR0nI9nxl7dfv8rjC995UTIPYsnjco/9T2vbak1sAT0S/d3y5dAWjv3GRdgJGMJaY9ew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QSt9M3Lx9ELnykLY4hPhekC2XnMJZbCE7nsKpZmTlww=; b=R1TrxI/uDRc1GHFj2a+jWdu00+bnAoooQaAJxxsOziJMkCbK2E2cohHf5Sahuf/BJr/wn5Oh2BDWBzg5Cg8hSfLEHQFebYG5gKUROoBH4XgK3kQEWNQOPQMewfZMLe3SKfVggKPWM2M7EU2BDhH/8xGcfrM1WZRufnBFbhxy4Y5vHDQOYo77ROVI8KBxg2ybdTa+kLjjWb27MssvaF21Wwif1JLo5EixmUk7Fqg0ATcCc0tZ9eZV9EJ0arCzd1kNzmkQFroDnesagZ8XILw0dBHHJ42L+Q/y4iDk5eJwI2qNNvAmQcOwP/TT1KHyRRCzV2zTFKO2UyaBDAYxkRC1qw== Received: from CY8PR05MB9378.namprd05.prod.outlook.com (2603:10b6:930:91::8) by SJ0PR05MB7627.namprd05.prod.outlook.com (2603:10b6:a03:2c8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.35; Tue, 12 Sep 2023 07:21:50 +0000 Received: from CY8PR05MB9378.namprd05.prod.outlook.com ([fe80::3ea2:7971:7c79:b09f]) by CY8PR05MB9378.namprd05.prod.outlook.com ([fe80::3ea2:7971:7c79:b09f%3]) with mapi id 15.20.6745.034; Tue, 12 Sep 2023 07:21:50 +0000 Message-ID: Date: Tue, 12 Sep 2023 15:20:56 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: [PATCH V2] xfs: use roundup_pow_of_two instead of ffs during xlog_find_tail Content-Language: en-US From: Wang Jianchao To: djwong@kernel.org Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org References: <63b3742c-0efe-c096-c737-a0e0419480bd@outlook.com> In-Reply-To: <63b3742c-0efe-c096-c737-a0e0419480bd@outlook.com> X-TMN: [ykzJC+USfiPsvAzHzYzPGWj4xCtOW11n1lKnDNepfd4=] X-ClientProxiedBy: SI1PR02CA0023.apcprd02.prod.outlook.com (2603:1096:4:1f4::19) To CY8PR05MB9378.namprd05.prod.outlook.com (2603:10b6:930:91::8) X-Microsoft-Original-Message-ID: <59dd15dd-5b35-871d-6d3a-ec779975b089@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR05MB9378:EE_|SJ0PR05MB7627:EE_ X-MS-Office365-Filtering-Correlation-Id: 0fae2753-c7be-477c-6bc3-08dbb360ee95 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sVCkk9f5Abex0COt34DBZJ29if8Tks1nEb5ZROJxPP2qShrmEc49+Ey0FNztJoskXWCVVfChH9XU3RhrElDhRbNIHYtcRN+eN1fCPLBeSBmGr3qUu9noM8ivumjWGIXDZkojUZWvasjqNFxrGhYSNjDaOqgFnlJb3wnnZnlxq0RK3nCcFdaCfwZY28UjMg84Q/uudZLMk18R/jtR7jNaNFhxYB0BdHKiULh0VkL2wufYwfRncL3y3cgv+gaZegqDMEUcFX4UNGV+wL/sq+66MykDkJZPrYqczIpThvEzqaYLhMFTUaSQ0CuZRH/EJwd/AQ/2n93SXZBxsX5K1xY2Emqt0IWXgcarJd5WkOhnXukfbxREcn68PyUSnGZ/vueBYn6aT41Io7e8HsLOm4a3/xYTNFCQ5AWBF8y+/w9p8t2F46szMNgjucvue62YLDEC6uEnWYuakgLKcaGP9TI4eiPHAbRRlKsvVot8v+qdPVy98/ukTG9k8hcOZy4NqiOQNbG9dP+keHzjeXqVT6rbCKXdYKogVP+mABIS7XmF/pCUoAlpJEEAAhHgQxJiGLTr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?2naugeogNzrzsbLL+ySxv6cdOt6n?= =?utf-8?q?V8nVIMN9P8OutjrTuTpPxpQXA0SSqvz1Z+r1PKt84me9jO9hazRT7bMTnSMit+JxO?= =?utf-8?q?n1dUH3zvQiXBWB48r5bxuOhyWwdm5wXbhqqWicwQMMyzdcIolZ8j2m/s1GWYei2I6?= =?utf-8?q?ZcZqAarZGwYN9FxVDf1+FvSB4HmdRYBfY7Bf3GNmElKM0nU+N2nNLUtWL3rlSXaSH?= =?utf-8?q?+8lT4knkNq82redrXNCt4Rq08Osm4gHck8KyuFxK74zEJ7K0HiAMkL2lf5hItOr+j?= =?utf-8?q?PS5L1mJa1qGRkQFx1H+clh6nmLjnDRY/G8K2c8yTd0nThpwf3WsoAOdLjjQxpEfnU?= =?utf-8?q?C6dZKfPUPFPV5QsirFZbJqiykmMn1PMK31UNWXG7rwKkKCEUccB2eAaptSOCla+as?= =?utf-8?q?LL8D3srcdc2t7MYIE6WEaDx8o5mDpog0GoCbBnI7+jtZi0lBFL8sY19tvp0jnlnnq?= =?utf-8?q?u+UWTEB6lcjA+fuBB9iSX+KJ+tLHcrcyrih6TZUXj3Bz9TU2T4AP91usnj5CR3MOh?= =?utf-8?q?BhmeNhSsuwCfQlxT3xVTIj/gmiFzXU5PKDgtAdgkk1ndSR6QaT0jfNd1hy8IyIlbO?= =?utf-8?q?GDI69iOxo2ETtOvsGAK8jLv2fxuLbpuZ/nSCVsEGUTSBHxeYxinPiPf97CLIOAMRG?= =?utf-8?q?xVdpvh9Ic2e+Ac2Yctv90aT1UcPnCxGISylpnZ7CZN5vjtPywYix1pdzyGQCx1Nxb?= =?utf-8?q?VZZAyj26EgV38q62MDjfNN79BSxEFymODG4XrWJf1ZWZoGSV1z8rHxNMs9e7gYiu+?= =?utf-8?q?vnUdtANO8fnY/WssXPydItf8Tjx81m86dk4FkjSU8yWEciZNwwrtlKjj7TCR/3g15?= =?utf-8?q?5INDrxqG92IlsxrFpZKHpY/vp/keleaSGEvAMUkBSrtU6RS5TfCO12rijNwMtNUlr?= =?utf-8?q?dXZbwZWHT+UazW/tSRmlRXnMPBpvTUFKkZ4NzvA2Fo3d/b9LNNmcttb3PKQE80HNR?= =?utf-8?q?z4RJKV/1IgzFI1ESg4N61VwKeWQXteBKPTkyNFrw8dzzXcrtM0QDutu4ELOHi4dqD?= =?utf-8?q?y59dZQSKiueTnkk6qkammnQTd7MP2jyGtFQiZl0j3u2B1NlcAgGwBIBCuapCQDd27?= =?utf-8?q?J05chRYmjg0AgMZpcvA/c8C8LqR3glnsh08hp0kzrOQjMVny7O36C0vIfy9q7SIb9?= =?utf-8?q?CgDFV9v0DaB+D1wDUoLP/+acK4pN6/fKMHkLfvxhBPQkhgKZnbeS4vjKtHcyU=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fae2753-c7be-477c-6bc3-08dbb360ee95 X-MS-Exchange-CrossTenant-AuthSource: CY8PR05MB9378.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2023 07:21:50.7559 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR05MB7627 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org In our production environment, we find that mounting a 500M /boot which is umount cleanly needs ~6s. One cause is that ffs() is used by xlog_write_log_records() to decide the buffer size. It can cause a lot of small IO easily when xlog_clear_stale_blocks() needs to wrap around the end of log area and log head block is not power of two. Things are similar in xlog_find_verify_cycle(). The code is able to handed bigger buffer very well, we can use roundup_pow_of_two() to replace ffs() directly to avoid small and sychronous IOs. Changes in V1: - Also replace the ffs in xlog_find_verify_cycle() Signed-off-by: Wang Jianchao Reviewed-by: Dave Chinner --- fs/xfs/xfs_log_recover.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 82c81d20459d..13b94d2e605b 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -329,7 +329,7 @@ xlog_find_verify_cycle( * try a smaller size. We need to be able to read at least * a log sector, or we're out of luck. */ - bufblks = 1 << ffs(nbblks); + bufblks = roundup_pow_of_two(nbblks); while (bufblks > log->l_logBBsize) bufblks >>= 1; while (!(buffer = xlog_alloc_buffer(log, bufblks))) { @@ -1528,7 +1528,7 @@ xlog_write_log_records( * a smaller size. We need to be able to write at least a * log sector, or we're out of luck. */ - bufblks = 1 << ffs(blocks); + bufblks = roundup_pow_of_two(blocks); while (bufblks > log->l_logBBsize) bufblks >>= 1; while (!(buffer = xlog_alloc_buffer(log, bufblks))) {