NFS performances -- nfsiostat interpretation of results

Greetings and happy new year for all, best wishes for the new year to come with, I pray, the human kind victory against pandemic and world famine

I try to interpret the output from nfsiostat but I can’t have particular clues concerning any “bottleneck” in a classic inner network nfs connexion.

The output says:

192.168.0.3:/nfsshares/BTRFS3 mounted on /nfsshares/BTRFS3:

       ops/s       rpc bklog 
      93.000           0.000 

read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
95.400 48869.023 512.254 0 (0.0%) 100.234 100.244
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.000 0.000 0.000 0 (0.0%) 0.000 0.000

the avg RTT seems to be the key datas indicating the NFS is well/badly working.

I can not state that “100.234” is a high latency or a low latency – I’m moving files from nfs server to a usb 3.0 drive (baddest situation) thru a nfs client on which the usb drive is connected.

Looking at iotop on both machines, I got 26% I/O on server BUT 98% I/O on client :{
I did a shell command forgetting the trailing “&” to move the files from the BTRFS mouting point to the usb drive – I don’t know if it would have had an impact on I/O.

The files moved are particulary big (1.0 Gb in average).

The server is 15.1 and the client is 15.2.

The server has a nfsmount.conf with those directives…

NFSMount_Global_Options ]
Defaultvers=3
Proto=tcp
Acl=False
Hard=True
Rsize=262144k
Wsize=262144k
Bsize=32k
Timeo=125
mountport=4001
mountproto=tcp
mounvers=3

Server Port

Port=4000

…got exactly the same on client side.

I use autofs to mount “at demand” the nfs shares with this configuration

BTRFS3 -rw,hard,async,locale=fr_BE.utf8 192.168.0.3:/nfsshares/BTRFS3

Could somebody indicate me a “range” of “good RTT” in a local network nfs scenario ? At which RTT could I consider the latency high ?
Thank you very much ^^

Please always put computer text inside [noparse]

...

[/noparse] tags, not quotes. This preserves spacing and makes output readable (your text was not) and quotes are not included in reply, which makes commenting in proper context impossible.

I can not state that “100.234” is a high latency or a low latency

RTT depends on block size (it is time to execute single RPC request). 100ms is not unreasonable for 512KiB blocks.

Could somebody indicate me a “range” of “good RTT” in a local network nfs scenario ?

How long is a piece of string? As long as you are satisfied with overall performance, the actual value does not matter. You have 50MiB/s and may well be bound by read performance on your server side. You could run network capture on client and server side to verify where 100ms are spent - on the wire or in server kernel.

Also single threaded applications will always exhibit lower speed. To fully utilize available bandwidth multiple concurrent streams are needed.