Samsung SM951 NVMe M.2 PCIe SSD Review
Are Force Unit Access Commands Hurting Write Performance?
The Samsung SM951-NVMe is the first NVMe PCIe SSD for that uses the M.2 form factor and is one of the very first drives to the market that used the NVMe standard. The first drive that Legit Reviews was able to look at with NVMe was the Intel SSD 750 Series and it performed very well. The Intel SSD 750 Series was designed to be used in conjunction with the Intel NVMe storage driver as the drives have a few unique features. For example the Intel SSD 750 Series has power loss protection and Intel is able to write to the write buffer and begin executing again immediately because the data is guaranteed to be written even if the host power is lost.
What does that have to do with the Samsing SM951-NVMe SSD?
Well, the Samsung SM951-NVMe uses the standard Microsoft NVMe driver in Windows 8.1 as there is no Samsung NVMe driver. This means that the drive creates Force Unit Access (FUA) I/O write commands to make sure the data is written to stable storage. It essentially disables write caching, which is much slower but guaranteed to be safe (no data loss). The Intel driver does not use FUA because the Intel SSD 750 series has power loss protection.
So long story short the Windows 8.1 NVMe driver uses FUA by default whereas the Intel NVMe driver does not. This matters as it appears that FUA is causing low scores in PCMark 8 and other benchmarks.
Samsung is aware of the low performance results in benchmarks like PCMark 8 and said that our storage bandwidth score should be more than 600MB/s and not the 97MB/s that we received. Samsung is certain that the low performance difference is due to the NVMe driver creating FUA (Force Unit Access) I/O write commands and has data to prove it. They were able to compare a Samsung SM951-AHCI to a SM951-NVMe in PCMark 8 while monitoring the number of FUA write commands that were being called. They found that zero were being created with AHCI drivers versus over 233,000 with the Microsoft NVMe drivers! (see chart below).
Write Command Count | FUA Write Command Count | FUA Command Ratio | |
w/ AHCIdriver | 445885 | 0 | 0 % |
w/ NVMedriver | 445846 | 233151 | 52.29% |
Samsung then concluded that this is a driver-level issue and not an SSD defect. They suggested that you turn off FUA in PCMark8 to run the NVMe SSD test temporarily. The only problem is that there isn’t a way to disable FUA in the driver or PCMark 8 without some heavy driver hacking from what we have been told.
We contacted Futuremark and they were unaware of a way to disable FUA and that they were trying to get NVMe drives for internal testing as they do not have any NVMe drives right now. They suggested that we try disabling writing caching in the driver properties.
We did that and our performance went up to 4480 on the overall storage score and the storage bandwidth test was now at 109MB/s. A slight improvement, but no where near the 600MB/s that Sasmsung says we should be at. Legit Reviews has been in communication with several companies to inquire about turning off FUA, but it seems that everying is wondering how you do that. Hopefully once Futuremark gets NVMe hardware in their labs they can shed some more light on the situation. For now we can just bring it to your attention to let you know what is going on.
Update July 2nd, 2015:
Samsung sent us a new drive that contains an updated firmware that has some obvious changes in the way this particular NVMe drive handles Force Unit Access (FUA) I/O write commands. Our overall performance score shot up from 4394 to 5088 and the storage bandwidth score went from 97.48 MB/s to an impressive 616.76 MB/s. This is a huge performance increase!