GENERIC.MP uses APIC instead of PIC which Microsoft, among others, claims can handle a much higher interrupt load. I was fussing around to make APIC work on single processor kernels in my spare time, but I haven't gotten anywhere yet.
What size packets were you using at 900Mbps? 1500 bytes? These test would be more interesting with 64 byte packets. You could go into the kernel source and get rid of some of the features that Linux and FreeBSD don't apply (like microtime() on every interrupt) to see if you can up the packet per second capability. But you should certainly start with OpenBSD on APIC like Linux and FreeBSD do. GENERIC.MP enables APIC but you aren't using any of the other CPUs for any actual kernel work. Jonathan Steel [EMAIL PROTECTED] wrote: > Hi Everyone > > We recently purchased an Intel PRO/1000 GT Quad Port network card and > decided to run some stress tests to make sure it could maintain gigabit > connections on all four ports at the same time. I ran the test with five > computers and iperf-1.7.0 (newest version of iperf has speed issues with > OpenBSD). The computer with the NIC ran the iperf server in upd mode and > the four other machines ran as iperf upd clients. > > The first test was using the GENERIC kernel > > 2 ports could sustain 900Mbit/s connections with about 30% packet drop rate > 3 ports could sustain 900Mbit/s connections with about 80% packet drop rate > 4 ports could sustain 900Mbit/s connections with about 95-99% packet drop > rate > > > The second test was using the GENERIC.MP kernel > > 2 ports could sustain 900Mbit/s connections with no dropped packets > 3 ports could sustain 900Mbit/s connections with about 10% packet drop rate > 4 ports could sustain 900Mbit/s connections with about 30-50% packet drop > rate > > The only disturbing thing about these tests was that I also did the same > test on Gentoo, and I could sustain 4 900Mbit/s connections with only a 3% > drop rate. I found consisten results with the PRO/1000 MT Dual Port card > as well, which has the same controller, the Intel 82546GB. I then tried > the dual port card on FreeBSD FreeBSD 6.1 with the stock install which > does not appear to use multiprocessors and it could maintain 2 ports at > 900Mbit/s without losing packets. Unfortunately FreeBSD 6.1 does not > appear to support the 4 port card. > > I did some tests on an OpenBSD 3.8 machine and found the same problem. > > Is there any explanation for the speed difference? I have tried tweeking > some sysctl values to no avail. Is there something else I can test for on > the card? I'd be happy to run these tests again for any changes that are > made. > > Here is the demsg of the test machine: > > OpenBSD 4.2-current (GENERIC) #9: Thu Oct 18 16:44:39 UTC 2007 > [EMAIL PROTECTED]:/sysHEAD/src/sys/arch/i386/compile/GENERIC > cpu0: Intel(R) Core(TM)2 Quad CPU @ 2.40GHz ("GenuineIntel" 686-class) > 2.40 GHz > cpu0: > FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUS > H,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,VMX,EST,TM2,CX16, > xTPR > real mem = 3756482560 (3582MB) > avail mem = 3648778240 (3479MB) > mainbus0 at root > bios0 at mainbus0: AT/286+ BIOS, date 08/25/07, BIOS32 rev. 0 @ 0xfd470, > SMBIOS rev. 2.51 @ 0xdfeea000 (31 entries) > bios0: vendor Phoenix Technologies LTD version "6.00" date 08/25/2007 > bios0: Supermicro PDSMi > pcibios0 at bios0: rev 2.1 @ 0xfd470/0xb90 > pcibios0: PCI BIOS has 20 Interrupt Routing table entries > pcibios0: PCI Interrupt Router at 000:31:0 ("Intel 82801GB LPC" rev 0x00) > pcibios0: PCI bus #15 is the last bus > bios0: ROM list: 0xc0000/0xb000 0xcb000/0x1000 0xcc000/0x1000 > acpi at mainbus0 not configured > ipmi at mainbus0 not configured > cpu0 at mainbus0 > cpu0: Enhanced SpeedStep disabled by BIOS > pci0 at mainbus0 bus 0: configuration mode 1 (no bios) > pchb0 at pci0 dev 0 function 0 "Intel E7230 MCH" rev 0xc0 > ppb0 at pci0 dev 1 function 0 "Intel E7230 PCIE" rev 0xc0 > pci1 at ppb0 bus 1 > ppb1 at pci0 dev 28 function 0 "Intel 82801GB PCIE" rev 0x01 > pci2 at ppb1 bus 9 > ppb2 at pci2 dev 0 function 0 "Intel PCIE-PCIE" rev 0x09 > pci3 at ppb2 bus 10 > ppb3 at pci3 dev 1 function 0 "Pericom PI7C21P100 PCIX-PCIX" rev 0x01 > pci4 at ppb3 bus 11 > em0 at pci4 dev 4 function 0 "Intel PRO/1000MT QP (82546GB)" rev 0x03: irq > 11, address 00:1b:21:0e:c2:ec > em1 at pci4 dev 4 function 1 "Intel PRO/1000MT QP (82546GB)" rev 0x03: irq > 11, address 00:1b:21:0e:c2:ed > em2 at pci4 dev 6 function 0 "Intel PRO/1000MT QP (82546GB)" rev 0x03: irq > 5, address 00:1b:21:0e:c2:ee > em3 at pci4 dev 6 function 1 "Intel PRO/1000MT QP (82546GB)" rev 0x03: irq > 11, address 00:1b:21:0e:c2:ef > "Intel IOxAPIC" rev 0x09 at pci2 dev 0 function 1 not configured > ppb4 at pci0 dev 28 function 4 "Intel 82801G PCIE" rev 0x01 > pci5 at ppb4 bus 13 > em4 at pci5 dev 0 function 0 "Intel PRO/1000MT (82573E)" rev 0x03: irq 11, > address 00:30:48:8a:2e:7c > ppb5 at pci0 dev 28 function 5 "Intel 82801G PCIE" rev 0x01 > pci6 at ppb5 bus 14 > em5 at pci6 dev 0 function 0 "Intel PRO/1000MT (82573L)" rev 0x00: irq 11, > address 00:30:48:8a:2e:7d > uhci0 at pci0 dev 29 function 0 "Intel 82801GB USB" rev 0x01: irq 10 > uhci1 at pci0 dev 29 function 1 "Intel 82801GB USB" rev 0x01: irq 11 > uhci2 at pci0 dev 29 function 2 "Intel 82801GB USB" rev 0x01: irq 5 > uhci3 at pci0 dev 29 function 3 "Intel 82801GB USB" rev 0x01: irq 11 > ehci0 at pci0 dev 29 function 7 "Intel 82801GB USB" rev 0x01: irq 10 > usb0 at ehci0: USB revision 2.0 > uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 > ppb6 at pci0 dev 30 function 0 "Intel 82801BA AGP" rev 0xe1 > pci7 at ppb6 bus 15 > vga1 at pci7 dev 0 function 0 "ATI ES1000" rev 0x02 > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > ichpcib0 at pci0 dev 31 function 0 "Intel 82801GB LPC" rev 0x01: PM > disabled > pciide0 at pci0 dev 31 function 2 "Intel 82801GB SATA" rev 0x01: DMA, > channel 0 wired to compatibility, channel 1 wired to compatibility > wd0 at pciide0 channel 0 drive 0: <WDC WD2500YS-01SHB0> > wd0: 16-sector PIO, LBA48, 239372MB, 490234752 sectors > wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 > atapiscsi0 at pciide0 channel 1 drive 0 > scsibus0 at atapiscsi0: 2 targets > cd0 at scsibus0 targ 0 lun 0: <TEAC, CD-224E-N, 1.AA> SCSI0 5/cdrom > removable > cd0(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 2 > ichiic0 at pci0 dev 31 function 3 "Intel 82801GB SMBus" rev 0x01: irq 11 > iic0 at ichiic0 > lm1 at iic0 addr 0x2d: W83627HF > wbng0 at iic0 addr 0x2f: w83793g > spdmem0 at iic0 addr 0x50: DDR2 SDRAM ECC PC2-5300CL5 > spdmem1 at iic0 addr 0x51: DDR2 SDRAM ECC PC2-5300CL5 > spdmem2 at iic0 addr 0x52: DDR2 SDRAM ECC PC2-5300CL5 > spdmem3 at iic0 addr 0x53: DDR2 SDRAM ECC PC2-5300CL5 > usb1 at uhci0: USB revision 1.0 > uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > usb2 at uhci1: USB revision 1.0 > uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > usb3 at uhci2: USB revision 1.0 > uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > usb4 at uhci3: USB revision 1.0 > uhub4 at usb4 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > isa0 at ichpcib0 > isadma0 at isa0 > pckbc0 at isa0 port 0x60/5 > pckbd0 at pckbc0 (kbd slot) > pckbc0: using irq 1 for kbd slot > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pmsi0 at pckbc0 (aux slot) > pckbc0: using irq 12 for aux slot > wsmouse0 at pmsi0 mux 0 > pcppi0 at isa0 port 0x61 > midi0 at pcppi0: <PC speaker> > spkr0 at pcppi0 > lpt0 at isa0 port 0x378/4 irq 7 > lm0 at isa0 port 0x290/8: W83627HF > lm1 detached > npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 > pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > pccom1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 > biomask ef65 netmask ef65 ttymask ffe7 > pctr: 686-class user-level performance counters enabled > mtrr: Pentium Pro MTRR support > dkcsum: wd0 matches BIOS drive 0x80 > root on wd0a swap on wd0b dump on wd0b > > > Thank You > Jonathan Steel -- "You were about to change the channel when God healed you" -- Benny Hinn