* mount NFS with localio @ 2025-07-30 12:43 Anton Gavriliuk 2025-07-31 17:58 ` Mike Snitzer 0 siblings, 1 reply; 3+ messages in thread From: Anton Gavriliuk @ 2025-07-30 12:43 UTC (permalink / raw) To: linux-nfs Hi How to mount NFS with localio on Fedora Server 42 (6.15.8 kernel) ? Localio enabled in kernel [root@23-127-77-5 ~]# cat /boot/config-6.15.8-200.fc42.x86_64 | grep -i localio CONFIG_NFS_COMMON_LOCALIO_SUPPORT=m CONFIG_NFS_LOCALIO=y [root@23-127-77-5 ~]# lsmod | grep -i localio nfs_localio 36864 2 nfsd,nfs sunrpc 925696 30 nfs_localio,nfsd,rpcrdma,nfsv4,auth_rpcgss,lockd,rpcsec_gss_krb5,nfs_acl,nfs [root@23-127-77-5 ~]# mount -t nfs 127.0.0.1:/mnt /mnt1 [root@23-127-77-5 ~]# [root@23-127-77-5 ~]# mount | grep -i mnt1 127.0.0.1:/mnt on /mnt1 type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,fatal_neterrors=none,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1) So /mnt1 is mounted with localio ? Anton ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: mount NFS with localio 2025-07-30 12:43 mount NFS with localio Anton Gavriliuk @ 2025-07-31 17:58 ` Mike Snitzer 2025-08-01 13:43 ` Anton Gavriliuk 0 siblings, 1 reply; 3+ messages in thread From: Mike Snitzer @ 2025-07-31 17:58 UTC (permalink / raw) To: Anton Gavriliuk; +Cc: linux-nfs On Wed, Jul 30, 2025 at 03:43:00PM +0300, Anton Gavriliuk wrote: > Hi > > How to mount NFS with localio on Fedora Server 42 (6.15.8 kernel) ? > > Localio enabled in kernel > > [root@23-127-77-5 ~]# cat /boot/config-6.15.8-200.fc42.x86_64 | grep -i localio > CONFIG_NFS_COMMON_LOCALIO_SUPPORT=m > CONFIG_NFS_LOCALIO=y > > [root@23-127-77-5 ~]# lsmod | grep -i localio > nfs_localio 36864 2 nfsd,nfs > sunrpc 925696 30 > nfs_localio,nfsd,rpcrdma,nfsv4,auth_rpcgss,lockd,rpcsec_gss_krb5,nfs_acl,nfs > > [root@23-127-77-5 ~]# mount -t nfs 127.0.0.1:/mnt /mnt1 > [root@23-127-77-5 ~]# > [root@23-127-77-5 ~]# mount | grep -i mnt1 > 127.0.0.1:/mnt on /mnt1 type nfs4 > (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,fatal_neterrors=none,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1) > > So /mnt1 is mounted with localio ? Should be. One way to tell, albeit less ironclad, is that performance improves (reduced use of network/sunrpc is also a tell-tale). But see commit 62d2cde203def ("NFS: add localio to sysfs") It adds semi-useful exposure of whether LOCALIO is active for a given rpc client. I say "semi-useful" because I'm left wanting on the reliability of this interface (particularly when pnfs flexfiles is used, the separate NFS client that is established to connect to the local NFSD over v3 isn't getting added to sysfs for some reason.. not put time to fixing that yet). But for simple loopback NFS mount that doesn't use pnfs flexfiles it _should_ work, e.g.: # cat /sys/fs/nfs/0\:46/localio 1 I've found that the best way to _know_ LOCALIO enabled is to use trace points, but yeah that is kind of obscure and certainly not common in production. These tracepoints really showcase LOCALIO is being used: echo 1 > /sys/kernel/tracing/events/sunrpc/svc_process/enable echo 1 > /sys/kernel/tracing/events/nfs_localio/nfs_localio_enable_client/enable echo 1 > /sys/kernel/tracing/events/nfs_localio/nfs_localio_disable_client/enable echo 1 > /sys/kernel/tracing/events/nfs/nfs_local_open_fh/enable (NOTE: it is only with this patch applied that the nfs_local_open_fh tracepoint is made much more useful, otherwise it'd only show if the function failed to open the fh.. unfortunately not yet picked up for upstream: https://lore.kernel.org/linux-nfs/20250724193102.65111-9-snitzer@kernel.org/ ) echo nop > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_on With these enabled, mounting NFS via loopback and doing a simple dd shows the following in: cat /sys/kernel/debug/tracing/trace nfsd-10448 [024] ..... 4316.520916: svc_process: addr=192.168.1.106 xid=0xcf2cdbdf service=nfslocalio vers=1 proc=UUID_IS_LOCAL kworker/u194:0-9772 [042] ..... 4316.520951: nfs_localio_enable_client: server=192.168.1.106 NFSv3 kworker/u194:0-9772 [042] ..... 4316.647334: nfs_local_open_fh: fhandle=0x4d34e6c1 mode=READ|WRITE result=0 Also, enabling various nfsd tracepoints and seeing the absence of them is telling. Similarly, enabling tracepoints for NFSD's underlying filesystem (e.g. xfs) and seeing the process that is triggering the trace isn't nfsd showcases LOCALIO being used, e.g.: with LOCALIO: kworker/u194:3-9540 [027] ..... 5155.011380: xfs_file_direct_write: dev 259:16 ino 0x3e00008f disize 0xb7a0 pos 0xc000 bytecount 0xa000 without LOCALIO: nfsd-10448 [034] ..... 5730.314274: xfs_file_direct_write: dev 259:16 ino 0x3e00008f disize 0xb7a0 pos 0xc000 bytecount 0xa000 Hope this helps, Mike ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: mount NFS with localio 2025-07-31 17:58 ` Mike Snitzer @ 2025-08-01 13:43 ` Anton Gavriliuk 0 siblings, 0 replies; 3+ messages in thread From: Anton Gavriliuk @ 2025-08-01 13:43 UTC (permalink / raw) To: Mike Snitzer; +Cc: linux-nfs > But for simple loopback NFS mount that > doesn't use pnfs flexfiles it _should_ work, e.g.: > > # cat /sys/fs/nfs/0\:46/localio > 1 Yes, it works, thank you. For NFS localio single thread sequential read with enabled localio_O_DIRECT_semantics, performance improved 3.5 times! I'm also looking for non-localio NFS performance improvements, interested in end-to-end O_DIRECT. How to enable non-localio end-to-end O_DIRECT ? Anton чт, 31 июл. 2025 г. в 20:58, Mike Snitzer <snitzer@kernel.org>: > > On Wed, Jul 30, 2025 at 03:43:00PM +0300, Anton Gavriliuk wrote: > > Hi > > > > How to mount NFS with localio on Fedora Server 42 (6.15.8 kernel) ? > > > > Localio enabled in kernel > > > > [root@23-127-77-5 ~]# cat /boot/config-6.15.8-200.fc42.x86_64 | grep -i localio > > CONFIG_NFS_COMMON_LOCALIO_SUPPORT=m > > CONFIG_NFS_LOCALIO=y > > > > [root@23-127-77-5 ~]# lsmod | grep -i localio > > nfs_localio 36864 2 nfsd,nfs > > sunrpc 925696 30 > > nfs_localio,nfsd,rpcrdma,nfsv4,auth_rpcgss,lockd,rpcsec_gss_krb5,nfs_acl,nfs > > > > [root@23-127-77-5 ~]# mount -t nfs 127.0.0.1:/mnt /mnt1 > > [root@23-127-77-5 ~]# > > [root@23-127-77-5 ~]# mount | grep -i mnt1 > > 127.0.0.1:/mnt on /mnt1 type nfs4 > > (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,fatal_neterrors=none,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1) > > > > So /mnt1 is mounted with localio ? > > Should be. > > One way to tell, albeit less ironclad, is that performance improves > (reduced use of network/sunrpc is also a tell-tale). > > But see commit 62d2cde203def ("NFS: add localio to sysfs") > It adds semi-useful exposure of whether LOCALIO is active for a given > rpc client. I say "semi-useful" because I'm left wanting on the > reliability of this interface (particularly when pnfs flexfiles is > used, the separate NFS client that is established to connect to the > local NFSD over v3 isn't getting added to sysfs for some reason.. not > put time to fixing that yet). But for simple loopback NFS mount that > doesn't use pnfs flexfiles it _should_ work, e.g.: > > # cat /sys/fs/nfs/0\:46/localio > 1 > > I've found that the best way to _know_ LOCALIO enabled is to use trace > points, but yeah that is kind of obscure and certainly not common in > production. > > These tracepoints really showcase LOCALIO is being used: > > echo 1 > /sys/kernel/tracing/events/sunrpc/svc_process/enable > echo 1 > /sys/kernel/tracing/events/nfs_localio/nfs_localio_enable_client/enable > echo 1 > /sys/kernel/tracing/events/nfs_localio/nfs_localio_disable_client/enable > echo 1 > /sys/kernel/tracing/events/nfs/nfs_local_open_fh/enable > > (NOTE: it is only with this patch applied that the nfs_local_open_fh > tracepoint is made much more useful, otherwise it'd only show if the > function failed to open the fh.. unfortunately not yet picked up for > upstream: > https://lore.kernel.org/linux-nfs/20250724193102.65111-9-snitzer@kernel.org/ > ) > > echo nop > /sys/kernel/debug/tracing/current_tracer > echo 1 > /sys/kernel/debug/tracing/tracing_on > > With these enabled, mounting NFS via loopback and doing a simple dd > shows the following in: cat /sys/kernel/debug/tracing/trace > > nfsd-10448 [024] ..... 4316.520916: svc_process: addr=192.168.1.106 xid=0xcf2cdbdf service=nfslocalio vers=1 proc=UUID_IS_LOCAL > kworker/u194:0-9772 [042] ..... 4316.520951: nfs_localio_enable_client: server=192.168.1.106 NFSv3 > kworker/u194:0-9772 [042] ..... 4316.647334: nfs_local_open_fh: fhandle=0x4d34e6c1 mode=READ|WRITE result=0 > > Also, enabling various nfsd tracepoints and seeing the absence of them > is telling. Similarly, enabling tracepoints for NFSD's underlying > filesystem (e.g. xfs) and seeing the process that is triggering the > trace isn't nfsd showcases LOCALIO being used, e.g.: > > with LOCALIO: > > kworker/u194:3-9540 [027] ..... 5155.011380: xfs_file_direct_write: dev 259:16 ino 0x3e00008f disize 0xb7a0 pos 0xc000 bytecount 0xa000 > > without LOCALIO: > > nfsd-10448 [034] ..... 5730.314274: xfs_file_direct_write: dev 259:16 ino 0x3e00008f disize 0xb7a0 pos 0xc000 bytecount 0xa000 > > Hope this helps, > Mike ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-01 13:44 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-07-30 12:43 mount NFS with localio Anton Gavriliuk 2025-07-31 17:58 ` Mike Snitzer 2025-08-01 13:43 ` Anton Gavriliuk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox