2009-03-10 3 views
2

У меня есть два Digium Wildcard TDM800P с 8 портами FXO каждый. Когда я соединяю оба одновременно, пропущенные IRQ начинают показывать, что мой компьютер не реагирует и неприменим.Проблемы с прерываниями при подключении двух карт дигиума и звездочки

Одна карта работает нормально, но мне нужно, чтобы все 16 портов FXO работали для приема звонков с моего Telco. Есть ли способ для карт общаться друг с другом, чтобы они не генерировали столько прерываний. Или способ настроить Linux для выделения отдельных IRQ для каждой карты.

Я попытался отключить аудио, ACPI и USB-порты. Все еще слишком много IRQ промахивается.

ответ

2

Этот вопрос будет лучше размещен в serverfault, так как это чистая проблема с оборудованием.

Проблема, с которой вы столкнулись, типична для PCI-карт с высоким прерыванием в целом и, в частности, для карт Digium. Пожалуйста, имейте в виду, что проблема связана с наличием обеих карт в той же шине PCI, ваша цель состоит в том, чтобы они не делили прерывания IRQ.

Есть несколько вещей, которые вы можете попробовать, что может решить вашу проблему:

1) Обновление до DAHDI водителей. У них лучше конкуренция IRQ.

2) Измените одну из плат на другой слот 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 ususaly появляются как TDPXXX.

3) Прерывания балансировки нагрузки между CPU. Если на вашем ПК установлено более одного процессора, а ваше ядро ​​и материнская плата поддерживают IO-APIC, вы можете загружать прерывания баланса между различными CPU. Это также значительно облегчит загрузку прерываний на вашем процессоре. Если вы проверите мой ранее опубликованный код, вы увидите, что прерывания локального таймера распределяются равномерно между CPU. Если ваши карты Digium забивают только один процессор (это происходит), вы можете разложить нагрузку, попробовав следующее. Скажем, мы хотим изменить IRQ 21 (вышеупомянутый Укрсоцбанка)

cat /proc/irq/21/smp_affinity 
ffffffff 

Все те «е» говорят нам, что нагрузка прерывания от IRQ 21 является балансировка нагрузки между всеми процессора.Если вы хотите назначить его определенному процессору, добавьте этот нубер вправо в шестнадцатеричном формате. Например, скажем, я хочу, чтобы USB только прерывал CPU0.

echo 1 > /proc/irq/21/smp_affinity 
cat /proc/irq/21/smp_affinity 
00000001 

Итак, теперь для приема этих прерываний разрешен только первый CPU (CPU0).

Удачи вам!

+0

В то время я не знал serverfault. Но все-таки, отличный ответ, обновление dahdi на самом деле решило проблему, но прекрасно знает, что вы можете определить прерывания для конкретного процессора. – JorgeO

0

Карты PCI Digium работают плохо, когда вы пытаетесь использовать более одного компьютера. У меня была аналогичная проблема с двумя картами TE405 на том же компьютере, и мне пришлось переключиться на карту Sangoma (мне нужно было только 1 Sangoma, потому что они поддерживают до 8 E1 в одной и той же карточке, и это то, что мне было нужно). Или вы можете попробовать AEX800, который похож на TDM800, но это PCI-X вместо обычного старого PCI. IIRC проблема связана с PCI.

+0

PCI-X, я полагаю, его слот с различного ? Или есть шанс, что моя матери поддерживает это? (Моя материнская плата имеет 3 одинаковых порта pci) Примечание: 8 E1? aprox 240 каналов имеют огромную емкость. – JorgeO

+0

PCI Express отличается от обычного PCI. Вы должны проверить свое оборудование, чтобы убедиться, что это так. PCI-X меньше, я думаю (я не вхожу в аппаратное обеспечение). – Chochos

0

JorgeO: Мне кажется, что вам нужно обновить драйверы. В последние версии zaptel и DAHDI входят драйверы для TDM800P, которые настраивают плату таким образом, чтобы система была более толерантна к задержкам прерывания хост-системы.

+0

Я обновляю zaptel до DAHDI. Я ищу решение, связанное с оборудованием. Подобно соединению обеих карт, поэтому они используют одно и то же прерывание для обработки событий. Я вижу перемычки в карточке, у одного из них есть инициалы clk, как часы ... – JorgeO

0

меня Debian, а не работать, изменение IRQ eth0 -> cpu0 CPU2 кота/Proc/IRQ/ххх/smp_affinity 00000003 но не работают procees продолжают cpu0

Смежные вопросы