2つのdigiumカードとアスタリスクボックスを接続するときのIRQの問題
質問
2つのDigium Wildcard TDM800Pがあり、それぞれ8つのFXOポートがあります。両方を同時に接続すると、IRQミスが表示され、コンピューターが応答しなくなり、使用できなくなります。
1枚のカードで問題なく動作しますが、電話会社からのコールを受信するには、16個すべてのFXOポートが必要です。カードが相互に通信して、割り込みを生成しないようにする方法はありますか。または、Linuxを微調整してカードごとに個別のIRQを割り当てる方法。
オーディオ、ACPI、USBポートを無効にしようとしました。それでもIRQミスが多すぎます。
解決
これは純粋なハードウェアの問題であるため、この質問はserverfaultに投稿する方が良いでしょう。
発生している問題は、一般的な高割り込みPCIカード、特にDigiumテレフォニーカードによく見られます。この問題は、両方のカードが同じ PCIバスにあることに起因することに注意してください。あなたの目的は、IRQ割り込みを共有させないことです。
問題を解決するために試すことができることがいくつかあります:
1)DAHDIドライバーにアップグレードします。 IRQ競合が改善されています。
2)カードの1つを別の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
usb1、usb3、およびusb4で割り込み21がどのように共有されるかを確認してください。あなたはそれがあなたのDigiumカードに起こることを望まない。ちなみに、Digiumカードは通常TDPXXXとして表示されます。
3)CPU間の負荷分散割り込み-PCに複数のCPUがあり、カーネルとマザーボードがIO-APICをサポートしている場合、異なるCPU間で割り込みを負荷分散できます。これにより、CPUの割り込み負荷も大幅に軽減されます。以前に投稿したコードを確認すると、ローカルタイマー割り込みがCPU間で均等に分散されていることがわかります。 Digiumカードが1つのCPUのみをハンマーする場合(これが発生します)、以下を試して負荷を分散できます。 IRQ 21(前述のUSB)を変更したい場合
cat /proc/irq/21/smp_affinity
ffffffff
これらすべての「f」は、IRQ 21からの割り込み負荷がすべてのCPU間で負荷分散されることを示しています。特定のCPUに割り当てる場合は、その数値を16進数で右側に追加します。たとえば、USBにCPU0のみを中断させたいとしましょう。
echo 1 > /proc/irq/21/smp_affinity
cat /proc/irq/21/smp_affinity
00000001
これで、最初のCPU(CPU0)のみがこれらの割り込みを受信できるようになりました。
がんばって!
他のヒント
PCI Digiumカードは、同じコンピューターに複数のカードを入れようとするとうまく機能しません。同じコンピューターの2枚のTE405カードで同様の問題が発生し、サンゴマカードに切り替える必要がありました(同じカードで最大8個のE1をサポートしているので、サンゴマは1枚しか必要ありませんでした)。 または、TDM800のようなAEX800を試すこともできますが、それは単純な古いPCIの代わりにPCI-Xです。 IIRC問題はPCI関連です。
JorgeO:ドライバーを更新する必要があるように思えます。最新のzaptelおよびDAHDIリリースには、TDM800P用のドライバーが含まれており、システムがホストシステムの割り込みレイテンシをより許容できるようにボードを構成します。
Debianを持っていますが動作しません。irqeth0を変更します-> cpu0 a cpu2 猫/ proc / irq / xxx / smp_affinity 00000003動作しませんが、プロセスはcpu0を続行します