From: Steve French <email@example.com> To: Matthew Wilcox <firstname.lastname@example.org> Cc: Jeff Layton <email@example.com>, David Howells <firstname.lastname@example.org>, Trond Myklebust <email@example.com>, Anna Schumaker <firstname.lastname@example.org>, Steve French <email@example.com>, Dominique Martinet <firstname.lastname@example.org>, CIFS <email@example.com>, firstname.lastname@example.org, email@example.com, Alexander Viro <firstname.lastname@example.org>, linux-mm <email@example.com>, firstname.lastname@example.org, email@example.com, Christoph Hellwig <firstname.lastname@example.org>, linux-fsdevel <email@example.com>, linux-nfs <firstname.lastname@example.org>, Linus Torvalds <email@example.com>, David Wysochanski <firstname.lastname@example.org>, LKML <email@example.com>, William Kucharski <firstname.lastname@example.org> Subject: Re: [PATCH 00/33] Network fs helper library & fscache kiocb API [ver #3] Date: Mon, 15 Feb 2021 23:18:02 -0600 [thread overview] Message-ID: <CAH2r5mv=PZk_wn2=b0VQcaom9TEw1MGLz+qB_Ktxxm2bnV9Nig@mail.gmail.com> (raw) In-Reply-To: <20210216021015.GH2858050@casper.infradead.org> On Mon, Feb 15, 2021 at 8:10 PM Matthew Wilcox <email@example.com> wrote: > > On Mon, Feb 15, 2021 at 06:40:27PM -0600, Steve French wrote: > > It could be good if netfs simplifies the problem experienced by > > network filesystems on Linux with readahead on large sequential reads > > - where we don't get as much parallelism due to only having one > > readahead request at a time (thus in many cases there is 'dead time' > > on either the network or the file server while waiting for the next > > readpages request to be issued). This can be a significant > > performance problem for current readpages when network latency is long > > (or e.g. in cases when network encryption is enabled, and hardware > > offload not available so time consuming on the server or client to > > encrypt the packet). > > > > Do you see netfs much faster than currentreadpages for ceph? > > > > Have you been able to get much benefit from throttling readahead with > > ceph from the current netfs approach for clamping i/o? > > The switch from readpages to readahead does help in a couple of corner > cases. For example, if you have two processes reading the same file at > the same time, one will now block on the other (due to the page lock) > rather than submitting a mess of overlapping and partial reads. > > We're not there yet on having multiple outstanding reads. Bill and I > had a chat recently about how to make the readahead code detect that > it is in a "long fat pipe" situation (as opposed to just dealing with > a slow device), and submit extra readahead requests to make best use of > the bandwidth and minimise blocking of the application. > > That's not something for the netfs code to do though; we can get into > that situation with highly parallel SSDs. This (readahead behavior improvements in Linux, on single large file sequential read workloads like cp or grep) gets particularly interesting with SMB3 as multichannel becomes more common. With one channel having one readahead request pending on the network is suboptimal - but not as bad as when multichannel is negotiated. Interestingly in most cases two network connections to the same server (different TCP sockets,but the same mount, even in cases where only network adapter) can achieve better performance - but still significantly lags Windows (and probably other clients) as in Linux we don't keep multiple I/Os in flight at one time (unless different files are being read at the same time by different threads). As network adapters are added and removed from the server (other client typically poll to detect interface changes, and SMB3 also leverages the "witness protocol" to get notification of adapter additions or removals) - it would be helpful to change the maximum number of readahead requests in flight. In addition, as the server throttles back (reducing the number of 'credits' granted to the client) it will be important to give hints to the readahead logic about reducing the number of read ahead requests in flight. Keeping multiple readahead requests is easier to imagine when multiple processes are copying or reading files, but there are many scenarios where we could do better with parallelizing a single process doing copy by ensuring that there is no 'dead time' on the network. -- Thanks, Steve
next prev parent reply other threads:[~2021-02-16 5:19 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-15 15:44 David Howells 2021-02-15 15:44 ` [PATCH 01/33] iov_iter: Add ITER_XARRAY David Howells 2021-02-15 15:44 ` [PATCH 02/33] mm: Add an unlock function for PG_private_2/PG_fscache David Howells 2021-02-16 10:26 ` Christoph Hellwig 2021-02-15 15:44 ` [PATCH 03/33] mm: Implement readahead_control pageset expansion David Howells 2021-02-16 10:32 ` Christoph Hellwig 2021-02-16 13:22 ` Matthew Wilcox 2021-02-17 14:36 ` Mike Marshall 2021-02-17 14:36 ` Mike Marshall 2021-02-17 15:42 ` David Howells 2021-02-17 16:59 ` Mike Marshall 2021-02-17 16:59 ` Mike Marshall 2021-02-17 22:20 ` David Howells 2021-02-16 11:48 ` David Howells 2021-02-17 16:13 ` Matthew Wilcox 2021-02-17 22:34 ` David Howells 2021-02-17 22:49 ` Matthew Wilcox 2021-02-18 17:47 ` David Howells 2021-02-15 15:45 ` [PATCH 04/33] vfs: Export rw_verify_area() for use by cachefiles David Howells 2021-02-16 10:26 ` Christoph Hellwig 2021-02-16 11:55 ` David Howells 2021-02-15 15:45 ` [PATCH 05/33] netfs: Make a netfs helper module David Howells 2021-02-15 15:45 ` [PATCH 06/33] netfs, mm: Move PG_fscache helper funcs to linux/netfs.h David Howells 2021-02-15 15:45 ` [PATCH 07/33] netfs, mm: Add unlock_page_fscache() and wait_on_page_fscache() David Howells 2021-02-15 15:45 ` [PATCH 08/33] netfs: Provide readahead and readpage netfs helpers David Howells 2021-02-15 15:45 ` [PATCH 09/33] netfs: Add tracepoints David Howells 2021-02-15 15:46 ` [PATCH 10/33] netfs: Gather stats David Howells 2021-02-15 15:46 ` [PATCH 11/33] netfs: Add write_begin helper David Howells 2021-02-15 15:46 ` [PATCH 12/33] netfs: Define an interface to talk to a cache David Howells 2021-02-15 15:46 ` [PATCH 13/33] netfs: Hold a ref on a page when PG_private_2 is set David Howells 2021-02-15 15:47 ` [PATCH 14/33] fscache, cachefiles: Add alternate API to use kiocb for read/write to cache David Howells 2021-02-16 10:49 ` Christoph Hellwig 2021-02-16 15:08 ` David Howells 2021-02-15 15:47 ` [PATCH 15/33] afs: Disable use of the fscache I/O routines David Howells 2021-02-15 15:47 ` [PATCH 16/33] afs: Pass page into dirty region helpers to provide THP size David Howells 2021-02-15 15:47 ` [PATCH 17/33] afs: Print the operation debug_id when logging an unexpected data version David Howells 2021-02-15 15:47 ` [PATCH 18/33] afs: Move key to afs_read struct David Howells 2021-02-15 15:47 ` [PATCH 19/33] afs: Don't truncate iter during data fetch David Howells 2021-02-15 15:48 ` [PATCH 20/33] afs: Log remote unmarshalling errors David Howells 2021-02-15 15:48 ` [PATCH 21/33] afs: Set up the iov_iter before calling afs_extract_data() David Howells 2021-02-15 15:48 ` [PATCH 22/33] afs: Use ITER_XARRAY for writing David Howells 2021-02-15 15:48 ` [PATCH 23/33] afs: Wait on PG_fscache before modifying/releasing a page David Howells 2021-02-15 15:49 ` [PATCH 24/33] afs: Extract writeback extension into its own function David Howells 2021-02-15 15:49 ` [PATCH 25/33] afs: Prepare for use of THPs David Howells 2021-02-15 15:49 ` [PATCH 26/33] afs: Use the fs operation ops to handle FetchData completion David Howells 2021-02-15 15:49 ` [PATCH 27/33] afs: Use new fscache read helper API David Howells 2021-02-15 15:49 ` [PATCH 28/33] ceph: disable old fscache readpage handling David Howells 2021-02-15 15:50 ` [PATCH 29/33] ceph: rework PageFsCache handling David Howells 2021-02-15 15:50 ` [PATCH 30/33] ceph: fix fscache invalidation David Howells 2021-02-15 15:50 ` [PATCH 31/33] ceph: convert readpage to fscache read helper David Howells 2021-02-15 15:50 ` [PATCH 32/33] ceph: plug write_begin into " David Howells 2021-02-15 15:51 ` [PATCH 33/33] ceph: convert ceph_readpages to ceph_readahead David Howells 2021-02-15 18:05 ` [PATCH 00/33] Network fs helper library & fscache kiocb API [ver #3] Jeff Layton 2021-02-15 18:05 ` Jeff Layton 2021-02-16 0:40 ` Steve French 2021-02-16 0:40 ` Steve French 2021-02-16 2:10 ` Matthew Wilcox 2021-02-16 5:18 ` Steve French [this message] 2021-02-16 5:18 ` Steve French 2021-02-16 5:22 ` Steve French 2021-02-16 5:22 ` Steve French 2021-02-23 20:27 ` Matthew Wilcox 2021-02-23 20:27 ` [f2fs-dev] " Matthew Wilcox 2021-02-24 4:57 ` Steve French 2021-02-24 4:57 ` [f2fs-dev] " Steve French 2021-02-24 4:57 ` Steve French 2021-02-24 13:32 ` David Howells 2021-02-24 15:51 ` Matthew Wilcox 2021-02-16 11:01 ` Jeff Layton 2021-02-16 11:01 ` Jeff Layton 2021-02-15 22:46 ` [PATCH 34/33] netfs: Use in_interrupt() not in_softirq() David Howells 2021-02-16 8:42 ` Christoph Hellwig 2021-02-16 9:06 ` Sebastian Andrzej Siewior 2021-02-16 9:29 ` David Howells 2021-02-16 9:30 ` Christoph Hellwig 2021-02-18 14:02 ` [PATCH 34/33] netfs: Pass flag rather than use in_softirq() David Howells 2021-02-18 15:06 ` Marc Dionne 2021-02-18 15:06 ` Marc Dionne 2021-02-18 15:16 ` Marc Dionne 2021-02-18 15:16 ` Marc Dionne 2021-02-19 9:01 ` Sebastian Andrzej Siewior
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAH2r5mv=PZk_wn2=b0VQcaom9TEw1MGLz+qB_Ktxxm2bnV9Nig@mail.gmail.com' \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH 00/33] Network fs helper library & fscache kiocb API [ver #3]' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.