NFS share on Windows 10 client performance

Status
Not open for further replies.

sleeper52

Explorer
Joined
Nov 12, 2018
Messages
91
So I've been testing NFS shares on Windows 10 client.
I've been reading that NFS has some performance advantages over SMB.

I was successfully able to create a NFS share on a dataset named "NFS.TEST"
NFS Services (Administrative Tools and Client for NFS) has been enabled in Control Panel.

On HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default I have created the appropriate New DWORD (32-bit) Value for AnonymousUid and AnonymousGid (In my case it is 1001 for Uid and Gid)

On CMD, I have entered the following command to mount/map the NFS share:
>mount -o nolock,anon,fileaccess=7,mtype=hard \\NASGUL\mnt\Volume2\NFS.TEST *

I am able to create, delete, modify files on the NFS share fine on the Windows 10 client.

My issue is the performance as I have tested the NFS share compared to the SMB share using CrystalDiskMark 6.0.2 x64 and I am producing significantly lower performance on the former.

CDM.JPG

NOTE: Left is SMB. Right is NFS.

The Windows 10 client is using updated Windows 10 Pro x64 running on Ryzen 5 2400G with 16GB DDR4 RAM on a wired CAT 5e connection.
Any idea why the performance is slow and how I can correct this?
 

KrisBee

Wizard
Joined
Mar 20, 2017
Messages
1,288
So I've been testing NFS shares on Windows 10 client.
I've been reading that NFS has some performance advantages over SMB.

Where did you read that? FreeNAS setup?
 

sleeper52

Explorer
Joined
Nov 12, 2018
Messages
91

KrisBee

Wizard
Joined
Mar 20, 2017
Messages
1,288
So are you using ESXI in the same way as in that link? Assuming of course you can actually work out what the host and client that user is referring to in their setup, and is it between VMs on an internal virtual network?. Notice too, that they seem to have SMB figures which contradict your findings.

I ask again, what is your FreeNAS set up?
 

sleeper52

Explorer
Joined
Nov 12, 2018
Messages
91
So are you using ESXI in the same way as in that link? Assuming of course you can actually work out what the host and client that user is referring to in their setup, and is it between VMs on an internal virtual network?. Notice too, that they seem to have SMB figures which contradict your findings.

I ask again, what is your FreeNAS set up?

Yeah I cant really say for sure if setup is the same way as his. I'm just basing it off the thread where they were exclusively talking about NFS sharing in Windows 10 machines. My setup does not involve VMs in any way. It just consists of sharing different datasets through different users & designated groups and a couple of jails (PLEX, Transmission, etc.). I created a "NFS.Test" dataset purely for testing purposes. I am currently using Freenas 11.1U6 with 2 volumes (3x 4TB RAIDZ1 + 3x 10TB RAIDZ1) on Intel Xeon E3-1226 v3 with 32GB ECC DDR3 memory. Boot is located on 2x Sandisk USB 3.0 Ultrafit flash drives in mirror. The "NFS.Test" dataset is located in Volume2 (3x 10TB HGST Ultrastars in RAIDZ1). Connection to the FreeNAS server is via Cat5e to a switch to the Windows 10 Pro Client machine (my HTPC).

Anyone else running NFS share to Windows 10 machine(s)? I would appreciate feedback and CrystalDiskMark benchmarks on them.
 
Last edited:

KrisBee

Wizard
Joined
Mar 20, 2017
Messages
1,288
So you have raidz1 pools with no SLOG that can read/write at near wire speed over a SMB share, on what I assume is a 1gb network, and expect NFS to be as fast or faster than SMB?

The SMB server on FreeNAS operates in async mode unless the client application requires sync writes, while the NFS server operates in sync mode irrespective of whether the client is using async or sync mode. You need to do a bit of reading about zfs sync writes, the zil and SLOG devices, and the sync dataset property.

Having said that the write speed from your NFS bencmark is miserably slow. Is that repeated in a real word simple file copy? You can use syssat -ifstat 1 at the FreeNAS shell to monitor the xfer speed and you'll notice how it fluctuates with NFS and is likely to be more steady with SMB.

In short, for FreeNAs to Windows, SMB shares and/or isci are going to perform best. Did you even see the the sticky post at the head of this section of the forum?
 

sleeper52

Explorer
Joined
Nov 12, 2018
Messages
91
So you have raidz1 pools with no SLOG that can read/write at near wire speed over a SMB share, on what I assume is a 1gb network, and expect NFS to be as fast or faster than SMB?

The SMB server on FreeNAS operates in async mode unless the client application requires sync writes, while the NFS server operates in sync mode irrespective of whether the client is using async or sync mode. You need to do a bit of reading about zfs sync writes, the zil and SLOG devices, and the sync dataset property.

Having said that the write speed from your NFS bencmark is miserably slow. Is that repeated in a real word simple file copy? You can use syssat -ifstat 1 at the FreeNAS shell to monitor the xfer speed and you'll notice how it fluctuates with NFS and is likely to be more steady with SMB.

In short, for FreeNAs to Windows, SMB shares and/or isci are going to perform best. Did you even see the the sticky post at the head of this section of the forum?

I was unaware of SLOG and ZIL and have just read this. I will be reading more into it as you suggested. Even without SLOG, my system is painfully slow as you said. I will be trying to replicate file copy tomorrow (it is midnight now) and report back when I can.
Being new to FreeNAS and NFS I was curious to try this myself. Not mission critical or anything. Essentially doing this to satiate my curiousity.
With regard to the sticky, are you referring to this: Sync writes, or: Why is my ESXi NFS so slow, and why is iSCSI faster?
 
Last edited:

KrisBee

Wizard
Joined
Mar 20, 2017
Messages
1,288
Your linked article is a good starting point, see https://youtu.be/MsY-BafQgj4 for Matt Ahrens and George Wilson at 54mins talking about zfs sync writes etc. Yes, that's the sticky.

What I've done in the past when looking at his was to ssh into FreeNAS and use tux to get multi-pane terminal view in order to monitor disk writes, network transfer and zil usage with these commands gstat, sysstat -ifstat 1, zilstat 1

You can simulate the use of a SLOG by creating a ramdisk device as described here: https://forums.freenas.org/index.php?threads/testing-the-benefits-of-slog-using-a-ram-disk.56561/ No need to change "vfs.zfs.dirty_data_sync"

But take care with the zfs commands to add the ramdisk device as a SLOG, and very importantly remember to remove it once testing is over. If you reboot your FreeNAS without first removing the ramdisk SLOG you'll have a pool import failure to work around.
 
Last edited:
Status
Not open for further replies.
Top