3

それぞれ 8 つの FXO ポートを備えた 2 つの Digium Wildcard TDM800P があります。両方を同時に接続すると、IRQ ミスが発生し始め、コンピューターが応答しなくなり、使用できなくなります。

1 枚のカードで正常に動作しますが、Telco からのコールを受信するには、16 の FXO ポートすべてが動作する必要があります。カードが互いに通信して、多くの割り込みを生成しないようにする方法はありますか。または、Linux を微調整して、カードごとに個別の IRQ を専用にする方法。

オーディオ、ACPI、および USB ポートを無効にしようとしました。それでも IRQ ミスが多すぎます。

4

4 に答える 4

3

これは純粋なハードウェアの問題であるため、この質問は 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

割り込み 21 で、usb1、usb3、および usb4 がどのように共有されているかを確認してください。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) のみがこれらの割り込みを受信できるようになります。

幸運を!

于 2009-09-30T19:20:04.017 に答える
0

JorgeO: ドライバーを更新する必要があるようですね。最新の zaptel および DAHDI リリースには、システムがホスト システムの割り込みレイテンシをより許容できるようにボードを構成する TDM800P 用のドライバーが含まれています。

于 2009-03-27T16:37:32.253 に答える
0

PCI Digium カードは、同じコンピュータに複数搭載しようとするとうまく機能しません。同じコンピューターに 2 枚の TE405 カードで同様の問題が発生し、Sangoma カードに切り替える必要がありました (同じカードで最大 8 つの E1 をサポートするため、Sangoma は 1 枚しか必要ありませんでした)。または、TDM800 に似た AEX800 を試すこともできますが、従来の PCI ではなく PCI-X です。IIRC 問題は PCI 関連です。

于 2009-03-10T16:17:05.923 に答える
0

私は Debian を持っていますが、動作しません。irq eth0 を変更します -> cpu0 を cpu2 cat /proc/irq/xxx/smp_affinity 00000003 に変更しますが、動作しません。プロセスは cpu0 を続行します

于 2009-10-08T04:01:42.963 に答える