代码之家  ›  专栏  ›  技术社区  ›  JorgeO

连接两个Digium卡和星号框时出现IRQ问题

  •  2
  • JorgeO  · 技术社区  · 17 年前

    我有两个digium通配符TDM800P,每个端口有8个fxo端口。当我同时连接两者时,IRQ Misses开始出现,使我的计算机无响应和不可用。

    一张卡可以用,但我需要所有16个fxo端口都可以工作来接收来自电信公司的呼叫。有没有一种方法可以让卡片彼此通信,这样它们就不会产生那么多的中断。或者一种调整Linux的方法,为每张卡指定单独的IRQ。

    我已尝试禁用音频、ACPI和USB端口。仍然有太多IRQ未命中。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Alex Recarey    17 年前

    这个问题最好在serverfault上发布,因为这是一个纯粹的硬件问题。

    您遇到的问题通常是高中断PCI卡的典型问题,尤其是Digium电话卡。请记住,问题源于在 相同的 PCI总线,您的目标是不让它们共享IRQ中断。

    您可以尝试以下几种方法来解决您的问题:

    1)升级到dahdi驱动程序 . 他们有更好的IRQ竞争。

    2)将其中一个卡换成另一个PCI插槽 . 主板上的一些PCI插槽共享通道。你想避免这个。查看主板手册。此外,您还可以执行以下操作

    cat /proc/interrupts
    

    你应该收到这样的输出

                   CPU0       CPU1       CPU2       CPU3
      0:         37          2          5          8   IO-APIC-edge      timer
      1:          1          1          0          0   IO-APIC-edge      i8042
      8:          0          0          1          0   IO-APIC-edge      rtc0
      9:          0          0          0          0   IO-APIC-fasteoi   acpi
     12:          1          0          0          3   IO-APIC-edge      i8042
     14:         33         35         31         30   IO-APIC-edge      ide0
     20:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb2
     21:         37         37         41         38   IO-APIC-fasteoi   uhci_hcd:usb1, uhci_hcd:usb3, ehci_hcd:usb4
    1269:      14357      14387      14387      14372   PCI-MSI-edge      eth0
    1270:       2523       2490       2489       2503   PCI-MSI-edge      ioc0
    NMI:          0          0          0          0   Non-maskable interrupts
    LOC:     487635     236288     376032      88504   Local timer interrupts
    RES:        507        516        571        701   Rescheduling interrupts
    CAL:        205        281        237        201   function call interrupts
    TLB:       2835       2190       2221       1737   TLB shootdowns
    TRM:          0          0          0          0   Thermal event interrupts
    THR:          0          0          0          0   Threshold APIC interrupts
    SPU:          0          0          0          0   Spurious interrupts
    ERR:          0
    

    看到中断21中USB1、USB3和USB4是如何共享的吗?你不希望你的数字卡出现这种情况。顺便说一下,digium卡通常显示为tdpxx。

    3)CPU之间的负载平衡中断 -如果你的电脑有一个以上的CPU,并且你的内核和主板支持IO-APIC,你可以在不同的CPU之间负载平衡中断。这也将大大减轻你的CPU上的中断负载。如果你检查我以前发布的代码,你可以看到本地计时器中断在CPU之间均匀分布。如果你的数字卡只锤击一个CPU(发生这种情况)您可以通过尝试以下操作来分散负载。假设我们想更改IRQ 21(前面提到的USB)

    cat /proc/irq/21/smp_affinity
    ffffffff
    

    所有这些“f”都告诉我们来自IRQ 21的中断负载在所有CPU之间是负载平衡的。如果要将其分配给某个CPU,请将该nuber以十六进制形式添加到右侧。例如,假设我希望USB只中断CPU0。

    echo 1 > /proc/irq/21/smp_affinity 
    cat /proc/irq/21/smp_affinity 
    00000001
    

    所以现在只有第一个CPU(CPU0)被启用来接收这些中断。

    祝你好运!

        2
  •  0
  •   Chochos    17 年前

    当您试图在同一台计算机中使用多个PCI Digium卡时,PCI Digium卡无法正常工作。我在同一台电脑中有2张TE405卡也有类似的问题,必须切换到Sangoma卡(我只需要1张Sangoma卡,因为它们在同一张卡中最多支持8个e1,这就是我需要的)。 或者您可以尝试AEX800,它与TDM800类似,但它是PCI-X而不是普通的旧PCI。IIRC问题与PCI有关。

        3
  •  0
  •   sruffell    17 年前

    我觉得你需要更新你的司机。最新的zaptel和dahdi版本包括用于TDM800P的驱动程序,这些驱动程序以一种允许系统更容忍主机系统中断延迟的方式配置板。

        4
  •  0
  •   user186113    17 年前

    我有debian没有工作,请更改irq eth0->cpu0 A cpu2 cat/proc/irq/xxx/smp_亲和力 0000000 3但不工作程序继续CPU0