2003-03-24 07:18:15

by Vitezslav Samel

[permalink] [raw]
Subject: [IDE SiI680] throughput drop to 1/4

Hi!

Recently I tried to figure out in 2.5.65, why throughput on my disk which
hangs on Silicon Image 680 dropped to 1/4 compared to 2.4.21-pre5, but didn't
found anything useful. Are there any known issues with this driver?
Comparing those two drivers - they are exactly the same. Cabling is OK
(with 80w cable), the driver correctly detects this (checked with this simple
patch:

diff -urN -X dontdiff linux-2.5.65/drivers/ide/pci/siimage.c linux-2.5.65-sii/drivers/ide/pci/siimage.c
--- linux-2.5.65/drivers/ide/pci/siimage.c 2003-02-25 21:30:39.000000000 +0100
+++ linux-2.5.65-sii/drivers/ide/pci/siimage.c 2003-03-23 21:36:37.000000000 +0100
@@ -90,8 +90,11 @@
break;
default: return 0;
}
- if (!eighty_ninty_three(drive))
+ if (!eighty_ninty_three(drive)) {
mode = min(mode, (u8)1);
+ printk(KERN_DEBUG "SiI680: using 40w cable\n");
+ } else
+ printk(KERN_DEBUG "SiI680: using 80w cable\n");
return mode;
}

Throughput measured with hdparm-5.3:

2.4.21-pre5 2.5.65
----------- ------
Timing buffer-cache reads: 88.0 MB/sec 88.0 MB/sec
Timing buffered disk reads: 40.0 MB/sec 11.6 MB/sec

Machine: Intel Celeron-333
320 MiB RAM
1st disk: WDC AC24300L (on integrated piix IDE)
2nd disk: ST380021A (on SiI680: the only thing on this interface)



Thanks,
Vita


---- lspci: -------------------
00:10.0 RAID bus controller: CMD Technology Inc PCI0680 (rev 02)
Subsystem: CMD Technology Inc: Unknown device 3680
Flags: bus master, medium devsel, latency 64, IRQ 10
I/O ports at d400 [size=8]
I/O ports at d800 [size=4]
I/O ports at dc00 [size=8]
I/O ports at e000 [size=4]
I/O ports at e400 [size=16]
Memory at e8000000 (32-bit, non-prefetchable) [size=256]
Expansion ROM at e7000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 2
---- dmesg: 2.4.21-pre5 -------
[snipped]
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
SiI680: IDE controller at PCI slot 00:10.0
PCI: Found IRQ 10 for device 00:10.0
SiI680: chipset revision 2
SiI680: not 100% native mode: will probe irqs later
SiI680: BASE CLOCK == 133
ide2: MMIO-DMA at 0xd4800000-0xd4800007, BIOS settings: hde:pio, hdf:pio
ide3: MMIO-DMA at 0xd4800008-0xd480000f, BIOS settings: hdg:pio, hdh:pio
hda: WDC AC24300L, ATA DISK drive
hdc: TOSHIBA CD-ROM XM-6702B, ATAPI CD/DVD-ROM drive
hdd: IOMEGA ZIP 100 ATAPI Floppy, ATAPI FLOPPY drive
hde: ST380021A, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
ide2 at 0xd4800080-0xd4800087,0xd480008a on irq 10
hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
hda: host protected area => 1
hda: 8421840 sectors (4312 MB) w/256KiB Cache, CHS=524/255/63
hde: host protected area => 1
hde: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=155061/16/63
hdc: ATAPI 48X CD-ROM drive, 128kB Cache
Uniform CD-ROM driver Revision: 3.12
ide-floppy driver 0.99.newide
hdd: No disk in drive
hdd: 98304kB, 96/64/32 CHS, 4096 kBps, 512 sector size, 2941 rpm
Partition check:
hda: hda1 hda2 hda3 hda4
hde: hde1 hde2 hde3 hde4 < hde5 hde6 hde7 hde8 hde9 hde10 >
ide-floppy driver 0.99.newide
[snipped]
---- dmesg: 2.5.65 ------------
[snipped]
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
hda: WDC AC24300L, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hdc: TOSHIBA CD-ROM XM-6702B, ATAPI CD/DVD-ROM drive
hdd: IOMEGA ZIP 100 ATAPI Floppy, ATAPI FLOPPY drive
ide1 at 0x170-0x177,0x376 on irq 15
SiI680: IDE controller at PCI slot 00:10.0
PCI: Found IRQ 10 for device 00:10.0
SiI680: chipset revision 2
SiI680: not 100% native mode: will probe irqs later
SiI680: BASE CLOCK == 133
ide2: MMIO-DMA at 0xd4800000-0xd4800007, BIOS settings: hde:pio, hdf:pio
ide3: MMIO-DMA at 0xd4800008-0xd480000f, BIOS settings: hdg:pio, hdh:pio
hde: ST380021A, ATA DISK drive
ide2 at 0xd4800080-0xd4800087,0xd480008a on irq 10
hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
hda: host protected area => 1
hda: 8421840 sectors (4312 MB) w/256KiB Cache, CHS=8912/15/63, UDMA(33)
hda: hda1 hda2 hda3 hda4
hde: host protected area => 1
hde: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=155061/16/63, UDMA(100)
hde: hde1 hde2 hde3 hde4 < hde5 hde6 hde7 hde8 hde9 hde10 >
end_request: I/O error, dev hdc, sector 0
hdc: ATAPI 48X CD-ROM drive, 128kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.12
end_request: I/O error, dev hdc, sector 0
ide-floppy driver 0.99.newide
hdd: No disk in drive
hdd: 98304kB, 96/64/32 CHS, 4096 kBps, 512 sector size, 2941 rpm
[snipped]
---- hdparm /dev/hde: ---------------------
/dev/hde:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 16 (on)
geometry = 23989/16/63, sectors = 156301488, start = 0
---- hdparm -I /dev/hde: -------------------
ATA device, with non-removable media
Model Number: ST380021A
Serial Number: 3HV1CHVZ
Firmware Revision: 3.75
[snipped]
Capabilities:
LBA, IORDY(can be disabled)
bytes avail on r/w long: 4 Queue depth: 1
Standby timer values: spec'd by Standard
R/W multiple sector transfer: Max = 16 Current = 16
Recommended acoustic management value: 128, current value: 128
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4 udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
[snipped]


