Probleme mit IRQs, wenn zwei digium Karte und Sternchen Box verbinden
Frage
Ich habe zwei Digium Wildcard TDM800P mit 8 FXO-Ports je. Wenn ich eine Verbindung beide zur gleichen Zeit starten IRQ Misses zeigt auf meinem Computer nicht mehr reagiert und unbrauchbar zu machen.
Eine Karte funktioniert gut, aber ich brauche, um alle 16 FXO Ports Anrufe von meinem Telco erhalten zu arbeiten. Gibt es eine Möglichkeit für die Karten miteinander zu kommunizieren, so erzeugen sie nicht so viele Unterbrechungen. Oder ein Weg, um Linux zu zwicken für jede Karte separate IRQ zu widmen.
Ich habe versucht, Audio, ACPI und USB-Ports zu deaktivieren. Immer noch zu viele IRQ vermisst.
Lösung
Diese Frage besser auf serverfault geschrieben werden würde, da dies ein reines Hardware-Problem ist.
Das Problem ist, Sie erleben typisch für hohe Interrupt-PCI-Karten im Allgemeinen und Digium Telefonie-Karten im Besonderen. Bitte denken Sie daran, dass das Problem ergibt sich aus beiden Karten, die in der gleichen PCI-Bus, Ihr Ziel ist es, sie IRQ-Interrupts nicht zu haben, teilen.
Es gibt ein paar Dinge, die Sie versuchen können, kann Ihr Problem lösen:
1) Upgrade auf DAHDI Treiber . Sie haben besseren IRQ Anstoß.
2) Ändern Sie eine der Karten in einem anderen PCI-Steckplatz . Einige PCI-Steckplätze auf dem Motherboard Aktie Fahrspuren. Sie wollen, dies zu vermeiden. Überprüfen Sie Ihre Motherboards Handbuch. Außerdem können Sie führen Sie das folgende
cat /proc/interrupts
Sie sollten Ausgabe wie folgt erhalten
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 wird durch usb1, usb3 und USB4 geteilt? Sie wollen nicht, dass auf Ihre Digium Karten geschehen. By the way, zeigen Digium Karten ususaly als TDPXXX auf.
3) Lastausgleich unterbricht zwischen der CPU - 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 stark die Interrupt-Last auf Ihrer CPU erleichtern. Wenn Sie meinen zuvor gebuchten Code überprüfen, können Sie sehen, dass Local Timer-Interrupts gleichmäßig zwischen CPUs verteilt sind. Wenn Ihre Digium Karten nur ein CPU Hammer (dies geschieht) können Sie die Last verteilt durch die folgenden versuchen. Sagen wir 21 IRQ ändern (die zuvor erwähnte USBs)
gesuchtcat /proc/irq/21/smp_affinity
ffffffff
Alle, ‚f‘ sagen uns, dass die Interrupt-Last von IRQ 21 ist Last zwischen allen CPUs ausgeglichen. Wenn Sie es zu einem bestimmten CPU zuweisen möchten, fügen Sie diese nuber nach rechts in hexadezimal. Zum Beispiel kann sagen, mag ich die einzigen USB-zu CPU0 unterbrechen.
echo 1 > /proc/irq/21/smp_affinity
cat /proc/irq/21/smp_affinity
00000001
So, jetzt nur die erste CPU (CPU 0) aktiviert dieses Interrupts zu empfangen.
Viel Glück!
Andere Tipps
PCI Digium Karten nicht gut funktionieren, wenn Sie mehr als ein in demselben Computer zu haben, versuchen. Ich hatte ein ähnliches Problem mit zwei TE405-Karten im selben Computer und musste eine Sangoma-Karte wechseln (ich brauchte nur 1 Sangoma, weil sie in der gleichen Karte bis zu 8 E1 der Unterstützung und das ist, was ich brauchte). Oder Sie können die AEX800 versuchen, die wie die TDM800 ist, aber es ist PCI-X statt nur alte PCI. IIRC das Problem ist, PCI-bezogene.
JorgeO: Klingt für mich wie Sie Ihre Treiber aktualisieren müssen. Die neuesten zaptel und DAHDI Versionen enthalten Treiber für die TDM800P, dass das Board in so konfigurieren, dass das System toleranten Host-System-Interrupt-Latenzzeiten zu können.
Ich habe Debian und nicht funktionieren, ändern irq eth0 -> cpu0 eine cpu2 cat / proc / irq / xxx / smp_affinity 00000003 aber nicht arbeiten die procees weiter cpu0