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 3C2B5D1CA1A for ; Tue, 5 Nov 2024 04:21:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 773856B00A0; Mon, 4 Nov 2024 23:21:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 724C66B00A1; Mon, 4 Nov 2024 23:21:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6125F6B00A2; Mon, 4 Nov 2024 23:21:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 426506B00A0 for ; Mon, 4 Nov 2024 23:21:32 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id E141EA0EB5 for ; Tue, 5 Nov 2024 04:21:31 +0000 (UTC) X-FDA: 82750740954.19.8B82E9C Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf27.hostedemail.com (Postfix) with ESMTP id 04CF740003 for ; Tue, 5 Nov 2024 04:20:56 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=Or9TRPiP; dmarc=none; spf=none (imf27.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730780432; a=rsa-sha256; cv=none; b=riOlb6n3c1ROa/aFDEm9jyXEq5WuD826OmYKNaAMV17MshsDMQTdX8VJMu0GZV7a7UZShh P2reXnwzyRDROwYyBvB6HkJm9HmDqjCbu23gZ5vhxmm67Ek5EHhkxz1nsNgA2ObSR3Bv3x peBwzb/LYVmPEOTWRegDwB3hAU2dbac= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=Or9TRPiP; dmarc=none; spf=none (imf27.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730780432; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sa4ISQcUCVhvbiKC4OnPkGxY2bVtvXfdSEd6wQqcFQY=; b=RwFnM4S/NQVHZFh8T9UZFXgDXCyx5Idnr3P15Dx98doBh8iCsCq8ym2kY+DylLAxblTGCi hR7YjL8lgRMwnX4Gw0aP9sxNBx0DHT1CercnlvRJiePNwlxnoYmlf0b/fUxxPMmSQZoLMn DnR0hImtEhRoUiiVVsRMhUSZ8bEwlyw= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=sa4ISQcUCVhvbiKC4OnPkGxY2bVtvXfdSEd6wQqcFQY=; b=Or9TRPiPcPqKvCjVYZh4klnIe5 xcOo1HrBQkpfmF2+zWerW6pbig5DXXagnLG7URb0Ik5G2300jPEloPBZTFAbnLEq8c/s97jQM8vt3 r9IfQWeQKlJPhX6NJmQD2BGgS9gG6TN7b5L9hg+B/aT6UCbWSPPdj7VR7YMSbOzS0yVhm5iC8wcP3 M8EA7fjDlrIl/E4MmEcroXGFZNxdj3qd6w0CaV+pHiJo+Cyf8MFF7j8LXRZExGHs5vg/dZq0XH8yo PmksRfliXw5V+aR7JUo7ylAdBe5L6A5q1gOsrLaschgXtz4i259Q5cRUOSlzsHo3NC2IHW7MRYsTS fbuDlBDg==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1t8B4K-00000001tzC-2wL7; Tue, 05 Nov 2024 04:21:28 +0000 Date: Tue, 5 Nov 2024 04:21:28 +0000 From: Matthew Wilcox To: Yafang Shao Cc: akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [RFC PATCH] mm: Add large folio support for async readahead Message-ID: References: <20241104143015.34684-1-laoar.shao@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: 04CF740003 X-Rspamd-Server: rspam11 X-Stat-Signature: c4ujy9wnjcyo19sungpbwk5ra4cyzqj4 X-HE-Tag: 1730780456-899688 X-HE-Meta: U2FsdGVkX1/Cstx0xaQSdVBbWmnmbuKKZ+BWueXNewNpnJtvNJd8YUgEkeQFiAais4mHoZjzAdTgblR6DZcKBnqOso+IWCsRVw+DmmLefxOJ8NdF/ebSCZHhecfkvL+LtEbue2mpGqQs9Ce+UUHym3bvzwb6c3CXcu33dMk2XKpvuv8RxEcHf6zDH99JVj3Zrz+UHb6EraR+ezGFBGQwhvFS+JMKkyLcVAAxBItiXfiSioLPsUhkGQCBFz9cABF4CJTxGS4of8gR2mP7v7AOZAhwSPeSY0zjB1x61EGr9woyDGYtrMmJ27IsqIL8zPwDw010ajT6GnLJ06FhcAZGwZzjLM2k0iC60o2cQcjx592zPq73LYUnokgwNWzOC+R1J8+CD91ab3fiHOujzF82CSiPhidlvqH88FYRDCiQBIg7Aw/klnSG0Ra0vbv1cvn9SmXxEM4T/JBC6Nk/i5TpOF5oerRoNpYYQC2FqI/M5JEllmMRkSaiEPWNTZZ3qbJDmqKLGGaGygXHwEYo2tdrErKHZ1i1xbE9KY+MJvE+pSqG5n4U/4yJ+NULmcmJoLO5DOBrXJ32X7IyeUKtP7H0xMKvtL9m62VPrRAS3Xv/sCOPYWy5/2eZUUoGtxOVfr+hpu8B6LT/JxsgPWrLo9k/DBgwH8Ps+SzIvjJ0vdDD0kPG7DqoPovxx9yS/GCTeNGMfnvkLdt2hakFKqNWxWpHN0ntAZG9V9fSY69oQqXDR7BG4/xTuaTnptclJBIwvkWYZl9s1L2lSJ4J+hsfl0VHPNZpp1FtM8efj8JP5pODhW8skdMFcH1ErT9pzGlrAebvL11Nk6pwmS4FJ85OyI7kQvYgfDVfrp8OCcZsdhuJFsSFakb/fT90EpKIxFl8R66FkgVRAUmTtCOhpAsl6NAsHTk6nW3XFHJzlmiUruKHOStix9R3xPAdLlRB8h2J+2i5O1hp9XkJ9PBol1zMh0A 8EDEYtnP xBNWxUKUUesYTpRxrHnuIe/0TNfrX95TDHlJlpGII0ndOnfAex8Eem2Zzk8+zdH7dUfesbRxLdxyQyFSFUqXxZ9wil+ipSuS7J7LjTo8E0f9pC3stjrY7EGqeRh68JLtlULma8ZNB47Vcbm5h0MGCD+q4dc8DskkPPgOlVnktOuxzWbAT1Ee+lq6dwKFCa6vCd/jxhMlvKpeDlRVYnJuvc5cXbNGzq3JOnK1aubj+VD9DYPVLpJmTGcDe+IzZOmkpt7s1 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: On Tue, Nov 05, 2024 at 11:01:01AM +0800, Yafang Shao wrote: > Upon further analysis, it appears that the behavior depends on the > /sys/block/*/queue/read_ahead_kb setting. On my test server, this > parameter is set to 128KB. For the current approach to work without > modification, it would need to be 2MB-aligned. > > However, I believe MADV_HUGEPAGE behavior should not be dependent on > the value of read_ahead_kb. It would be more robust if the kernel > automatically aligned it to 2MB when MADV_HUGEPAGE is enabled. The > following changes ensure compatibility with non-2MB-aligned > read_ahead_kb values: or maybe: static unsigned long get_next_ra_size(struct file_ra_state *ra, unsigned long max) { unsigned long cur = ra->size; if (cur < max / 16) return 4 * cur; if (cur <= max / 2) return 2 * cur; + if (cur > max) + return cur; return max; }