Subject: Re: High Load / bad response times
To: None <netbsd-users@netbsd.org>
From: Jochen Keil <J.Keil@gmx.de>
List: netbsd-users
Date: 01/08/2005 16:30:04
Manuel Bouyer wrote:
>>I've attached the output from sysstat vmstat while running vinum (i have 
>>to admit that i don't get everything of what it's telling me). It's also 
>>just a snapshot because the interrupt range is dithering from below 3000 
>>up to 21000).
> 
> 
>>From which source ? With IDE disks, you should only get one interrupt per
> disk transfer. in systat it's easy to check that the sum of the transfers
> match the number of interrupts for the line.
The interrupt behaviour seems to be all the same on disk io wether 
raidframe, a single ide disk or a single scsi disk.
At the moment i don't know how to check if the interrupts match a disk 
transfer. I'm really sorry for that.

>>From the output you posted it looks like you have a lot of TLB shootdown IPIs.
> This is a MP issue, but I don't know the real cause (maybe too much RAM
> touched at the same time ?)
How can i check if there is too much RAM touched at the same time?
My knowledge doesn't cover that..

Meanwhile i have found some options in the Kernel Configuration which i 
enabled but they didn't get me any improvement.
options         PCIBIOS                 # PCI BIOS support
options         PCIBIOSVERBOSE          # PCI BIOS verbose info
options         PCIBIOS_ADDR_FIXUP      # fixup PCI I/O addresses
options         PCIBIOS_BUS_FIXUP       # fixup PCI bus numbering
options         PCIBIOS_INTR_FIXUP      # fixup PCI interrupt routing
options         PCIBIOS_IRQS_HINT=0x0a00 # PCI interrupts hint. IRQ 9 or 11
options         PCIBIOS_INTR_GUESS      # see pcibios(4)
options         PCIINTR_DEBUG           # super-verbose PCI interrupt fixup

Enabling them will show up these lines on startup:

BIOS32 rev. 0 found at 0xfdb90
PCI BIOS rev. 2.1 found at 0xfdbb1
pcibios: config mechanism [1][x], special cycles [x][x], last bus 1
PCI IRQ Routing Table rev. 1.0 found at 0xf5230, size 176 bytes (9 entries)
PCI Interrupt Router at 000:15:0 (vendor 0x1166 product 0x0225 compatible)
[A lot of stuff about PIR Entry 0-8 comes here which boils down to this 
for every entry:
         Bus: 0  Device: 15 (there also Devices 1-4 and 6)
                 INTA: link 0x01 bitmap 0x0400
                 INTB: link 0x00 bitmap 0x8000
                 INTC: link 0x00 bitmap 0x0000
                 INTD: link 0x00 bitmap 0x0000]
pci_intr_fixup: no compatible PCI ICU found: ICU vendor 0x1166 product 
0x0225
pciintr_guess_irq (stage 1): guessing PIRQ 0x01 to be IRQ 10
------------------------------------------
   device vendor product pin PIRQ IRQ stage
------------------------------------------
000:01:0 0x105a 0x4d68   A  0x10   -  0
000:02:0 0x105a 0x4d68   A  0x12   -  0
000:06:0 0x8086 0x1229   A  0x1f   -  0
000:15:2 0x1166 0x0220   A  0x01  10  1    fixed up
001:01:0 0x8086 0x1026   A  0x18   -  0
001:03:0 0x9005 0x008f   A  0x1c   -  0
------------------------------------------
PCI fixup examining 1166:09
PCI fixup examining 1166:09
PCI fixup examining 105a:4d68
PCI fixup examining 105a:4d68
PCI fixup examining 1002:4354
PCI fixup examining 8086:1229
PCI fixup examining 1166:200
PCI fixup examining 1166:211
PCI fixup examining 1166:220
PCI bus #0 is the last bus
[System BIOS Setting]-----------------------
   device vendor product
   register space address    size
--------------------------------------------
000:00:0 0x1166 0x0009
                 [OK]
000:00:1 0x1166 0x0009
                 [OK]
000:01:0 0x105a 0x4d68
         10h port 0x0000a800 0x00000008
         14h port 0x0000a400 0x00000004
         18h port 0x0000a000 0x00000008
         1ch port 0x00009800 0x00000004
         20h port 0x00009400 0x00000010
         24h mem  0xfe9e0000 0x00004000
                 [OK]
000:02:0 0x105a 0x4d68
         10h port 0x0000c800 0x00000008
         14h port 0x0000c400 0x00000004
         18h port 0x0000c000 0x00000008
         1ch port 0x0000b800 0x00000004
         20h port 0x0000b400 0x00000010
         24h mem  0xfe9ec000 0x00004000
                 [OK]
000:04:0 0x1002 0x4354
         10h mem  0xfd000000 0x01000000
                 [OK]
000:06:0 0x8086 0x1229
         10h mem  0xfe9e6000 0x00001000
         14h port 0x0000b000 0x00000040
         18h mem  0xfe800000 0x00100000
                 [OK]
000:15:0 0x1166 0x0200
                 [OK]
000:15:1 0x1166 0x0211
         20h port 0x0000ffa0 0x00000010
                 [OK]
000:15:2 0x1166 0x0220
         10h mem  0xfffff000 0x00001000
                 [OK]
--------------------------[  0 devices bogus]
WARNING: can't reserve area for BIOS PROM.
  Physical memory end: 0x1fffc000
  PCI memory mapped I/O space start: 0x20000000

All this tells me that there is a problem with the PCI interrupt routing 
(options         PCIBIOS_INTR_FIXUP      # fixup PCI interrupt routing) 
as a chip is identified but cannot be addressed.
I can be completely wrong with that too of course. Maybe somebody else 
can tell me what this output means an what there can be done about it.

Best Regards,

Jochen Keil