ahd(4) poor performance

Justin T. Gibbs gibbs at scsiguy.com
Fri Jun 23 19:52:53 UTC 2006


Access the raw device to bypass the filesystem and VM subsystem.
Start N dds where N is the queue depth you've configured for
the device.

--
Justin

--On Friday, June 23, 2006 7:35 PM +0300 Volodymyr Kostyrko 
<arcade at synergetica.dn.ua> wrote:

> Justin T. Gibbs ?????:
>> dd is synchronous.  You'd need to aggregate the throughput of several dd
>> operations
>> to see the impact of overlapped commands.
>
>    Well, I'm testing system throughput also by:
>
> ab -n1000 -c20 "http://somehost/test.php"
>
>    Where test.php each time INSERT's a line into database. It works way
> faster on ATA and even faster on this machine under Linux.
>
>    Minding dd I've tried to do the following:
>
> <file name='test.sh'>
> dd if=/dev/zero of=somefile1 count=20480&
> dd if=/dev/zero of=somefile2 count=20480&
> dd if=/dev/zero of=somefile3 count=20480&
> dd if=/dev/zero of=somefile4 count=20480&
> dd if=/dev/zero of=somefile5 count=20480&
> dd if=/dev/zero of=somefile6 count=20480&
> dd if=/dev/zero of=somefile7 count=20480&
> dd if=/dev/zero of=somefile8 count=20480&
> wait
> </file>
>
>    And it gives me:
>
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.040705 secs (3448463 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.066335 secs (3419639 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.124907 secs (3355543 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.233639 secs (3242712 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.286119 secs (3190925 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.377989 secs (3104143 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.434316 secs (3053231 bytes/sec)
> 20480+0 records in
> 20480+0 records out
> 10485760 bytes transferred in 3.448736 secs (3040465 bytes/sec)
>
>    The values are quite precise for any queue depth starting from 2 and
> above.
>
>    Or how many threads should I start?
>
>>
>> --
>> Justin
>>
>> --On Friday, June 23, 2006 6:52 PM +0300 Volodymyr Kostyrko
>> <arcade at synergetica.dn.ua> wrote:
>>
>>> Justin T. Gibbs ?????:
>>>> --On Thursday, June 22, 2006 12:16 AM +0300 Volodymyr Kostyrko
>>>> <arcade at synergetica.dn.ua> wrote:
>>>>
>>>>> Hi all.
>>>>>
>>>>>    I have:
>>>>>
>>>>> ahd0: <Adaptec (Dell OEM) 39320 Ultra320 SCSI adapter> port
>>>>> 0xdc00-0xdcff,0xd800-0xd8ff mem 0xdfbfe000-0xdfbfffff irq 66 at device
>>>>> 7.0 on pci3
>>>>> ahd0: [GIANT-LOCKED]
>>>>> aic7902: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 101-133Mhz, 512
>>>>> SCBs ahd1: <Adaptec (Dell OEM) 39320 Ultra320 SCSI adapter> port
>>>>> 0xd400-0xd4ff,0xd000-0xd0ff mem 0xdfbfc000-0xdfbfdfff irq 67 at device
>>>>> 7.1 on pci3
>>>>> ahd1: [GIANT-LOCKED]
>>>>> aic7902: Ultra320 Wide Channel B, SCSI Id=7, PCI-X 101-133Mhz, 512
>>>>> SCBs
>>>>>
>>>>>    Booting machine also results in:
>>>>>
>>>>> ahd0: Invalid Sequencer interrupt occurred.
>>>>
>>>> This error is benign.
>>>>
>>>> There have been issues reported with some recent Seagate drives and
>>>> large queue depths.  You may get better performance if you use
>>>> camcontrol
>>>> to lower the queue depth to 63 or 32.  I believe that 32 is the default
>>>> used by Linux.
>>>>
>>>> --
>>>> Justin
>>>
>>>    Interesting.
>>>
>>>    By default I have the following:
>>>
>>> srv4# camcontrol tags 0:0 -v
>>> (pass1:ahd0:0:1:0): dev_openings  1
>>> (pass1:ahd0:0:1:0): dev_active    0
>>> (pass1:ahd0:0:1:0): devq_openings 1
>>> (pass1:ahd0:0:1:0): devq_queued   0
>>> (pass1:ahd0:0:1:0): held          0
>>> (pass1:ahd0:0:1:0): mintags       2
>>> (pass1:ahd0:0:1:0): maxtags       255
>>>
>>>    Raising this to higher values provides better perfomance:
>>>
>>> @1:
>>>
>>>  > dd if=/dev/zero of=somefile count=20480
>>> 20480+0 records in
>>> 20480+0 records out
>>> 10485760 bytes transferred in 1.114188 secs (9411123 bytes/sec)
>>>
>>> @2:
>>>
>>>  > dd if=/dev/zero of=somefile count=20480
>>> 20480+0 records in
>>> 20480+0 records out
>>> 10485760 bytes transferred in 0.402884 secs (26026747 bytes/sec)
>>>
>>>    Raising it further doesn't help anyway. And it still behaves not so
>>> fast as Linux.
>>>
>>> --
>>> [WBR], Arcade.
>>>
>>
>>
>
>
> --
> [WBR], Arcade.
>




More information about the freebsd-scsi mailing list