2003-03-24 12:02:22

by Alan Cox

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4

> Recently I tried to figure out in 2.5.65, why throughput on my disk which
> hangs on Silicon Image 680 dropped to 1/4 compared to 2.4.21-pre5, but didn't
> found anything useful. Are there any known issues with this driver?

The same code in both cases. Its quite likely the problem is higher up in
the block or filesystem layer. It might also be a general IDE layer bug

What does performance look like on your other disk between
2.4.21pre/2.5.65 ?

2003-03-24 17:36:13

by Andre Hedrick

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4



There should be a mode or a flag option in the siimage.h to disable MMIO
by default. I am courious if this is a BARRIER on the read/write screwing
the pooch!


On Mon, 24 Mar 2003, Vitezslav Samel wrote:

> Hi!
>
> Recently I tried to figure out in 2.5.65, why throughput on my disk which
> hangs on Silicon Image 680 dropped to 1/4 compared to 2.4.21-pre5, but didn't
> found anything useful. Are there any known issues with this driver?
> Comparing those two drivers - they are exactly the same. Cabling is OK
> (with 80w cable), the driver correctly detects this (checked with this simple
> patch:
>
> diff -urN -X dontdiff linux-2.5.65/drivers/ide/pci/siimage.c linux-2.5.65-sii/drivers/ide/pci/siimage.c
> --- linux-2.5.65/drivers/ide/pci/siimage.c 2003-02-25 21:30:39.000000000 +0100
> +++ linux-2.5.65-sii/drivers/ide/pci/siimage.c 2003-03-23 21:36:37.000000000 +0100
> @@ -90,8 +90,11 @@
> break;
> default: return 0;
> }
> - if (!eighty_ninty_three(drive))
> + if (!eighty_ninty_three(drive)) {
> mode = min(mode, (u8)1);
> + printk(KERN_DEBUG "SiI680: using 40w cable\n");
> + } else
> + printk(KERN_DEBUG "SiI680: using 80w cable\n");
> return mode;
> }
>
> Throughput measured with hdparm-5.3:
>
> 2.4.21-pre5 2.5.65
> ----------- ------
> Timing buffer-cache reads: 88.0 MB/sec 88.0 MB/sec
> Timing buffered disk reads: 40.0 MB/sec 11.6 MB/sec
>
> Machine: Intel Celeron-333
> 320 MiB RAM
> 1st disk: WDC AC24300L (on integrated piix IDE)
> 2nd disk: ST380021A (on SiI680: the only thing on this interface)
>
>
>
> Thanks,
> Vita
>
>
> ---- lspci: -------------------
> 00:10.0 RAID bus controller: CMD Technology Inc PCI0680 (rev 02)
> Subsystem: CMD Technology Inc: Unknown device 3680
> Flags: bus master, medium devsel, latency 64, IRQ 10
> I/O ports at d400 [size=8]
> I/O ports at d800 [size=4]
> I/O ports at dc00 [size=8]
> I/O ports at e000 [size=4]
> I/O ports at e400 [size=16]
> Memory at e8000000 (32-bit, non-prefetchable) [size=256]
> Expansion ROM at e7000000 [disabled] [size=512K]
> Capabilities: [60] Power Management version 2
> ---- dmesg: 2.4.21-pre5 -------
> [snipped]
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> PIIX4: IDE controller at PCI slot 00:07.1
> PIIX4: chipset revision 1
> PIIX4: not 100% native mode: will probe irqs later
> ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
> ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
> SiI680: IDE controller at PCI slot 00:10.0
> PCI: Found IRQ 10 for device 00:10.0
> SiI680: chipset revision 2
> SiI680: not 100% native mode: will probe irqs later
> SiI680: BASE CLOCK == 133
> ide2: MMIO-DMA at 0xd4800000-0xd4800007, BIOS settings: hde:pio, hdf:pio
> ide3: MMIO-DMA at 0xd4800008-0xd480000f, BIOS settings: hdg:pio, hdh:pio
> hda: WDC AC24300L, ATA DISK drive
> hdc: TOSHIBA CD-ROM XM-6702B, ATAPI CD/DVD-ROM drive
> hdd: IOMEGA ZIP 100 ATAPI Floppy, ATAPI FLOPPY drive
> hde: ST380021A, ATA DISK drive
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> ide1 at 0x170-0x177,0x376 on irq 15
> ide2 at 0xd4800080-0xd4800087,0xd480008a on irq 10
> hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
> hda: task_no_data_intr: error=0x04 { DriveStatusError }
> hda: host protected area => 1
> hda: 8421840 sectors (4312 MB) w/256KiB Cache, CHS=524/255/63
> hde: host protected area => 1
> hde: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=155061/16/63
> hdc: ATAPI 48X CD-ROM drive, 128kB Cache
> Uniform CD-ROM driver Revision: 3.12
> ide-floppy driver 0.99.newide
> hdd: No disk in drive
> hdd: 98304kB, 96/64/32 CHS, 4096 kBps, 512 sector size, 2941 rpm
> Partition check:
> hda: hda1 hda2 hda3 hda4
> hde: hde1 hde2 hde3 hde4 < hde5 hde6 hde7 hde8 hde9 hde10 >
> ide-floppy driver 0.99.newide
> [snipped]
> ---- dmesg: 2.5.65 ------------
> [snipped]
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> PIIX4: IDE controller at PCI slot 00:07.1
> PIIX4: chipset revision 1
> PIIX4: not 100% native mode: will probe irqs later
> ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
> ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
> hda: WDC AC24300L, ATA DISK drive
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> hdc: TOSHIBA CD-ROM XM-6702B, ATAPI CD/DVD-ROM drive
> hdd: IOMEGA ZIP 100 ATAPI Floppy, ATAPI FLOPPY drive
> ide1 at 0x170-0x177,0x376 on irq 15
> SiI680: IDE controller at PCI slot 00:10.0
> PCI: Found IRQ 10 for device 00:10.0
> SiI680: chipset revision 2
> SiI680: not 100% native mode: will probe irqs later
> SiI680: BASE CLOCK == 133
> ide2: MMIO-DMA at 0xd4800000-0xd4800007, BIOS settings: hde:pio, hdf:pio
> ide3: MMIO-DMA at 0xd4800008-0xd480000f, BIOS settings: hdg:pio, hdh:pio
> hde: ST380021A, ATA DISK drive
> ide2 at 0xd4800080-0xd4800087,0xd480008a on irq 10
> hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
> hda: task_no_data_intr: error=0x04 { DriveStatusError }
> hda: host protected area => 1
> hda: 8421840 sectors (4312 MB) w/256KiB Cache, CHS=8912/15/63, UDMA(33)
> hda: hda1 hda2 hda3 hda4
> hde: host protected area => 1
> hde: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=155061/16/63, UDMA(100)
> hde: hde1 hde2 hde3 hde4 < hde5 hde6 hde7 hde8 hde9 hde10 >
> end_request: I/O error, dev hdc, sector 0
> hdc: ATAPI 48X CD-ROM drive, 128kB Cache, UDMA(33)
> Uniform CD-ROM driver Revision: 3.12
> end_request: I/O error, dev hdc, sector 0
> ide-floppy driver 0.99.newide
> hdd: No disk in drive
> hdd: 98304kB, 96/64/32 CHS, 4096 kBps, 512 sector size, 2941 rpm
> [snipped]
> ---- hdparm /dev/hde: ---------------------
> /dev/hde:
> multcount = 16 (on)
> IO_support = 1 (32-bit)
> unmaskirq = 1 (on)
> using_dma = 1 (on)
> keepsettings = 0 (off)
> readonly = 0 (off)
> readahead = 16 (on)
> geometry = 23989/16/63, sectors = 156301488, start = 0
> ---- hdparm -I /dev/hde: -------------------
> ATA device, with non-removable media
> Model Number: ST380021A
> Serial Number: 3HV1CHVZ
> Firmware Revision: 3.75
> [snipped]
> Capabilities:
> LBA, IORDY(can be disabled)
> bytes avail on r/w long: 4 Queue depth: 1
> Standby timer values: spec'd by Standard
> R/W multiple sector transfer: Max = 16 Current = 16
> Recommended acoustic management value: 128, current value: 128
> DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4 udma5
> Cycle time: min=120ns recommended=120ns
> PIO: pio0 pio1 pio2 pio3 pio4
> Cycle time: no flow control=240ns IORDY flow control=120ns
> [snipped]
>

