Diese Frage wäre besser bei serverfault, da dies ein reines Hardwareproblem ist.
Das Problem, das auftritt, ist typisch für PCI-Karten mit hoher Interrupt-Rate im Allgemeinen und Digium-Telefonkarten im Besonderen. Bitte beachten Sie, dass das Problem dadurch entsteht, dass Sie beide Karten im selben PCI-Bus haben. Ihr Ziel ist es, dass sie IRQ-Interrupts nicht teilen.
Es gibt ein paar Dinge, die Sie versuchen können, Ihr Problem lösen können:
1) Upgrade auf DAHDI Treiber. Sie haben eine bessere IRQ-Konkurrenz.
2) Wechseln Sie eine der Karten in einen anderen PCI-Steckplatz. Einige PCI-Steckplätze auf dem Motherboard teilen sich Fahrspuren. Sie möchten dies vermeiden. Überprüfen Sie das Handbuch Ihres Motherboards. Außerdem können Sie die folgenden
cat /proc/interrupts
ausführen sollten Sie erhalten eine Ausgabe wie diese
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
Sehen Sie, wie in Interrupt 21 geteilt durch usb1, usb3 und USB4? Das soll nicht mit deinen Digium-Karten passieren. Übrigens erscheinen Digium-Karten normalerweise als TDPXXX.
3) Lastausgleich unterbricht zwischen CPUs - Wenn Ihr PC mehr als eine CPU und des Kernels und Motherboard Support-IO-APIC hat, können Sie laden Gleichgewicht zwischen den verschiedenen CPUs unterbricht. Dies wird auch die Interruptlast auf Ihrer CPU erheblich erleichtern. Wenn Sie meinen zuvor geposteten Code überprüfen, können Sie sehen, dass lokale Timer-Interrupts gleichmäßig zwischen den CPUs verteilt sind. Wenn Ihre Digium-Karten nur eine CPU hämmern (dies passiert), können Sie die Last verteilen, indem Sie Folgendes versuchen. Angenommen, wir wollten IRQ 21 ändern (die zuvor erwähnte USBs)
cat /proc/irq/21/smp_affinity
ffffffff
Alle, ‚f‘ sagen uns, dass die Interrupt-Last von IRQ 21 Last zwischen allen CPUs ausgewogen ist.Wenn Sie es einer bestimmten CPU zuweisen möchten, fügen Sie diesen number in hexadezimaler Schreibweise nach rechts hinzu. Zum Beispiel sagen wir, dass die USBs CPU0 nur unterbrechen sollen.
echo 1 > /proc/irq/21/smp_affinity
cat /proc/irq/21/smp_affinity
00000001
Jetzt ist nur die erste CPU (CPU0) aktiviert, diese Interrupts zu empfangen.
Viel Glück!
Zu der Zeit kannte ich nicht Serverfault. Aber immer noch, große Antwort, Upgrade von dahdi tatsächlich gelöst das Problem, aber es ist großartig zu wissen, dass Sie Interrupts zu einer bestimmten CPU Assi. – JorgeO