Horrible Write Performance

Associate
Joined
13 May 2007
Posts
1,832
Location
Lancashire, UK
So I've been playing around with storage options on my home server and there seems to be a bottleneck with write performance on the server that I can't pinpoint.

The server is a HP ML350 G5, using the built in Smart Array e200i raid controller. All drives are 2TB 7.2k SATA3. I've tested a variety of things and here are the results:

Test 1 - 4 drives in raid 1+0 using built controller

Code:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   192.576 MB/s
          Sequential Write :    27.449 MB/s
         Random Read 512KB :    54.401 MB/s
        Random Write 512KB :    27.290 MB/s
    Random Read 4KB (QD=1) :     0.788 MB/s [   192.4 IOPS]
   Random Write 4KB (QD=1) :     1.921 MB/s [   468.9 IOPS]
   Random Read 4KB (QD=32) :     2.236 MB/s [   546.0 IOPS]
  Random Write 4KB (QD=32) :     1.599 MB/s [   390.4 IOPS]

  Test : 1000 MB [D: 0.5% (18.6/3725.8 GB)] (x5)
  Date : 2014/06/21 6:38:45
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Test 2 - 4 drives using Windows Storage Spaces Simple Array

Code:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   175.906 MB/s
          Sequential Write :    27.047 MB/s
         Random Read 512KB :    45.671 MB/s
        Random Write 512KB :    34.761 MB/s
    Random Read 4KB (QD=1) :     0.590 MB/s [   144.1 IOPS]
   Random Write 4KB (QD=1) :     1.793 MB/s [   437.8 IOPS]
   Random Read 4KB (QD=32) :     1.073 MB/s [   262.0 IOPS]
  Random Write 4KB (QD=32) :     1.814 MB/s [   442.9 IOPS]

  Test : 1000 MB [E: 0.5% (18.6/3723.8 GB)] (x5)
  Date : 2014/06/20 13:17:51
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Test 3 - 4 Drives usings Windows Storage Spaces Mirror Array

Code:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   106.476 MB/s
          Sequential Write :    14.024 MB/s
         Random Read 512KB :    45.812 MB/s
        Random Write 512KB :    13.884 MB/s
    Random Read 4KB (QD=1) :     0.601 MB/s [   146.8 IOPS]
   Random Write 4KB (QD=1) :     0.296 MB/s [    72.2 IOPS]
   Random Read 4KB (QD=32) :     0.595 MB/s [   145.4 IOPS]
  Random Write 4KB (QD=32) :     0.276 MB/s [    67.3 IOPS]

  Test : 1000 MB [D: 0.5% (9.3/1860.8 GB)] (x5)
  Date : 2014/06/20 13:06:59
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Test 4 - 4 Drives using Windows Storage Spaces. 2 mirrors created and then data striped across the mirror using disk management (Fake Raid 10)

Code:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   190.529 MB/s
          Sequential Write :    20.726 MB/s
         Random Read 512KB :    47.539 MB/s
        Random Write 512KB :    24.337 MB/s
    Random Read 4KB (QD=1) :     0.660 MB/s [   161.2 IOPS]
   Random Write 4KB (QD=1) :     1.886 MB/s [   460.4 IOPS]
   Random Read 4KB (QD=32) :     2.311 MB/s [   564.3 IOPS]
  Random Write 4KB (QD=32) :     1.821 MB/s [   444.7 IOPS]

  Test : 1000 MB [D: 0.5% (18.6/3721.7 GB)] (x5)
  Date : 2014/06/20 12:41:52
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Now from the test results, its clear each differing setup is making a difference to the Read results, but the Write results are just consistently poor.

I'm unsure at this point would could be causing this issues, although I'm leaning towards it being the e200i controller just being poop. Anyone have any ideas what else I could try to do to improve this performance ?
 
Sorry I should mention that these drives are being used to house HyperV guests, hence me being concerned about write performance. I do intend to create a separate storage server to house all of these eventually, but for now I'm stuck with this.
 
Holy **** did that make a difference.

Weird thing is I checked the cache configuration using the GUI tool and it looked like it was on, but checking using the CLI showed it to be disabled. Anyway, I've now enabled it, set it to 100% read and now have the following:

Code:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   190.858 MB/s
          Sequential Write :   160.284 MB/s
         Random Read 512KB :    52.272 MB/s
        Random Write 512KB :   109.353 MB/s
    Random Read 4KB (QD=1) :     0.770 MB/s [   187.9 IOPS]
   Random Write 4KB (QD=1) :     3.198 MB/s [   780.9 IOPS]
   Random Read 4KB (QD=32) :     3.060 MB/s [   747.1 IOPS]
  Random Write 4KB (QD=32) :     3.220 MB/s [   786.2 IOPS]

  Test : 1000 MB [D: 0.5% (18.6/3725.8 GB)] (x5)
  Date : 2014/06/21 12:00:01
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

This using the controller to create a 4 disk raid 1+0 array. So read speeds have increased by an insignificant amount, but the sequential write result went from 27.449MB/s to 160.284 MB/s, nearly a 6 fold incease :eek:

Many thanks for that article, I'll be happily able to keep this server running whilst I build my new monster storage box.
 
Just simple logic. You set the cache ratio to whatever you think the ratio of Reads and Writes will be. In general use, you have mostly reads, and a small number of writes. You have yours set to 0% write, which means writes are not cached. But do you not make writes -- at all? Of course you do! Hence set the cache to give a little bit to writes.
 
Back
Top Bottom