On Tue, Apr 05, 2011 at 02:16:33PM +0200, Peter Hallin wrote:
> OK, here's a little update on this problem.
> 
> As I told you earlier in the thread, we did some successful tests with
> the 4-port Intel 82576 card, HOWEVER we only tested two ports, em0 och
> em1. When the card later was put into the production machine we chose
> to use em0 as the unprocteded if and em2 as the protected.
> 
> When we connected the machine to the router, we only got a throughput
> at about 100 Mbit/s 100% CPU, busy handling interrupts, while the cards
> only generate about 3000 intr/s each. 
> 
> As it turns out, the problem is the same as with the dual port cards,
> but now it only applies to em2 and em3. If we any of those ports, the
> machine get bogged down completely and the livelock rate is about 10 per
> second.
> 
> If we only use em0 and em1, it performs really good. With real traffic,
> we've had some peaks at about 750 Mbit/s at 80% CPU and when testing
> with iperf we get 936 Mbit/s at 90%i CPU (8200 intr/s).
> 
> This leads me to believe that there are some IRQ conflicts that may or
> may not be caused by the driver.
> 
> This is the vmstat -iz output of the production machine:
> 
> interrupt                       total     rate
> irq0/clock                     743258       99
> irq144/acpi0                        0        0
> irq114/ppb2                         0        0
> irq112/em0                   52133849     7004
> irq113/em1                   52036815     6991
> irq114/em2                          0        0
> irq115/em3                          0        0
> irq115/ppb6                         0        0
> irq112/em4                      41319        5
> irq113/em5                          0        0
> irq114/ppb10                        0        0
> irq96/uhci0                         0        0
> irq97/uhci1                         0        0
> irq96/uhci2                         0        0
> irq97/uhci3                         0        0
> irq96/ehci0                         0        0
> irq98/pciide0                    8162        1
> irq99/pciide1                       0        0
> irq99/ichiic0                       0        0
> irq145/com0                         0        0
> irq146/com1                         0        0
> irq147/pckbc0                     645        0
> irq148/pckbc0                       0        0
> Total                       104964048    14102
> 

Can you give the following diff a spin and see if that makes the card act
faster. This disables the ppb hotplug interrupt which is shared with the
em2 and em3 interrupts.

-- 
:wq Claudio

Index: ppb.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/ppb.c,v
retrieving revision 1.47
diff -u -p -r1.47 ppb.c
--- ppb.c       30 Dec 2010 00:58:22 -0000      1.47
+++ ppb.c       5 Apr 2011 12:32:34 -0000
@@ -169,10 +169,11 @@ ppbattach(struct device *parent, struct 
        /* Check for PCI Express capabilities and setup hotplug support. */
        if (pci_get_capability(pc, pa->pa_tag, PCI_CAP_PCIEXPRESS,
            &sc->sc_cap_off, &reg) && (reg & PCI_PCIE_XCAP_SI)) {
+#if 0
                if (pci_intr_map(pa, &ih) == 0)
                        sc->sc_intrhand = pci_intr_establish(pc, ih, IPL_TTY,
                            ppb_intr, sc, self->dv_xname);
-
+#endif
                if (sc->sc_intrhand) {
                        printf(": %s", pci_intr_string(pc, ih));

Reply via email to