Abysmal RAID1 write performance; ATA driver?

David Yucht davey at ecst.csuchico.edu
Tue Jun 17 00:03:48 PDT 2003


Finally getting around to asking for assistance with a bizarre problem
with mirrored raid performance on 4.6-4.8 RELEASE. I've been using this
particular system for about 18 months as a primary fileserver for my home
lan and have had a nagging problem with it for about a year. Basically,
one of the mirrored arrays on the box has a sustained write speed of about
1.2-1.8MB/s, making the box pretty much impossible to work with directly.
The array works fine in Windows, just not Free.

Right now there are 4 drives on two seperate RAID controllers (yes, the
cruddy wannabe kind), one array being the OS and the other for data. ar0
is the data array, consisting of two 80GB IBM 120GXPs hung off an old
Promise Fasttrak 100 flashed to the most recent bios. ar1 is the system
array, composed of two 40GB IBM 60GXPs on an integrated HPT370.

Read performance on the data array is perfectly fine. Doing a simple "dd
if=/dev/ar0 of=/dev/null bs=1024k" results in a transfer rate of about
45MB/s. This is as expected, given a result of 38MB/s for the system
array. However, once switching over to write data to the data array,
things crap out. Doing a "dd if=/dev/zero of=/dev/ar0 bs=1024k" takes
days, literally, as the speed is about 1.2-1.8 MB/s. On the system array,
things are normal, about 20-30MB/s for writes. Please note, though, that
when the disks are accessed independently on the data array, write
performance is 35MB/s, i.e. perfectly normal. Disk performance is also up
around 60MB/s for RAID0 arrays, so everything leads me to believe this is
not hardware.

I've been working on this problem on and off for the past year as time
permits. So far I've tried tuning just about every relevant kernel value,
destroying and recreating the array, digging around for patches and/or
hacks, and covered all bases with the actual hardware. Different kernel
configs have not helped, GENERIC results in problems as do home rolled
configs. I've searched far and wide accross forums, various newsgroups,
and spent more time with google than family. Still no clue and nobody else
with a similar problem.

Yes, I am considering replacing the controller, but will be unable to do
so for a few more months. That still doesn't satisfy my need for knowing
why this is happening, though.

~Regards


Here are the relevant dumps:

dmesg ----------------------

FreeBSD 4.8-STABLE #0: Tue May 27 22:34:34 PDT 2003
    root at invalid.domain.net:/usr/obj/usr/src/sys/LITE
Timecounter "i8254"  frequency 1193182 Hz
CPU: Intel(R) Celeron(TM) CPU                1100MHz (1115.37-MHz
686-class CPU)
  Origin = "GenuineIntel"  Id = 0x6b1  Stepping = 1
  Features=0x383f9ff< FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MC