Andre Hedrick
LAD Storage Consulting Group

2003-03-24 17:43:54

by Alan Cox

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4

> There should be a mode or a flag option in the siimage.h to disable MMIO
> by default. I am courious if this is a BARRIER on the read/write screwing
> the pooch!

It cannot be involved. If you read the code you'll see the SII driver doesnt
yet override outbsync so it can't be involved. We aren't doing any posting
prevention yet

2003-03-25 03:58:45

by Andre Hedrick

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4

On Mon, 24 Mar 2003, Alan Cox wrote:

> > There should be a mode or a flag option in the siimage.h to disable MMIO
> > by default. I am courious if this is a BARRIER on the read/write screwing
> > the pooch!
>
> It cannot be involved. If you read the code you'll see the SII driver doesnt
> yet override outbsync so it can't be involved. We aren't doing any posting
> prevention yet
>

Alan,

Humor me and isolate my silly concerns okay.
Prove me wrong and I will be happy.

It should be a single #undef in siimage.h

Cheers,

Andre Hedrick
LAD Storage Consulting Group

2003-03-25 06:54:58

by Vitezslav Samel

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4

On Mon, Mar 24, 2003 at 07:13:06AM -0500, Alan Cox wrote:
> > Recently I tried to figure out in 2.5.65, why throughput on my disk which
> > hangs on Silicon Image 680 dropped to 1/4 compared to 2.4.21-pre5, but didn't
> > found anything useful. Are there any known issues with this driver?
>
> The same code in both cases. Its quite likely the problem is higher up in
> the block or filesystem layer. It might also be a general IDE layer bug
>
> What does performance look like on your other disk between
> 2.4.21pre/2.5.65 ?

