将两个数字卡连接到星号箱时的IRQ问题

我有两个Digium Wildcard TDM800P,每个都有8个FXO端口。 当我连接两个同时IRQ未命中开始显示使我的电脑无响应和无法使用。

一张卡的工作正常,但我需要所有16个FXO端口工作,以接收来自我的电话公司的电话。 有没有办法让这些卡互相通信,这样就不会产生太多的中断。 或者调整Linux为每个卡分配不同的IRQ。

我曾尝试禁用audio,ACPI和USB端口。 仍然太多的IRQ未命中。

这个问题在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卡片上。 顺便说一句,Digium卡ususaly显示为TDPXXX。

3)CPU之间的负载均衡中断 – 如果您的PC有多个CPU,并且您的内核和主板支持IO-APIC,则可以在不同的CPU之间进行负载平衡中断。 这也将大大缓解CPU的中断负载。 如果你检查我以前发布的代码,你可以看到本地定时器中断在CPU之间均匀分布。 如果你的Digium卡只能锤击一个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)被允许接收这些中断。

祝你好运!

当您尝试在同一台计算机上安装多个PCI卡时,PCI Digium卡不能正常工作。 我在同一台电脑上遇到了2个TE405卡的类似问题,不得不切换到Sangoma卡(我只需要1个Sangoma卡,因为它们支持8个E1卡,这就是我所需要的)。 或者你可以试试像TDM800那样的AEX800,但是它是PCI-X而不是普通的老式PCI。 IIRC的问题是与PCI有关。

JorgeO:听起来像你需要更新你的驱动程序。 最新的zaptel和DAHDI版本包括TDM800P的驱动程序,这些驱动程序以一种允许系统更容忍主机系统中断延迟的方式配置主板。

我有Debian和不工作,更改irq eth0 – > cpu0 a cpu2 cat / proc / irq / xxx / smp_affinity 00000003但不工作继续cpu0