Re: [PATCH v2 00/18] Initial conversion of NFS basic I/O to use folios
From: Trond Myklebust <hidden>
Date: 2023-01-24 16:42:14
On Jan 24, 2023, at 11:07, Olga Kornievskaia [off-list ref] wrote: On Fri, Jan 20, 2023 at 12:10 AM [off-list ref] wrote:quoted
From: Trond Myklebust <redacted> This set of patches represents an initial effort to convert the page cache I/O in the NFS client to use native folio functionality. It should allow the nfs_page structs and their helpers to carry folios (including folios of order > 0) and to pass their data contents through to the RPC layer. Note that because O_DIRECT uses pages, we still need to support the traditional page based I/O, and so the new struct nfs_page will carry both types. I did not touch the fscache code, but I expect that to be able to continue to work with order 0 folios. The plan is to merge this functionality with order 0 folios first, in order to catch any regressions in existing functionality. Then we can enable order n > 0 once we're happy about the stability (at least for the non-fscache case). At this point, the xfstests are all passing without any regressions on my setup, so I'm throwing the patches over the fence to allow for wider testing. Please make sure, in particular to test pNFS if your server supports it. I didn't have to make any changes to the pNFS code, and I don't expect any trouble, but it would be good to have validation of that assumption.Here's my experience with running with these patches running thru xfstest's quick group: Against a linux server: takes about a couple of minutes longer to run with folio patches (48m with folio, 45 without) but that's just from 1 run with and and without. Against an ontap server (so pnfs case): total time is higher with patches: I have a difference of 47m with folio and 38m without. While I don't believe this is related to folio patches but I need to increase my vm's size to 4g to have a successful run of xfstest. Tests generic/531 and generic/460 are problematic with 2G. generic/531 leads to oom-killer and generic/460 hangs.
Hmm… Does the performance climb back to normal if you revert the patch 21f5ae90169b ("NFS: fix up nfs_release_folio() to try to release the page”)? That’s the only one I can think of that does more than just convert from struct page -> struct folio.
_________________________________
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@hammerspace.com