With NVMe there is finally a successor to AHCI, which has been optimized for SSDs from ground up. Meanwhile there are affordable drive in the enthusiast segment available which benefit from this new standard. Therefore it's interesting to have a look at RAID0 performance of two very fast NVMe drives. And this is exactly what we're going to do on the following pages.
Specifications / Delivery
Model |
Samsung 950 Pro M.2 256 GB |
Samsung 950 Pro M.2 512 GB |
Samsung 950 Pro M.2 1 TB |
Capacity |
256 GB |
512 GB |
1 TB |
Form
Factor |
M.2 (2280) |
M.2 (2280) |
M.2 (2280) |
Interface |
PCIe 3.0 x4 |
PCIe 3.0 x4 |
PCIe 3.0 x4 |
Protocol |
NVMe |
NVMe |
NVMe |
Controller |
- Samsung UBX
- ARM 3-Core
- 500MHz
- 8 Channel
|
- Samsung UBX
- ARM 3-Core
- 500MHz
- 8 Channel
|
- Samsung UBX
- ARM 3-Core
- 500MHz
- 8 Channel
|
Memory |
|
|
|
DRAM |
512 MB |
512 MB |
n/a |
Throughput |
- 2200 MB/s sequential read
- 900 MB/s sequential write
- 270'000 IOPS 4K random read
- 180'000 IOPS 4K random write
|
- 2500 MB/s sequential read
- 1500 MB/s sequential write
- 300'000 IOPS 4K random read
- 110'000 IOPS 4K random write
|
- 2500 MB/s sequential read
- 1500 MB/s sequential write
- 300'000 IOPS 4K random read
- 110'000 IOPS 4K random write
|
Endurance |
200 TBW |
400 TBW |
800 TBW |
Power
Consumption |
- 5.1 Watt active
- 1.7 Watt idle
|
- 5.1 Watt active
- 1.7 Watt idle
|
|
Warranty |
5 Years |
5 Years |
5 Years |
Price |
|
|
|
The Drives - 2 x Samsung 950 Pro 256 GB
Samsung is amongst the first companies which launched an NVMe SSD for end users. NVMe or NVM Express stands for Non-Volatile Memory Host Controller Interface Specification (NVMHCI). These specs define how solid state drives are being accessed through the PCI Express bus and therefore directly communicate with the CPU. NVMe replaces AHCI in the case of SSDs and it brings quite a few advantages to the table. AHCI, or Advanced Host Controller Interface, was optimized for drives with low throughput and high latencies. Apart from that it could not deal with high parallelism, being limited to a queue depth of 32. NVMe on the other hand has been designed to leverage the benefits of SSD from ground up, which means it can deal perfectly with low latency and high throughput drives. Apart from that it supports another magnitude of parallelism, whereas the queue depth can reach up to 65536. Since SSDs are based on controllers, which usually feature between eight and ten channels, parallelism is a key factor in gaining more performance.
Having a closer look at the specs we see that Samsung claims the 256GB 950 Pro M.2 can reach up to 2200/900MB/s sequential read/write speeds, which is simply a new level when it comes to the desktop market. Apparently this kind of performance in combination with a high-capacity drive doesn’t result in a bargain, which is why for instance the 512GB drive will set you back 319 Euro. Nevertheless, for this kind of money you really do get a drive, which outperforms almost anything available on the market to date and also offers a good amount of capacity.
A closer look at this M.2 expansion card shows, Samsung is using their 3 core ARM controller in the UBX version as well as second generation V-NAND memory. Therefore 32 layers of NAND flash memory are being stacked, which allows for 128Gbit of density. Per memory chip this translates into 128GB of capacity. At the moment Samsung is building 256GB as well as 512GB models. At a later stage, when the vendor switches to 48 layer V-NAND a 1 Terabyte drive is going to be available as well.
[pagebreak]
Page 2 - Setup
Setting up a RAID0 configuration with two NVMe based drives, is actually quite tricky. Apart from that there are quite a lot of limitations these days. It's only possible to realize a bootable NVMe RAID if you're using a motherboard, which is based on Intel's Z170 Express chipset. If it's your plan to create a non-bootable RAID of two NVMe SSDs, then you can also create a software RAID within Windows using a dynamic RAID array. Following we've put together bullet point lists which explain how to create a dynamic RAID array in Windows or how to create a RAID in the BIOS of a Z170 Express based motherboard, which supports NVMe RAID configurations. In that case we're going to look into the settings of the ASRock Extreme 7+ motherobard.
Software RAID - Windows 10
- Press the Windows key
- Type "Computer Management" and press Enter
- Double click storage
- Double click Disk Management
- Right click on one of the unformatted NVMe SSDs
- Choose the option create RAID volume
- Click through the setup guide, create and format your RAID volume and you're done
RAID in BIOS - Z170 Express chipset - ASRock Z170 Extreme7+
In general we're looking for the option "Intel Rapid Storage Technology" to then create the RAID configuration directly in the BIOS.
- Go to Boot tab
- Select CSM (Compatibility Support Module)
- Change the policies to UEFI only
- Save and exit BIOS (press F10 and then enter)
- Go to Advanced tab
- Select Intel Rapid Storage Technology
- You now see all your NVMe drive and you can create a RAID the way you're used to it from onboard RAID controllers
- Create the RAID and reboot
- You now have a bootable NVMe RAID configuration
[pagebreak]
Test Setup
Testenvironment |
Motherboard |
ASRock Z170 Extreme7+ |
Chipset |
Intel Z170 Express |
CPU |
Intel Core i7-6700k |
Memory |
G.Skill DDR4-3000 MHz |
Graphics
card |
ASUS GeFroce GTX 980 |
Storage
(system) |
OCZ Trion 100 480GB |
Operating
systems |
Windows 10 64 Bit with caching
drives |
iozone
iozone3 is a benchmark suit for storage solutions which natively runs under
Windows/Linux.
We are testing
the throughput with different block sizes using the following commands:
KByte/s
- iozone -Rb test4k.xls -i0 -i1 -i2 -+n -r 4k -s4g -t32
- iozone -Rb test256k.xls -i0 -i1 -i2 -+n -r 256k -s4g -t32
iops
- iozone -Rb test4ko.xls -i0 -i1 -i2 -+n -r 4k -s4g -t32 -O
[pagebreak]
Throughput 1 Thread (QD1)
1T Throughput (KB/s) |
|
4k |
8k |
16k |
32k |
64k |
128k |
256k |
512k |
Seq write |
1747353 |
1769307 |
1783268 |
1777643 |
1790696 |
1797773 |
1794900 |
1796676 |
Seq read |
2461388 |
2483256 |
2666259 |
2910238 |
2994702 |
3270414 |
3586744 |
3434945 |
Rand write |
425544 |
768018 |
714314 |
952997 |
1139652 |
1810675 |
1802551 |
1798803 |
Rand read |
93019 |
164404 |
284988 |
498046 |
848871 |
1312506 |
1802551 |
1958114 |
Throughput 4 Threads (QD4)
4T Throughput (KB/s) |
|
4k |
8k |
16k |
32k |
64k |
128k |
256k |
512k |
Seq write |
1734681 |
1745199 |
1752717 |
1749988 |
1746550 |
1740645 |
1737329 |
1747649 |
Seq read |
3200140 |
3712778 |
3536805 |
3394905 |
3535825 |
4063763 |
4078375 |
4105079 |
Rand write |
643331 |
1748104 |
1752796 |
1633489 |
1709811 |
1745608 |
1744081 |
1741351 |
Rand read |
361063 |
627183 |
1004590 |
1582003 |
2431039 |
3677908 |
3333973 |
3679007 |
Throughput 8 Threads (QD8)
8T Throughput (KB/s) |
|
4k |
8k |
16k |
32k |
64k |
128k |
256k |
512k |
Seq write |
1664911 |
1684958 |
1622571 |
1692768 |
1688034 |
1697172 |
1693452 |
1698638 |
Seq read |
2967851 |
2985489 |
2685801 |
2934987 |
3175089 |
3514671 |
3284149 |
3529531 |
Rand write |
619208 |
1002215 |
909200 |
1194190 |
1476317 |
1635115 |
1632889 |
1673836 |
Rand read |
661349 |
1065095 |
1544404 |
2158337 |
2728644 |
3168121 |
3041362 |
2928649 |
Throughput 16 Threads (QD16)
16T Throughput (KB/s) |
|
4k |
8k |
16k |
32k |
64k |
128k |
256k |
512k |
Seq write |
1643570 |
1508284 |
1532451 |
1689201 |
1696326 |
1712088 |
1701002 |
1703631 |
Seq read |
2676406 |
2826251 |
2923846 |
3153933 |
3207328 |
3512752 |
3336694 |
3428961 |
Rand write |
626104 |
1060214 |
1197724 |
1366803 |
1412977 |
1620205 |
1642324 |
1682576 |
Rand read |
1123269 |
1713606 |
2304508 |
2626102 |
2645925 |
2721161 |
2843373 |
2887165 |
Throughput 32 Threads (QD32)
32T Throughput (KB/s) |
|
4k |
8k |
16k |
32k |
64k |
128k |
256k |
512k |
Seq write |
2874047 |
1660645 |
1653916 |
1657679 |
1653125 |
1651552 |
1697177 |
1659004 |
Seq read |
2512162 |
2732283 |
2919775 |
3016188 |
3062896 |
3274514 |
3345526 |
3238460 |
Rand write |
614344 |
875119 |
1029483 |
1300178 |
1437626 |
1548599 |
1650238 |
1633094 |
Rand read |
1599881 |
2191480 |
2571245 |
2435784 |
2976655 |
2419493 |
1907786 |
2419055 |
[pagebreak]
Conclusion
If you’re looking for a a solutions which offers an extremely well performing storage subsystem, then the consumer segment has almost nothing to offer that’s faster than a RAID0, which is based on two NVMe SSDs. The two Samsung 950 Pro 256GB M.2 drives we’ve been using for our test, were capable of pumping out up to 4.0GB/s regarding sequential read and 1.7GB/s when it comes to sequential write. A closer look at IOPS performance shows 340’000 IOPS when writing randomly and 200’000 IOPS in random read.
The above mentioned values are actually very impressive but is there actually any real-world benefit? Does one really feel a difference between 100’000 and 340’000 IOPS while in Windows? Frankly speaking; if you’re coping large files often then performance will be boosted but in any other case the performance difference you feel is minimal. If you’re a standard user, running your usual programs like Office, your browser and a few games, then moving from an already quick SATA SSD towards an NVMe-RAID0 configuration doesn’t really make sense. Nevertheless, if you’re a power user, you will definitely notice a performance difference when you’re moving from a PC with such an insane NVMe RAID0 config back to a quick SATA drive. And the difference will be even larger the longer you’ve been using the NVMe RAID0.
Bottom line it’s interesting to see what the combination of two very fast NVMe SSDs are capable of doing. In the end the standard applications like Office, your browser or even games don’t really benefit from such an extremely high performing storage subsystem. If you’re planning on building an absolute high-end system then choosing such a setup can definitely make sense and keeping the price in mind, it will be difficult to find anything that’s faster at the same price point. Talking about pricing: one of the Samsung 950 Pro M.2 256GB drives sells for 177 Euro these days. This means that two account for 354 Euro. If you’re looking for maximum performance for the money you’re paying, then this a good solution. If it’s your goal to have best possible performance at the lowest possible price; well then you’ve definitely come to the wrong neighborhood.