I have a box running 9.2.0 on a small windows network using CIFS. I put it together to use old hardware and drives as back storage on the network so it actually spends most of the time turned off. The drives are organised as a couple of raidz volumes.
When I do turn it on I want to sync directory structures containing thousands of files with other machines on the network and it is terribly slow. A recursive directory listing processes a few tens of files per second. If I list a directory from cold I see freenas memory usage rising which I presume is it caching zfs metadata. If I list the same directory a second time files are processed tens of times faster. I think caching on the freenas box not local is making the difference.
If I sync a directory tree containing 60k files it takes 25 minutes to decide what needs to be synced. File transfer of larger files runs at 70-80MB/s in either direction so the network isn't inherently slow.
My question is are there any settings or tweaks which might improve performance for this usage, perhaps something to encourage read ahead of zfs metadata.
When I do turn it on I want to sync directory structures containing thousands of files with other machines on the network and it is terribly slow. A recursive directory listing processes a few tens of files per second. If I list a directory from cold I see freenas memory usage rising which I presume is it caching zfs metadata. If I list the same directory a second time files are processed tens of times faster. I think caching on the freenas box not local is making the difference.
If I sync a directory tree containing 60k files it takes 25 minutes to decide what needs to be synced. File transfer of larger files runs at 70-80MB/s in either direction so the network isn't inherently slow.
My question is are there any settings or tweaks which might improve performance for this usage, perhaps something to encourage read ahead of zfs metadata.