pavement

RAID, performance tests

From FreeBSDwiki
(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
{{stub}}
+
== Gmirror Disk Performance ==
  
 
[[image:gmirror-performance.png | Click for raw data and test equipment information]]
 
[[image:gmirror-performance.png | Click for raw data and test equipment information]]
  
[[image:graid-performance.png | Click for raw data and test equipment information]]
+
[[Gmirror]], unfortunately, is not doing very well at this time - at least not on the amd64 platform tested. A 2-drive gmirror performed grossly poorer than even a single baseline drive, with 3-drive and 5-drive gmirrors outperforming the baseline 250GB drive tested but being handily beaten by both the 500GB baseline drive and the Nvidia onboard RAID1 implementation - though it is interesting to note that the Nvidia onboard RAID1 implementation does not accelerate single-process copies, and suffers from a '''very''' significant variation in how it handles simultaneous processes - in the 5-process simultaneous copy, a full 38 seconds elapsed between the finish of the first process and the fifth.
  
Equipment:
+
== Graid3 Disk Performance ==
Athlon X2 5000+
+
    3x Western Digital 250GB drives (WDC WD2500JS-22NCB1 10.02E02 SATA-300)
+
    2x Western Digital 500GB drives (WDC WD5000AAKS-00YGA0 12.01C02)
+
    Nvidia nForce onboard RAID controller, Promise TX2300 RAID controller
+
  
Athlon 64 3500+
+
[[image:graid-performance.png | Click for raw data and test equipment information]]
    5x Seagate 750GB drives (Seagate ST3750640NS 3.AEE SATA-150)
+
    Nvidia nForce onboard RAID controller
+
 
+
Procedure:
+
/usr/bin/time -h measuring simultaneous cp of 3.1GB files to /dev/null
+
    files generated with dd if=/dev/random bs=16M count=200
+
    simultaneous cp processes use physically separate files
+
write performance tested with dd if/dev/zero bs=16M count=200
+
sysctl -w vfs.read_max=128 unless otherwise stated
+
  
Notes:
+
[[Graid3]] is doing noticeably better than [[Gmirror]]The 5-drive Graid3 implementation handily outperformed everything else tested, and while the 3-drive Graid3 implementation performed slightly slower than the Nvidia RAID1 in the 2-process and 3-process tests and significantly slower in the 4-process and 5-process tests, it's worth noting that it nearly doubled the Nvidia RAID1's single-process performance due to Nvidia's interesting failure to accelerate single-process copying at all.
system default of vfs.read_max=8
+
  bonnie++ was flirted with, but couldn't figure out how to make it read
+
  big enough chunks of data to ever '''once''' hit the disk instead of the cache!
+
  
Ancillary data:
+
== Equipment and Testing Methodology ==
'''write performance (1 process)'''
+
5 250GB/500GB, graid3              : 153 MB/s
+
5 250GB/500GB, graid3 -r            : 142 MB/s
+
1 500GB drive                      :  72 MB/s
+
1 WD Raptor 74GB drive (Cygwin)    :  60 MB/s
+
1 250GB drive                      :  58 MB/s
+
5 250GB/500GB, gmirror round-robin  :  49 MB/s
+
5 250GB/500GB, gmirror split 128k  :  49 MB/s
+
  
'''1 process'''
+
'''Equipment:'''
5 250GB/500GB, graid3              : 213 MB/s (dips down to 160MB/sec)
+
FreeBSD 6.2-RELEASE (amd64)
5 750GB disks, graid3              : 152 MB/s (wildly fluctuating 120MB/s-200MB/s)
+
Athlon X2 5000+
3 250GB disks, graid3              : 114 MB/s (dips down to 90MB/sec)
+
2GB DDR2 SDRAM
1 500GB disk                        :  76 MB/s
+
Nvidia nForce onboard RAID controller, Promise TX2300 RAID controller
1 750GB disk                        :  65 MB/s (60MB/s-70MB/s)
+
3x Western Digital 250GB drives (WDC WD2500JS-22NCB1 10.02E02 SATA-300)
5 250GB/500GB, gmirror round-robin  :  63 MB/s
+
2x Western Digital 500GB drives (WDC WD5000AAKS-00YGA0 12.01C02)
3 250GB disks, gmirror round-robin  :  59 MB/s
+
1 250GB disk                        :  56 MB/s (very little variation)
+
3 250GB disks, gmirror split 128K  :  55 MB/s
+
5 250GB/500GB, gmirror split 128K  :  54 MB/s
+
  
'''2 processes'''
+
'''Methodology:'''
5 250GB/500GB, graid3              : 128 MB/s (peak: 155+ MB/sec)
+
The read-ahead cache was changed from the default value of 8 to 128 for all tests performed, using '''sysctl -w vfs.read_max=128'''. Initial testing showed that dramatic performance increases occurred for ''all'' tested configurations, including baseline single-drive, with increases of vfs.read_max. The value of 128 was arrived at by continuing to double vfs.read_max until no further significant performance increase was to be seen (at vfs.read_max=256) and backing down to the last value tried.
5 750GB disks, graid3              : 125 MB/s (peak: 140+ MB/sec)
+
3 250GB disks, graid3              :  98 MB/s (peak: 130+ MB/sec)
+
3 250GB disks, graid3 -r            : 88 MB/s (peak: 120+ MB/sec)
+
2 250GB disks, nVidia onboard RAID1 :  81 MB/s (peak: 120+ MB/sec)
+
5 250GB/500GB, gmirror round-robin  :  73 MB/s
+
2 250GB disks, Promise TX2300 RAID1 : 70 MB/s (peak: 100+ MB/sec)
+
1 500GB disk                        :  70 MB/s
+
1 250GB disk                        :  56 MB/s (peak: 60+ MB/sec)
+
2 250GB disks, gmirror round-robin  :  55 MB/s (peak: 65+ MB/sec)
+
3 250GB disks, gmirror round-robin  :  53 MB/s
+
5 250GB/500GB, gmirror split 128K  :  50 MB/s
+
3 250GB disks, gmirror split 128K  :  46 MB/s
+
  
'''3 processes'''  
+
For the actual testing, 5 individual 3200MB files were created on each tested device or array using '''dd if=/dev/random bs=16m count=200''' as random1.bin - random5.bin. These files were then copied from the device or array to /dev/null. Elapsed times were generated by echoing a timestamp immediately before beginning all cp processes and immediately at the end of each individual process, and subtracting the beginning timestamp from the last completed timestamp. Speeds shown are simply the amount of data in MB copied to /dev/null (3200, 6400, 9600, 12800, or 16000) divided by the total elapsed time.
  5 250GB/500GB, graid3              : 106 MB/s (peak: 130+ MB/sec low: 90+ MB/sec)
+
  5 250GB/500GB, graid3 -r            : 103 MB/s (peak: 120+ MB/sec low: 80+ MB/sec)
+
  1 500GB disk                        :  72 MB/s
+
5 250GB/500GB, gmirror round-robin  :  69 MB/s
+
1 250GB disk                        :  55 MB/s
+
3 250GB disks, gmirror round-robin  :  53 MB/s
+
3 250GB disks, gmirror split 128K  :  49 MB/s
+
5 250GB/500GB, gmirror split 128K  :  47 MB/s
+
  
'''4 processes'''
+
'''Notes:'''
5 250GB/500GB, graid3              : 105 MB/s (peak: 130+ MB/sec low: 90+ MB/sec)
+
In the 5-drive Graid3 array tested, the (significantly faster) 500GB drives were positioned as the last two elements of the array. This is significant particularly because this means the parity drive was noticeably faster than 3 of the 4 data drives in this configuration; some other testing on equipment not listed here leads me to believe that this had a favorable impact when using the -r argument (use parity drive also on read operations) - though, significantly, not enough of an improvement to make the -r results worth including on the graph.
  5 250GB/500GB, graid3 -r           : 105 MB/s (peak: 120+ MB/sec low: 80+ MB/sec)
+
1 500GB disk                        :  72 MB/s
+
5 250GB/500GB, gmirror round-robin  :  71 MB/s (peak:  75+ MB/sec low: 64+ MB/sec)
+
3 250GB disks, gmirror round-robin  :  65 MB/s
+
1 250GB disk                        :  55 MB/s
+
3 250GB disks, gmirror split 128K  :  55 MB/s
+
5 250GB/500GB, gmirror split 128K  :  47 MB/s (peak:  59+ MB/sec low: 31+ MB/sec)
+
  
'''5 processes'''
+
Write performance was also tested on each of the devices and arrays listed and will be included in graphs at a later date (for now, raw data is available in the discussion page).
5 250GB/500GB, graid3 -r            : 107 MB/s (peak: 120+ MB/sec low: 80+ MB/sec)
+
5 250GB/500GB, graid3              : 105 MB/s (peak: 130+ MB/sec low: 90+ MB/sec)
+
5 250GB/500GB, gmirror round-robin  :  72 MB/s (peak:  80+ MB/sec low: 67+ MB/sec)
+
1 500GB disk                        :  72 MB/s
+
1 250GB disk                        :  56 MB/s
+
5 250GB/500GB, gmirror split 128K  :  47 MB/s (peak: 60+ MB/sec low: 35+ MB/sec)
+
3 250GB disks, gmirror round-robin  :  MB/s
+
3 250GB disks, gmirror split 128K  :  MB/s
+
  
'''vfs.read_max=8, 2 parallel cp processes'''
+
Googling "gmirror performance" and "gmirror slow" did not get me much of a return; just one other individual wondering why his gmirror was so abominably slow - so at some point I will endeavor to reformat the test system with 6.2-RELEASE (i386) and see if the gmirror results improve.  It strikes me as very odd that graid3 with only 3 drives (therefore only 2 data drives) outperforms even a ''five''-drive gmirror implementation.
3 250GB disks, gmirror round-robin : 31 MB/s
+
1 250GB disk                      : 27 MB/s
+
2 250GB disks, gmirror round-robin : 23 MB/s
+
  
Preliminary conclusions:
+
[[Category: Common Tasks]] [[Category: FreeBSD for Servers]] [[Category: FreeBSD for Workstations]] [[Category: Configuring FreeBSD]]
system default of vfs.read_max=8 is insufficient for ANY configuration, including vanilla single-drive
+
gmirror read performance sucks - Promise read performance sucks - nvidia read performance sucks for single-process
+
graid3 is the clear performance king here and offers very significant write performance increase as well
+
SATA-II seems to offer significant performance increases over SATA-I on large arrays
+

Revision as of 22:44, 26 December 2007

Gmirror Disk Performance

Click for raw data and test equipment information

Gmirror, unfortunately, is not doing very well at this time - at least not on the amd64 platform tested. A 2-drive gmirror performed grossly poorer than even a single baseline drive, with 3-drive and 5-drive gmirrors outperforming the baseline 250GB drive tested but being handily beaten by both the 500GB baseline drive and the Nvidia onboard RAID1 implementation - though it is interesting to note that the Nvidia onboard RAID1 implementation does not accelerate single-process copies, and suffers from a very significant variation in how it handles simultaneous processes - in the 5-process simultaneous copy, a full 38 seconds elapsed between the finish of the first process and the fifth.

Graid3 Disk Performance

Click for raw data and test equipment information

Graid3 is doing noticeably better than Gmirror. The 5-drive Graid3 implementation handily outperformed everything else tested, and while the 3-drive Graid3 implementation performed slightly slower than the Nvidia RAID1 in the 2-process and 3-process tests and significantly slower in the 4-process and 5-process tests, it's worth noting that it nearly doubled the Nvidia RAID1's single-process performance due to Nvidia's interesting failure to accelerate single-process copying at all.

Equipment and Testing Methodology

Equipment: FreeBSD 6.2-RELEASE (amd64) Athlon X2 5000+ 2GB DDR2 SDRAM Nvidia nForce onboard RAID controller, Promise TX2300 RAID controller 3x Western Digital 250GB drives (WDC WD2500JS-22NCB1 10.02E02 SATA-300) 2x Western Digital 500GB drives (WDC WD5000AAKS-00YGA0 12.01C02)

Methodology: The read-ahead cache was changed from the default value of 8 to 128 for all tests performed, using sysctl -w vfs.read_max=128. Initial testing showed that dramatic performance increases occurred for all tested configurations, including baseline single-drive, with increases of vfs.read_max. The value of 128 was arrived at by continuing to double vfs.read_max until no further significant performance increase was to be seen (at vfs.read_max=256) and backing down to the last value tried.

For the actual testing, 5 individual 3200MB files were created on each tested device or array using dd if=/dev/random bs=16m count=200 as random1.bin - random5.bin. These files were then copied from the device or array to /dev/null. Elapsed times were generated by echoing a timestamp immediately before beginning all cp processes and immediately at the end of each individual process, and subtracting the beginning timestamp from the last completed timestamp. Speeds shown are simply the amount of data in MB copied to /dev/null (3200, 6400, 9600, 12800, or 16000) divided by the total elapsed time.

Notes: In the 5-drive Graid3 array tested, the (significantly faster) 500GB drives were positioned as the last two elements of the array. This is significant particularly because this means the parity drive was noticeably faster than 3 of the 4 data drives in this configuration; some other testing on equipment not listed here leads me to believe that this had a favorable impact when using the -r argument (use parity drive also on read operations) - though, significantly, not enough of an improvement to make the -r results worth including on the graph.

Write performance was also tested on each of the devices and arrays listed and will be included in graphs at a later date (for now, raw data is available in the discussion page).

Googling "gmirror performance" and "gmirror slow" did not get me much of a return; just one other individual wondering why his gmirror was so abominably slow - so at some point I will endeavor to reformat the test system with 6.2-RELEASE (i386) and see if the gmirror results improve. It strikes me as very odd that graid3 with only 3 drives (therefore only 2 data drives) outperforms even a five-drive gmirror implementation.

Personal tools