From mboxrd@z Thu Jan 1 00:00:00 1970 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83DBDC83F17 for ; Mon, 14 Jul 2025 01:42:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E23CC8D0005; Sun, 13 Jul 2025 21:42:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DFB3E8D0001; Sun, 13 Jul 2025 21:42:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D385B8D0005; Sun, 13 Jul 2025 21:42:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id BC1158D0001 for ; Sun, 13 Jul 2025 21:42:42 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 0D49F16043F for ; Mon, 14 Jul 2025 01:42:42 +0000 (UTC) X-FDA: 83661170964.09.4FC5E8B Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf07.hostedemail.com (Postfix) with ESMTP id DFA8740008 for ; Mon, 14 Jul 2025 01:42:35 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; spf=pass (imf07.hostedemail.com: domain of yukuai1@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=yukuai1@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752457360; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OPjpmiR8xiZN4rayEwwWiu2pACea4cLFW3T5J73ngEo=; b=idDzlLl0xngewl2W6IFEkyU5hPYjO8t+oEVaG3Hf1ZXbfyt3XOh4CXeW1JsHCn7sBSQ4dp +qj7Mo7fxdZaTO6t5v1MAf2Zu/5qRHmHFbrKO6RDG8APrl3DNCnNXS1fO1oAZhChAR8J99 t8i6vjNSEIiWImh3mtRBBu1lY90oLOQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752457360; a=rsa-sha256; cv=none; b=atUv9+/u0CjmdQU5X2vKB5yf5fMIK4CCcH7IdnJoR3Bq83RjJZBFE2XnTibyUqjOHjWd4v f9H6lFcs6FFRCjKV7Zjx/AVM74U9VFarPU5Q2wtgfw1k8N+S8aIpxdphUDqHbAASmY7Kw8 NN1fqlXPksHHnWujyNFjvfKQlQKqxSE= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf07.hostedemail.com: domain of yukuai1@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=yukuai1@huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4bgQ6w5bZ6zYQv0t for ; Mon, 14 Jul 2025 09:42:32 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.128]) by mail.maildlp.com (Postfix) with ESMTP id 8CC211A1690 for ; Mon, 14 Jul 2025 09:42:31 +0800 (CST) Received: from [10.174.179.143] (unknown [10.174.179.143]) by APP4 (Coremail) with SMTP id gCh0CgB3QBGGYHRosQjDAA--.28839S3; Mon, 14 Jul 2025 09:42:31 +0800 (CST) Subject: Re: [PATCH RFC] mm/readahead: improve randread performance with readahead disabled To: Yu Kuai , willy@infradead.org, akpm@linux-foundation.org Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, yi.zhang@huawei.com, yangerkun@huawei.com, johnny.chenyi@huawei.com, "yukuai (C)" References: <20250701110834.3237307-1-yukuai1@huaweicloud.com> From: Yu Kuai Message-ID: <19b73b35-1e16-cb7d-d32f-d054d3e66fa0@huaweicloud.com> Date: Mon, 14 Jul 2025 09:42:30 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <20250701110834.3237307-1-yukuai1@huaweicloud.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:gCh0CgB3QBGGYHRosQjDAA--.28839S3 X-Coremail-Antispam: 1UD129KBjvJXoW7KF4rWF4fGr43AFyxCrWUtwb_yoW8ZF15pF W3Can2yr1xXryfArWxJ3WUXF4SgFsaqF4fJFy5J345CrnxGrWakr9agr4DWFWqyrn7Xw4U Zr4DZF9xZrWqvrDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBF14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2Y2ka 0xkIwI1lc7I2V7IY0VAS07AlzVAYIcxG8wCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUZYFZUUUUU= X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-Stat-Signature: xassb3hq5g9eexkr9zcu7z7mfnobpox3 X-Rspamd-Queue-Id: DFA8740008 X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1752457355-330601 X-HE-Meta: U2FsdGVkX1+LMyg3t1K4z6y8zDj9a/HPXlxVlimpXEh2afSuk+ZoIn14mqaBWQZi43p2x1uEoP5uqbXz3VywYeiilxTPKWPMBqD38qQMy82ooBeY6JSNzqrvidWuBTweXRcEXLtPyFfrGfvF3s3IRGIzG85mKct/suuDUgx6KGcCYt00aadJicGMj5LZXQgholBNdCZWP3zTllU7zWDruK2s5i+88x3DsFsc0FhwiU7RThAJESrXk7sBFH/8dCjbBZhpiZcP6meEpidreG9iBsCNimi8MEN32sE6wYfdl6HNN9B5RkhWG0fEs5f5ssGdQY2j4ygfFiME6vO/BoPxvbfaOgJ+UaoomPFK95u0ZYa9FEBJwJvXBXmMaZ5IsGSrcPN3IFSeT0HvcwOmETCXtV0C1lzQRi5PBCXK0go8szpgfh6BitQC6ec5u4STdjUT/WCZr5EtupsmoEPBlhFcGSF2dS5yq538fjxGrVPRoW13CYbHVQEHyt91MC7Qt/19Q4KoaqVV/dtI6pcrIdjcoCMAsfzcX0jhrTm88imC0fzppGB8ivJ4fnnO6tS5X0cEMhmouOX8gi21vsB3A+sdsitu6fGWkYbToJYHgrt3XMXN7Nofa9A/eZj5XOQRIY8G2weJm+aXVuZ9qyw8QNkoKcWAR4aXu4Z6cwai7fzsanMRoAyQTtcP3FS7J+wP9egWJX811D3mQncs8TGYrt+5YKFj45yl3AqLJtHKR/SD7EKHGZn1imWo+Dk8qocvPuU6166DTFJQn0ltJ8Pi62s8PiV0WMNnVUtNXxMd9vseF2oWMjompaTXomy39qfzzREQcUKLjfZl+EqwmHgYkk8QXAJKvUyEXK+JF24RAU596MeKp+A2e5m64JZGz8FRgq8h6OykP4j/knkR1I4Fo9x48Er8nvex+F7JhXJTp1Ch0sC/uO5iqpy03dwGfPWxYhgLsPBJCHEIg7d6U38i4X2 QZQus4fq duK0ewCJ3BuVL/6t0k+FUUtmStdOfmBpOLKCaZZF/Wl7rBKMr3k1kNFN4BWMzHM3iXfMr2+4p7YJkQ/+yFW6gNMCd3u52M0+dxSKTCeA/oqIU7T0C8LeSLW7H+hmc3779YMfG 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: List-Subscribe: List-Unsubscribe: Hi, ÔÚ 2025/07/01 19:08, Yu Kuai дµÀ: > From: Yu Kuai > > We have a workload of random 4k-128k read on a HDD, from iostat we observed > that average request size is 256k+ and bandwidth is 100MB+, this is because > readahead waste lots of disk bandwidth. Hence we disable readahead and > performance from user side is indeed much better(2x+), however, from > iostat we observed request size is just 4k and bandwidth is just around > 40MB. > > Then we do a simple dd test and found out if readahead is disabled, > page_cache_sync_ra() will force to read one page at a time, and this > really doesn't make sense because we can just issue user requested size > request to disk. > > Fix this problem by removing the limit to read one page at a time from > page_cache_sync_ra(), this way the random read workload can get better > performance with readahead disabled. > > PS: I'm not sure if I miss anything, so this version is RFC > Signed-off-by: Yu Kuai > --- > mm/readahead.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > Friendly ping ... > diff --git a/mm/readahead.c b/mm/readahead.c > index 20d36d6b055e..1df85ccba575 100644 > --- a/mm/readahead.c > +++ b/mm/readahead.c > @@ -561,13 +561,21 @@ void page_cache_sync_ra(struct readahead_control *ractl, > * Even if readahead is disabled, issue this request as readahead > * as we'll need it to satisfy the requested range. The forced > * readahead will do the right thing and limit the read to just the > - * requested range, which we'll set to 1 page for this case. > + * requested range. > */ > - if (!ra->ra_pages || blk_cgroup_congested()) { > + if (blk_cgroup_congested()) { > if (!ractl->file) > return; > + /* > + * If the cgroup is congested, ensure to do at least 1 page of > + * readahead to make progress on the read. > + */ > req_count = 1; > do_forced_ra = true; > + } else if (!ra->ra_pages) { > + if (!ractl->file) > + return; > + do_forced_ra = true; > } > > /* be dumb */ >