質問

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を続行します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top