2009-03-10 16 views
2

Ich habe zwei Digium Wildcard TDM800P mit je 8 FXO-Ports. Wenn ich beide gleichzeitig anschließe, beginnen IRQ-Fehler zu erscheinen, wodurch mein Computer nicht mehr reagiert und unbrauchbar wird.Probleme mit IRQs beim Anschluss von zwei Digium-Karten in und Sternchen-Box

Eine Karte funktioniert gut, aber ich brauche alle 16 FXO-Ports, um Anrufe von meinem Telco zu empfangen. Gibt es eine Möglichkeit für die Karten miteinander zu kommunizieren, so dass sie nicht so viele Interrupts erzeugen. Oder eine Möglichkeit, Linux zu optimieren, um für jede Karte separate IRQs einzurichten.

Ich habe versucht, Audio, ACPI und USB-Ports zu deaktivieren. Immer noch zu viele IRQ fehlen.

Antwort

2

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!

+0

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

0

PCI Digium-Karten funktionieren nicht gut, wenn Sie versuchen, mehrere Computer gleichzeitig zu verwenden. Ich hatte ein ähnliches Problem mit 2 TE405-Karten im selben Computer und musste zu einer Sangoma-Karte wechseln (ich brauchte nur 1 Sangoma, weil sie bis zu 8 E1 auf derselben Karte unterstützen und das war es, was ich brauchte). Oder Sie können den AEX800 versuchen, der wie der TDM800 ist, aber es ist PCI-X anstelle von einfachem altem PCI. IIRC Das Problem ist PCI-bezogen.

+0

PCI-X Ich nehme an seiner einen diferent Schlitz weiter ? Oder gibt es eine Chance, dass mein Mothermoard es unterstützt? (Mein Motherboard hat 3 gleich aussehende PCI-Ports) Hinweis: 8 E1? Aprox 240 Kanäle das ist eine riesige Kapazität. – JorgeO

+0

PCI Express unterscheidet sich von einfacher PCI. Sie müssen Ihre Hardware überprüfen, um zu sehen, ob es angenommen wird. PCI-X ist kleiner, denke ich (ich bin nicht wirklich in Hardware). – Chochos

0

JorgeO: Klingt für mich so, als müssten Sie Ihre Treiber aktualisieren. Die neuesten ZAPTEL- und DAHDI-Releases enthalten Treiber für den TDM800P, die die Karte so konfigurieren, dass das System toleranter gegenüber Host-System-Interrupt-Latenzen ist.

+0

Ich zaptel Upgrade auf DAHDI. Ich suche nach einer hardwarebezogenen Lösung. So wie die beiden Karten miteinander verbunden werden, so dass sie den gleichen Interrupt verwenden, um mit Ereignissen umzugehen. Ich sehe Jumper in der Karte einer von ihnen hat die Initialen "clk" wie Uhr ... – JorgeO

0

Ich habe Debian und nicht funktionieren, ändern irq eth0 -> cpu0 eine cpu2 cat/proc/irq/xxx/smp_affinity 00000003 aber nicht arbeiten die procees cpu0