- Yes, absolutely right. At least I need to enable 'Write Cache' with 'Write-Back' option to increase perfomance on random data write commands.
The reults with write-cache:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 1950.515 MB/s
Sequential Write : 3545.783 MB/s
Random Read 512KB : 2932.946 MB/s
Random Write 512KB : 2980.421 MB/s
Random Read 4KB (QD=1) : 79.481 MB/s [ 19404.4 IOPS]
Random Write 4KB (QD=1) : 78.543 MB/s [ 19175.5 IOPS]
Random Read 4KB (QD=32) : 551.817 MB/s [134721.0 IOPS]
Random Write 4KB (QD=32) : 519.086 MB/s [126729.9 IOPS]
Test : 50 MB [E: 0.0% (0.4/16740.0 GB)] (x2)
Date : 2016/09/28 14:25:09
OS : Windows NT 6.2 Server Standard Edition (full installation) [6.2 Build 9200] (x64)
Both results was taken on the same 10xHHD RAID5 using Adaptec 8405.
Sector: size 4k
Stripe size: 512k
- I tinnk, sometimes 1 channel SAS controller is not enough for I/O. Use single-channels or extensions.
- RAID50 is the option to increase speed.
The results of RAID50 at the same hardware:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 1799.496 MB/s
Sequential Write : 3423.066 MB/s
Random Read 512KB : 2450.107 MB/s
Random Write 512KB : 2627.551 MB/s
Random Read 4KB (QD=1) : 77.889 MB/s [ 19016.0 IOPS]
Random Write 4KB (QD=1) : 76.530 MB/s [ 18684.0 IOPS]
Random Read 4KB (QD=32) : 519.356 MB/s [126796.0 IOPS]
Random Write 4KB (QD=32) : 522.408 MB/s [127541.0 IOPS]
Test : 50 MB [E: 0.0% (0.6/14879.9 GB)] (x2)
Date : 2016/09/29 6:41:13
OS : Windows NT 6.2 Server Standard Edition (full installation) [6.2 Build 9200] (x64)
Anyway, I'm still looking for solutions to make write acess faster as much as it possible.
Deep info about stripe (thanks to hurikhan77):
'You should absolutely not use RAID-5 without battery - no matter if you use write-caching or not. Any RAID is subject to write-hole without battery buffering. Plus, it will increase the write-performance a lot.
But if you totally insist on using no battery buffering, try lowering the stripe size. 512k seems huge if you mostly do random, small IO. On a 3x HDD sized array, you need to write contiguous blocks of 1 megabyte to saturate the IO path. Doing smaller IO results in write amplification due to read-modify-write cycle. That means, your array reads 1 MB of net data, modifies 4k, and needs to write 1 MB again. Adding seeking overhead explains why even 512k performance is so low (amplification factor is 2, rewriting data needs to wait almost one revolution of the platters, adding 8ms of IO wait per 1M of data written). Effectively, you can only transfer 512k per 16ms this way, which is about what you get: less than 32 MB/s (if your disks have 8ms access time). I even suggest that the average access time is your biggest problem here. Get a battery buffered cache, there's no way around it. And use SSD CacheCade to reduce seek overheads.'