これは純粋なハードウェアの問題であるため、この質問は 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) のみがこれらの割り込みを受信できるようになります。
幸運を!