A,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory  = 536805376 (524224K bytes)
avail memory = 518930432 (506768K bytes)
Preloaded elf kernel "kernel" at 0xc0354000.
Pentium Pro MTRR support enabled
md0: Malloc disk
Using $PIR table, 11 entries at 0xc00fd950
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
agp0: <Intel 82815 (i815 GMCH) host to PCI bridge> mem
0xd0000000-0xd3ffffff at device 0.0 on pci0
pcib1: <Intel 82801BA/BAM (ICH2) PCI-PCI (AGP) bridge> at device 1.0 on
pci0
pci1: <PCI bus> on pcib1
pci1: <3Dfx Voodoo 3 graphics accelerator> at 0.0 irq 5
pcib2: <Intel 82801BA/BAM (ICH2) Hub to PCI bridge> at device 30.0 on pci0
pci2: <PCI bus> on pcib2
atapci0: <Promise ATA100 controller> port
0xa000-0xa03f,0x9c00-0x9c03,0x9800-0x9807,0x9400-0x9403,0x9000-0x9007 mem
0xdb000000-0xdb01ffff irq 15 at device 1.0 on pci2
ata2: at 0x9000 on atapci0
ata3: at 0x9800 on atapci0
fxp0: <Intel 82557/8/9 EtherExpress Pro/100(B) Ethernet> port
0xa400-0xa43f mem 0xdb020000-0xdb03ffff,0xdb040000-0xdb040fff irq 14 at
device 3.0 on pci2
fxp0: Ethernet address 00:02:b3:c9:4e:70
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
atapci1: <HighPoint HPT370 ATA100 controller> port
0xb800-0xb8ff,0xb400-0xb403,0xb000-0xb007,0xac00-0xac03,0xa800-0xa807 irq
11 at device 6.0 on pci2
ata4: at 0xa800 on atapci1
ata5: at 0xb000 on atapci1
isab0: <Intel 82801BA/BAM (ICH2) PCI to LPC bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
uhci0: <Intel 82801BA/BAM (ICH2) USB controller USB-A> port 0xd000-0xd01f
irq 14 at device 31.2 on pci0
usb0: <Intel 82801BA/BAM (ICH2) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x8086, dev=0x2443) at 31.3 irq 0
uhci1: <Intel 82801BA/BAM (ICH2) USB controller USB-B> port 0xd400-0xd41f
irq 7 at device 31.4 on pci0
usb1: <Intel 82801BA/BAM (ICH2) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x8086, dev=0x2445) at 31.5 irq 15
orm0: <Option ROMs> at iomem
0xc0000-0xc7fff,0xc8000-0xcbfff,0xcc000-0xd47ff,0xd5000-0xd67ff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
ata0 at port 0x1f0-0x1f7,0x3f6 irq 14 on isa0
ata1 at port 0x170-0x177,0x376 irq 15 on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model IntelliMouse, device ID 3
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1: configured irq 3 not in bitmap of probed irqs 0
ppc0: parallel port not found.
ar0: 78533MB <ATA RAID1 array> [10011/255/63] status: READY subdisks:
 0 READY ad4: 78533MB <IC35L080AVVA07-0> [159560/16/63] at ata2-master
UDMA100
          1 READY ad6: 78533MB <IC35L080AVVA07-0> [159560/16/63] at
ata3-master UDMA100
         ar1: 39266MB <ATA RAID1 array> [5005/255/63] status: READY
subdisks:
 0 READY ad8: 39266MB <IC35L040AVER07-0> [79780/16/63] at ata4-master
tagged UDMA100
          1 READY ad10: 39266MB <IC35L040AVER07-0> [79780/16/63] at
ata5-master tagged UDMA100
         Mounting root from ufs:/dev/ar1s1a
ar0: 78533MB <ATA RAID1 array> [10011/255/63] status: READY subdisks:
 0 READY ad4: 78533MB <IC35L080AVVA07-0> [159560/16/63] at ata2-master
UDMA100
          1 READY ad6: 78533MB <IC35L080AVVA07-0> [159560/16/63] at
ata3-master UDMA100

/dmesg ----------------------

atacontrol list -------------

ATA channel 0:
    Master:      no device present
    Slave:       no device present
ATA channel 1:
    Master:      no device present
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <IC35L080AVVA07-0/VA4OA52A> ATA/ATAPI rev 5
    Slave:       no device present
ATA channel 3:
    Master:  ad6 <IC35L080AVVA07-0/VA4OA52A> ATA/ATAPI rev 5
    Slave:       no device present
ATA channel 4:
    Master:  ad8 <IC35L040AVER07-0/ER4OA46A> ATA/ATAPI rev 5
    Slave:       no device present
ATA channel 5:
    Master: ad10 <IC35L040AVER07-0/ER4OA44A> ATA/ATAPI rev 5
    Slave:       no device present

/atacontrol list --------------

sysctl -a | grep ata ----------

hw.ata.ata_dma: 1
hw.ata.wc: 1
hw.ata.tags: 1
hw.ata.atapi_dma: 0

/sysctl -a | grep ata ---------


Note - ATA channel 0 & 1 are both unused and disabled in the bios, as is
the parallel port and one of the serials. If anyone has a quick
explanation or link as to why Free still detects disabled hardware, I'd
also be appreciative.


David Yucht
davey at ecst.csuchico.edu



More information about the freebsd-hardware mailing list