Skip to contentSkip to conversation

throughput drop to 1/4

IDE SiI680 Vitezslav Samel 3 participants 8 messages Mar 24, 2003 – Apr 1, 2003

lore
Share & tools
lore
#0 lore raw
        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:

drivers/ide/pci/siimage.c 2003-03-23 21:36:37.000000000 +0100 renamed from drivers/ide/pci/siimage.c 2003-02-25 21:30:39.000000000 +0100 +4 -1
diff -urN -X dontdiff linux-2.5.65/drivers/ide/pci/siimage.c linux-2.5.65-sii/drivers/ide/pci/siimage.c
@@ -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]

#1 lore raw
Quoted 3 lines

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 ?

#2 lore raw
In reply to Vitezslav Samel

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!

Quoted 146 lines · Vitezslav Samel
        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

drivers/ide/pci/siimage.c 2003-03-23 21:36:37.000000000 +0100 renamed from drivers/ide/pci/siimage.c 2003-02-25 21:30:39.000000000 +0100 +4 -1
@@ -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
Quoted 13 lines

[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

#3 lore raw
Quoted 3 lines

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

#4 lore raw
Quoted 8 lines · Alan Cox
Quoted 3 lines

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

#5 lore raw
In reply to Andre Hedrick
Quoted 9 lines · Alan Cox
Quoted 3 lines

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.

Quoted 3 lines · Andre Hedrick

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

#6 lore raw
Quoted 5 lines · Vitezslav Samel
Quoted 4 lines · Alan Cox
Quoted 3 lines

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?

Quoted 8 lines
Quoted 5 lines

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

#7 lore raw
Quoted 9 lines · Vitezslav Samel
Quoted 8 lines · Vitezslav Samel
Quoted 7 lines · Alan Cox
Quoted 3 lines

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

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

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.

I put my eyes on /etc/rc.d/* and found hdparm doing some magic; then I tried
to fiddle with its params and came to this: the problem lied in fs readahead (hdparm -a xxx). Tried various numbers:

fs readahead throughput in 2.5.66 throughput in 2.4.21-pre6
-----------------------------------------------------------------
0 11.94 MB/sec 40.00 MB/sec

  8		12.01 MB/sec            38.79 MB/sec
 16		12.04 MB/sec            40.25 MB/sec
 24		15.22 MB/sec            39.51 MB/sec
 32		15.17 MB/sec            40.00 MB/sec
 40		15.20 MB/sec            39.02 MB/sec
 48		15.26 MB/sec            40.00 MB/sec
 56		17.60 MB/sec            40.25 MB/sec
 64		16.03 MB/sec            40.00 MB/sec
 64		15.95 MB/sec            40.25 MB/sec
 72		17.32 MB/sec            40.00 MB/sec
 80		18.34 MB/sec            40.25 MB/sec
 88		18.72 MB/sec            40.25 MB/sec
 96		16.04 MB/sec            39.26 MB/sec
104		16.68 MB/sec            40.25 MB/sec
112		18.25 MB/sec            39.02 MB/sec
120		18.42 MB/sec            40.00 MB/sec
128		19.17 MB/sec            39.26 MB/sec
136		26.67 MB/sec            40.00 MB/sec
144		39.31 MB/sec            39.51 MB/sec
152		39.58 MB/sec            39.75 MB/sec
160		39.68 MB/sec            40.25 MB/sec
168		39.98 MB/sec            40.25 MB/sec
176		39.85 MB/sec            40.51 MB/sec
184		40.18 MB/sec            40.00 MB/sec

So I disabled setting fs readahead (the default values are O.K.). Seems
like setting fs readahead doesn't make any change on 2.4 kernels.

Cheers,
Vita