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.

War es hilfreich?

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)

gesucht
cat /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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top