performance with LSI SAS 1064

Eric Anderson anderson at freebsd.org
Thu Aug 30 06:40:44 PDT 2007


Scott Long wrote:
> Eric Anderson wrote:
>> Lutieri G. wrote:
>>> I've make a test with dd command:
>>>
>>> # time dd if=/dev/zero of=./8gbfile bs=1024k count=8192
>>> 8192+0 records in
>>> 8192+0 records out
>>> 8589934592 bytes transferred in 155.653213 secs (55186362 bytes/sec)
>>> 0.007u 25.129s 2:35.69 16.1%    55+6039k 117+68628io 0pf+0w
>>>
>>> in other terminal i ran iostat while dd were running and I get this:
>>>
>>> # iostat -I 1
>>>       tty             da0            pass0             cpu
>>>  tin tout  KB/t xfrs   MB   KB/t xfrs   MB  us ni sy in id
>>>    1   61 25.23 52958 1305.07   0.00   0  0.00   0  0  8  0 91
>>>    0  184 127.48 434 54.03   0.00   0  0.00   0  0  5  0 95
>>>    0   61 127.49 440 54.78   0.00   0  0.00   0  0  5  0 95
>>>    0   61 127.75 445 55.52   0.00   0  0.00   0  0  5  0 95
>>>    0   61 127.49 442 55.03   0.00   0  0.00   0  0  4  0 96
>>>    0   61 127.49 436 54.28   0.00   0  0.00   0  0  5  0 95
>>>    0   61 125.27 425 51.99   0.00   0  0.00   0  0  5  1 94
>>>    0   61 118.14 393 45.34   0.00   0  0.00   0  0  3  0 97
>>>
>>> average  54MB/s with or without hw.mpt.enable_sata_wc seted in 
>>> loader.conf file.
>>>
>>> is it a normal speed for this adapter?!
>>>
>>>
>>
>>
>> I'm confused - you said in your first post you were getting 3MB/s, 
>> where  above you show something like 55MB/s.
>>
>> You didn't say what kind of disks, or how many, the configuration, etc 
>> - so it's hard to answer much.  The 55MB/s seems pretty decent for 
>> many hard drives in a sequential use state (which is what dd tests 
>> really).
>>
>> Your errors before were probably caused because your queue depth is 
>> set to 255 (or 256?) and the adapter can't do that many.  You should 
>> use camcontrol to reduce it, to maybe 32.  See the camcontrol man page 
>> for the right usage.  It's something that needs setting on every boot, 
>> so a startup file is a good place for it maybe.
>>
>> Eric
>>
>>
> 
> Well, if he's using SATA (which I kinda assumed originally without
> asking) then queue depth isn't going to matter; the MPT driver has no
> interaction with how SATA NCQ operates, if he even has a rev of the
> LSI chip that supports NCQ at all.  If he's using SAS, then queue
> depth will only be a minor factor, CAM is pretty good at autosizing
> the depth with minimal impact.  Now, if he's using SAS disks then
> the boot tunable that I gave him will indeed have no impact at all.
> 
> I believe that the Sun 4100 uses 2.5" disks, whether SATA or SAS.
> 54MB/s is not all that bad for disks of this size.  It's pretty close
> to what I would expect, actually.

If he's using a SAS Seagate 15k rpm 2.5" drive, he could see much better 
than 55MB/s.  I have an LSI (PCI-X 133, model 1064 as he does) with some 
Seagate 15k RPM drives, and I can get 100MB/s.  Tests were done on 
FreeBSD 7-CURRENT, with write caching enabled on the drive. Here's some 
of the numbers:

    1k block read size:    6390033 bytes/sec
    2k block read size:   12257594 bytes/sec
    4k block read size:   23071775 bytes/sec
    8k block read size:   41858586 bytes/sec
   16k block read size:   71242623 bytes/sec
   32k block read size:  108019212 bytes/sec
   64k block read size:  108043811 bytes/sec
  128k block read size:  108881295 bytes/sec
  256k block read size:  108509827 bytes/sec
  512k block read size:  108670186 bytes/sec
1024k block read size:  108553724 bytes/sec
    1k block write size:   6199645 bytes/sec
    2k block write size:  12169083 bytes/sec
    4k block write size:  23246388 bytes/sec
    8k block write size:  42133751 bytes/sec
   16k block write size:  70968273 bytes/sec
   32k block write size: 108306742 bytes/sec
   64k block write size: 108142985 bytes/sec
  128k block write size: 109156720 bytes/sec
  256k block write size: 109164252 bytes/sec
  512k block write size: 109795665 bytes/sec
