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 75A75C4828F for ; Sun, 4 Feb 2024 23:34:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA1506B0074; Sun, 4 Feb 2024 18:34:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E51C16B0075; Sun, 4 Feb 2024 18:34:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF1D26B0078; Sun, 4 Feb 2024 18:34:55 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BC33B6B0074 for ; Sun, 4 Feb 2024 18:34:55 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 7FDAE1204C8 for ; Sun, 4 Feb 2024 23:34:55 +0000 (UTC) X-FDA: 81755728950.23.5D9F4DB Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by imf23.hostedemail.com (Postfix) with ESMTP id 51AE814001D for ; Sun, 4 Feb 2024 23:34:52 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=fromorbit-com.20230601.gappssmtp.com header.s=20230601 header.b="w/fFXIzN"; dmarc=pass (policy=quarantine) header.from=fromorbit.com; spf=pass (imf23.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=david@fromorbit.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707089692; 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=p2TnSnFYEsDimdpS3N17Ru85rGMnUNIuGwXCS2vJfQo=; b=mNULpsLnIPE3O1oMZFNyxjQbnRtQ41hDh3GIDAHWVLDnvGitey8u8oNqOIHZaXrvvPNURA WlEnx4Uwg3bUdr5pRO4wkz2wU1NlAtRa9tmGhTW0jTrsnN40NatrnfpIa5DPGsyXtR2yqP Bj42XHBOdXU13WgRbDNczr2vcnDfLhY= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=fromorbit-com.20230601.gappssmtp.com header.s=20230601 header.b="w/fFXIzN"; dmarc=pass (policy=quarantine) header.from=fromorbit.com; spf=pass (imf23.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=david@fromorbit.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707089692; a=rsa-sha256; cv=none; b=BV2PLDtvt4oZFGlEJwsAwwB0Bk0ymWUCgP5v2g1/oKV7MkbYwq98kpAwZu2kyH/cupt9uL /oHiISNKKQ1QOFir4MKDEFjb0pKBFserfztLGEMze/F3+OjQnq5TfYStXvU1Bfaphaw0gV 9DFzuJVxA9PLMDHLqzyzyBrfw7fOt1E= Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-6e034066152so554558b3a.1 for ; Sun, 04 Feb 2024 15:34:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fromorbit-com.20230601.gappssmtp.com; s=20230601; t=1707089691; x=1707694491; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=p2TnSnFYEsDimdpS3N17Ru85rGMnUNIuGwXCS2vJfQo=; b=w/fFXIzN+2KolBG+LjRDeokAUOIOIXpUKpYcdw/TiIV9Bmym+mNc19YOPA64/+KGPv jOdvmJXF2y+37VIjquZA83dziWCC1J6F++p7Vij30d/0SXTGlekWDmV83fUqMLByHMpF BNKi7r2aHHCL7l3A74nKZ7GV9zW1CBFYKvI48b7S4MbbLKlVYNQC36UO3n7i3WK0uuk3 UkOHxVI1bc5spoaj8lcIZXxtC2m8s1QwslsH2Kk1kcIPZe81N+0tkRCW2tXXDECH3L4x DMbHSUOtb983KmWNEUktY9+cYQOdzE4/YcjfQzsLL7oselccuxzFkQCRdjvvfs+t+dKQ WrHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707089691; x=1707694491; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=p2TnSnFYEsDimdpS3N17Ru85rGMnUNIuGwXCS2vJfQo=; b=CGZWCiKv08A6NvR2pJfnpPpz4C/IY6z19Ws82HhJg+/6/KUR1TnPV/2HKZI0+2F25v Hxmo3hRMHu0INh5PNztZmjtlCgHdc+7nYbSUVkuqMlwrj17iXyNHyGn/ybpqKnbDYiev Mh+bGNotCam7nTk8qylhyriSGkxz04D7KAvYAcrg4oXxB/X6dZaPONKArXq5wdEd9Dbz I1ayKGVSbIaH7C/I0ZjTplPr06rB3BysGVqM4GGcrxMU0NWNj/P6DwulWZrcvGcv48tN YzR8fbCWttV5t2EK3hycCjATHc77oNB14AiMpmnEiylZd/GhwZaV7I3rvLQQcX3d8ovL 77pA== X-Gm-Message-State: AOJu0YwvkNFY2mC5quxab7DQQvu+oU1HsE5Rt7XPEF49W5jlIido+6WZ eHpdCgGCXcVjs6/fapaFMVOJWwXtSCPdlwD3ib5ZTxdVTqpcAf1CJ9po24prsng= X-Google-Smtp-Source: AGHT+IF/iScD9UiPoru51YxiL2oZG6kkO9dOS0pdBYHBb4GuksLfFUGdQXzGHfeNI7h4UsP0jyX3xA== X-Received: by 2002:a05:6a00:2192:b0:6e0:25db:65b2 with SMTP id h18-20020a056a00219200b006e025db65b2mr5694366pfi.14.1707089691057; Sun, 04 Feb 2024 15:34:51 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCUSoMhjFgbz6wgPYjJeWh0oBQcp6MJNa57h3rXjMk90rQX9EVmU21co4Vy13pQ78HfAK+dGBm51kXWCv8XPb7jMIPFd0Zg/FJOlcH/ShnF2EIeOLQY8LC2IRQIzg8ZOH6QBwJl9Die3twPbKyjCq158cXpUeT5L+wzpnvjJRWM1n4riTNHqBuOwCfGyDski6jpqfGIbMzRmo0z03NXa8O44yHf3NBsY+Ry8rtnnLptRU+M/jFT2un02cNaZBfEAbtTiQrB+oceSPYqkImMz1GtPC0COLQJ58gmUFrQEyh/gZcktQV3fs3APTofh01rGo3KBYsD+eV6vS5eqA8jjjyrLYpcxFYMqwwykAAqHa6O7 Received: from dread.disaster.area (pa49-181-38-249.pa.nsw.optusnet.com.au. [49.181.38.249]) by smtp.gmail.com with ESMTPSA id x2-20020aa79a42000000b006da2aad58adsm1422234pfj.176.2024.02.04.15.34.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Feb 2024 15:34:50 -0800 (PST) Received: from dave by dread.disaster.area with local (Exim 4.96) (envelope-from ) id 1rWm0d-00293b-35; Mon, 05 Feb 2024 10:34:47 +1100 Date: Mon, 5 Feb 2024 10:34:47 +1100 From: Dave Chinner To: Ming Lei Cc: Andrew Morton , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, David Hildenbrand , Matthew Wilcox , Alexander Viro , Christian Brauner , Don Dutile , Rafael Aquini , Mike Snitzer Subject: Re: [PATCH] mm/madvise: set ra_pages as device max request size during ADV_POPULATE_READ Message-ID: References: <20240202022029.1903629-1-ming.lei@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240202022029.1903629-1-ming.lei@redhat.com> X-Rspam-User: X-Stat-Signature: dubp6shc7s5poy3744aaotshigcjs71o X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 51AE814001D X-HE-Tag: 1707089692-650206 X-HE-Meta: U2FsdGVkX1/k10Tog+WWKyT7Ghg3aq/85I92ZbHMpyDjMtyE6n6mrk9rNanJB1Tfcqdc9/FXhZt79Isl/HvA7LW+rFweuJQMIfGZO00D6P5tQFByxXW+ssC3rF40RnmJH2MOGHBcCEuogEDfngCxAYrD45m6fReC9Y4aN1KmyP87aYG7G9aM/eTR+J3yQ+1G1XTXOOWmI5rBSIiifwUZOhyLzK67maodL/IxscHd/BWzqk8jU+gjEKBANdmKY0IgqGp+fAnet/mIEjsHvUdm2BHOFjIOAd5U3tbYEhZU8mVJUw74hktQCG3x2FjhZR1WaPnfUrjwKnpC2CDHWbs6wjDeCAaZRlqbHQbdVcpJ6P7TKfbuFeqEF4rkEIsrkUoNeQKeg2o73nM/VEYxrylU58KVf42HloQZ8gYnRQzj2rQqciq/E/t0zDTCT6eW/Al3LD877R1i04Fqzl8fooSWTujbLStHm/ePpcn6K0J8F3vPUKqNRX9Pnkt627BI2atKfWiLgTxv2t8rctLFrchmV84/lDgv2Jgzqwv4t7lZPuxOMj6dVH51kr0nxuopLoqwdolghA2+jHTPy4agKsVJ1md9fHE0M0xu9ZmUT249VedG1HwgmcIoH1nTwQdq5qua9UnZ+SvOh9pn/H5Ta+qxumKkFv4bzIy97sNzKZuJxWe8MEjfZlUi6jovhFTY44gundtQUJmf24Ae1eeKSENOCmr04HXkF6ojDsndKpGgEoJSeqajS2lrFfAyLzKhzgluhfMlNGJPlqDxzfv279WIzf14Py7yM7zMmN4QBlPbueqRZ0noAS2umAjdyPdM/MmZRmUAipqXtYW3fjdXSAbtk/NArnTvIp/nXNuUD8BduQhuQyLHFMfNCUt2/NHh9TdVGv9zW7Zih+oUnqOkNUStY9wEiSQySL0VArGs8hX2EbXwnEgTud8iCw5dx+Y84ugHU0OXFwFsO0lSHqaXh+4 5nio2o63 JmG78lqsXNyErTaneDSAZO77v7V4Igj1klXTkkp5AjDrjG+FYefqb5tM2Hwa6TDcdEApe3AD8lHGep6+jOW7C/0uXVDw8YPh7I7PDOhXs0tsidEGQj49pNJ2hI6URD9IVwPZVNnuk5IC3P1vyS1vXZ1WAe51tpBQ2ywxkhYYKGaFw8v73glKPNuk8bC8C/JlvqI79oVHZPYwlIy7WoCd8FWdwsaU2apjqNFamFfsI1LwMNiMC2gXTgpPTveRZoAL0qRLvsBAQ+QIZgRHO9hKGSs0hWVuSe82++x85LCKogqJF354POKRoUjBJhOrPDUXSx9D60XdO3aFoRmmLiqmMJvLzgZe4G+lDr9UW/zNGcsYGnENFg4NdwL4K/Odeb6MXsk+8OtFSOpR53oE3mEfYakHFZRABOEYgQ05z6Pk4JZesNR5Dny772d4IIYE1fEL7DovZOiC6LFxPVitIQIyXceRganN6j1tfT7gtSWe4qJdkUZrMb/bH/3U8GjORIS7g+UXVgcHoAx3pPq5sz0AJFHnUq7V28/9w+/kyfOfX1TUyt2+9SbVLGnndjVGsmdpSeB9HZ6gDGVlVwXfD9QaVsrpfZsMW/pVB+gw49YKGSgs7HuyCx3SRYsUr7qPi601VHwKK9WR4x7FMEEzpn5CqjTQncWT257bbESIHVDKZ3BH+c8f9E6ZJRnG9ZIiPNLYU1B6rnMXN/QPNKJxqGatFlyQyuq1ivsZ4Z2fp8oU5TQOcTwtNUC5VWzK4VVXYFfAPzRrt 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 Fri, Feb 02, 2024 at 10:20:29AM +0800, Ming Lei wrote: > madvise(MADV_POPULATE_READ) tries to populate all page tables in the > specific range, so it is usually sequential IO if VMA is backed by > file. > > Set ra_pages as device max request size for the involved readahead in > the ADV_POPULATE_READ, this way reduces latency of madvise(MADV_POPULATE_READ) > to 1/10 when running madvise(MADV_POPULATE_READ) over one 1GB file with > usual(default) 128KB of read_ahead_kb. > > Cc: David Hildenbrand > Cc: Matthew Wilcox > Cc: Alexander Viro > Cc: Christian Brauner > Cc: Don Dutile > Cc: Rafael Aquini > Cc: Dave Chinner > Cc: Mike Snitzer > Cc: Andrew Morton > Signed-off-by: Ming Lei > --- > mm/madvise.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 51 insertions(+), 1 deletion(-) > > diff --git a/mm/madvise.c b/mm/madvise.c > index 912155a94ed5..db5452c8abdd 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -900,6 +900,37 @@ static long madvise_dontneed_free(struct vm_area_struct *vma, > return -EINVAL; > } > > +static void madvise_restore_ra_win(struct file **file, unsigned int ra_pages) > +{ > + if (*file) { > + struct file *f = *file; > + > + f->f_ra.ra_pages = ra_pages; > + fput(f); > + *file = NULL; > + } > +} > + > +static struct file *madvise_override_ra_win(struct file *f, > + unsigned long start, unsigned long end, > + unsigned int *old_ra_pages) > +{ > + unsigned int io_pages; > + > + if (!f || !f->f_mapping || !f->f_mapping->host) > + return NULL; > + > + io_pages = inode_to_bdi(f->f_mapping->host)->io_pages; > + if (((end - start) >> PAGE_SHIFT) < io_pages) > + return NULL; > + > + f = get_file(f); > + *old_ra_pages = f->f_ra.ra_pages; > + f->f_ra.ra_pages = io_pages; > + > + return f; > +} This won't do what you think if the file has been marked FMODE_RANDOM before this populate call. IOWs, I don't think madvise should be digging in the struct file readahead stuff here. It should call vfs_fadvise(FADV_SEQUENTIAL) to do the set the readahead mode, rather that try to duplicate FADV_SEQUENTIAL (badly). We already do this for WILLNEED to make it do the right thing, we should be doing the same thing here. Also, AFAICT, there is no need for get_file()/fput() here - the vma already has a reference to the struct file, and the vma should not be going away whilst the madvise() operation is in progress. -Dave. -- Dave Chinner david@fromorbit.com