Promise PDC20267 ATA RAID, poor write performance

Søren Schmidt sos at DeepCore.dk
Sat Sep 11 03:50:24 PDT 2004


Frode Nordahl wrote:
> Hello,
> 
> I have a intel S845WD1-E board with onboard Promise PDC20267 controller.
> The system is set up with a P4 2Ghz with 1GB RAM.
> The board also has a Intel ICH2, but that's only used by a CDROM.
> 
> Disks connected:
> ad4: 39205MB <Maxtor 6E040L0/NAR61590> [79656/16/63] at ata2-master UDMA100
> ad6: 39205MB <Maxtor 6E040L0/NAR61590> [79656/16/63] at ata3-master UDMA100
> 
> I have them set up in a RAID1
> 
> I have tried this on FreeBSD 4.10-RELEASE, and 6-CURRENT (from today) 
> with similar results.
> 
> I also tried with RAID0, and that showed the same results*2, that is, 
> ca. 7MB/s write instead of 3.5MB/s.
> 
> I have no previous experience with this hardware on other OS'es, so I'm 
> not sure what to expect, but I'm pretty sure it should be better than 
> this :)
> 
> dmesg included below.
> 
> Doing simple tests show very poor write performance:
> (reboot)
> # dd if=/dev/zero of=fill bs=1m count=2000
> 2000+0 records in
> 2000+0 records out
> 2097152000 bytes transferred in 588.383886 secs (3564258 bytes/sec)
> 
> (reboot)
> # dd if=fill of=/dev/null bs=1m
> 2000+0 records in
> 2000+0 records out
> 2097152000 bytes transferred in 68.492015 secs (30618927 bytes/sec)

OK I got this this setup now:

atapci0: <Promise PDC20267 UDMA100 controller> port 
0xb000-0xb03f,0xb400-0xb403,0xb800-0xb807,0xd000-0xd003,0xd400-0xd407 
mem 0xfd000000-0xfd01ffff irq 16 at device 3.0 on pci0
ad1: 14305MB <Maxtor 2R015H1/EAH41MF0> [29065/16/63] at ata2-master UDMA100
ad2: 14305MB <Maxtor 2R015H1/EAH41MF0> [29065/16/63] at ata3-master UDMA100
ar0: 14305MB <ATA RAID1 array> [1823/255/63] status: READY subdisks:

Controller the same, disks are an earlier verision of those "low 
profile" Maxtor disks, just somewhat slover than yours.

pizzabox# dd if=/dev/zero of=fill bs=1m count=2000
2000+0 records in
2000+0 records out
2097152000 bytes transferred in 122.908771 secs (17062672 bytes/sec)


pizzabox# dd if=fill of=/dev/null bs=1m
2000+0 records in
2000+0 records out
2097152000 bytes transferred in 78.299524 secs (26783713 bytes/sec)

Thats pretty much what I'd expect from this HW, so I risk saying that 
ATA is working just as it should here.

The only thing I could think of was if you have WC (write cache) turned 
off for some reason which yields this result here:

pizzabox# dd if=/dev/zero of=fill bs=1m count=2000
2000+0 records in
2000+0 records out
2097152000 bytes transferred in 428.874993 secs (4889891 bytes/sec)

That looks more like your results, but they are also within what I would 
expect when not using WC..


-Søren



More information about the freebsd-current mailing list