1024k block write size: 109202660 bytes/sec


Doing latency tests on /dev/da0
/dev/da0
	512         	# sectorsize
	73407820800 	# mediasize in bytes (68G)
	143374650   	# mediasize in sectors
	8924        	# Cylinders according to firmware.
	255         	# Heads according to firmware.
	63          	# Sectors according to firmware.

Seek times:
	Full stroke:	  250 iter in   1.943102 sec =    7.772 msec
	Half stroke:	  250 iter in   1.567395 sec =    6.270 msec
	Quarter stroke:	  500 iter in   1.671074 sec =    3.342 msec
	Short forward:	  400 iter in   1.159763 sec =    2.899 msec
	Short backward:	  400 iter in   1.014000 sec =    2.535 msec
	Seq outer:	 2048 iter in   0.322013 sec =    0.157 msec
	Seq inner:	 2048 iter in   0.493810 sec =    0.241 msec
Transfer rates:
	outside:       102400 kbytes in   0.968299 sec =   105752 kbytes/sec
	middle:        102400 kbytes in   1.088158 sec =    94104 kbytes/sec
	inside:        102400 kbytes in   1.361127 sec =    75232 kbytes/sec

Doing read tests on /dev/da0
READ: 1k block size:
102400+0 records in
102400+0 records out
104857600 bytes transferred in 16.409555 secs (6390033 bytes/sec)
READ: 2k block size:
51200+0 records in
51200+0 records out
104857600 bytes transferred in 8.554501 secs (12257594 bytes/sec)
READ: 4k block size:
25600+0 records in
25600+0 records out
104857600 bytes transferred in 4.544843 secs (23071775 bytes/sec)
READ: 8k block size:
12800+0 records in
12800+0 records out
104857600 bytes transferred in 2.505044 secs (41858586 bytes/sec)
READ: 16k block size:
6400+0 records in
6400+0 records out
104857600 bytes transferred in 1.471838 secs (71242623 bytes/sec)
READ: 32k block size:
3200+0 records in
3200+0 records out
104857600 bytes transferred in 0.970731 secs (108019212 bytes/sec)
READ: 64k block size:
1600+0 records in
1600+0 records out
104857600 bytes transferred in 0.970510 secs (108043811 bytes/sec)
READ: 128k block size:
800+0 records in
800+0 records out
104857600 bytes transferred in 0.963045 secs (108881295 bytes/sec)
READ: 256k block size:
400+0 records in
400+0 records out
104857600 bytes transferred in 0.966342 secs (108509827 bytes/sec)
READ: 512k block size:
200+0 records in
200+0 records out
104857600 bytes transferred in 0.964916 secs (108670186 bytes/sec)
READ: 1024k block size:
100+0 records in
100+0 records out
104857600 bytes transferred in 0.965951 secs (108553724 bytes/sec)
Doing write tests on /dev/da0
WRITE: 1k block size:
102400+0 records in
102400+0 records out
104857600 bytes transferred in 16.913484 secs (6199645 bytes/sec)
WRITE: 2k block size:
51200+0 records in
51200+0 records out
104857600 bytes transferred in 8.616722 secs (12169083 bytes/sec)
WRITE: 4k block size:
25600+0 records in
25600+0 records out
104857600 bytes transferred in 4.510705 secs (23246388 bytes/sec)
WRITE: 8k block size:
12800+0 records in
12800+0 records out
104857600 bytes transferred in 2.488684 secs (42133751 bytes/sec)
WRITE: 16k block size:
6400+0 records in
6400+0 records out
104857600 bytes transferred in 1.477528 secs (70968273 bytes/sec)
WRITE: 32k block size:
3200+0 records in
3200+0 records out
104857600 bytes transferred in 0.968154 secs (108306742 bytes/sec)
WRITE: 64k block size:
1600+0 records in
1600+0 records out
104857600 bytes transferred in 0.969620 secs (108142985 bytes/sec)
WRITE: 128k block size:
800+0 records in
800+0 records out
104857600 bytes transferred in 0.960615 secs (109156720 bytes/sec)
WRITE: 256k block size:
400+0 records in
400+0 records out
104857600 bytes transferred in 0.960549 secs (109164252 bytes/sec)
WRITE: 512k block size:
200+0 records in
200+0 records out
104857600 bytes transferred in 0.955025 secs (109795665 bytes/sec)
WRITE: 1024k block size:
100+0 records in
100+0 records out
104857600 bytes transferred in 0.960211 secs (109202660 bytes/sec)
Tests complete.


Eric



More information about the freebsd-scsi mailing list