Will test it as I come back home (it's on my home machine). But I think this
performance drop is only on the SiI680 interface.

On Mon, Mar 24, 2003 at 09:44:38AM -0800, Andre Hedrick wrote:
> There should be a mode or a flag option in the siimage.h to disable MMIO
> by default. I am courious if this is a BARRIER on the read/write screwing
> the pooch!

Back in late 2.5.4x (or was it early 2.5.5x ?) I tried
#undef CONFIG_TRY_MMIO_SIIMAGE but nothing has changed (now there's no such
symbol defined in siimage.c - gone in 2.5.63).

Cheers,
Vita

2003-03-26 06:45:42

by Vitezslav Samel

[permalink] [raw]
Subject: Re: [IDE SiI680] throughput drop to 1/4

On Tue, Mar 25, 2003 at 08:06:05AM +0100, Vitezslav Samel wrote:
> On Mon, Mar 24, 2003 at 07:13:06AM -0500, Alan Cox wrote:
> > > Recently I tried to figure out in 2.5.65, why throughput on my disk which
> > > hangs on Silicon Image 680 dropped to 1/4 compared to 2.4.21-pre5, but didn't
> > > found anything useful. Are there any known issues with this driver?
> >
> > The same code in both cases. Its quite likely the problem is higher up in
> > the block or filesystem layer. It might also be a general IDE layer bug
> >
> > What does performance look like on your other disk between
> > 2.4.21pre/2.5.65 ?
>
> Will test it as I come back home (it's on my home machine). But I think this
> performance drop is only on the SiI680 interface.

Tested today: on the other disk on integrated interface (piix) is throughput
exactly the same on both kernels.

Cheers,
Vita