Jim Van Meggelen wrote:

OK, look, you _might_ be able to free up enough IRQs on a PIC-based
motherboard -- if you disable the serial ports, mouse, parallel port and
USB. It's not recommended, but it's theoretically possible.


And if you have a MoBo that is APIC-compliant, you should be able to
have all the IRQs you can handle, so lack of IRQs doesn't need to be an
issue (make sure you have a BIOS and chipset that's up to the task).

BUT . . .

Getting dedicated IRQs for the cards is a minor problem compared to what
happens when you have four cards hammering away mercilessly at the
chipset and CPU of your motherboard; 1000 IRQs per second, per card.
Nobody's really sure what's wrong, but it causes problems for pretty
nearly everyone.

What everyone here is saying is that we're all pretty sure you're gonna
run into problems; problems that could easily be avoided by avoiding the
whole TDM400 mess in the first place.


What am I missing?


The Digium cards are unique in the world of telephony, because instead
of having an expensive DSP chip on board, they use the CPU to provide
this functionality. The challenge comes from the fact that voice is
intolerant of delay. In order to ensure that the voice processing that
goes on in the CPU is handled with no perceivable delay, the zaptel
cards have to establish a kind of pseudo-synchronous clocking with the
CPU. Unfortunately, the signalling bus on a PC isn't synchronous, at
least not in that way. The "clock" that the zaptel cards use is the IRQ
of the card, literally requesting the CPU interrupt what it's doing and
pay attention to it 1000 times per second, regardless of what it's
doing. You are proposing the use of FOUR of these cards.


Since this has caused trouble for nearly everyone who has tried it,
everyone is suggesting that you might want to give the matter some
careful thought. There _are_ less painful ways.

Cheers,

Jim.
Not so much to raise an argument as to make a few comments. Please remember that the following is mostly a synthesis based on comments in this thread. They are made in the interest of clarification and are subject to additional comments, corrections, flames, etc.

1) This is not to minimize the problem, but 1000 interrupts per second is quite a few, but not an overwhelming amount. Keep in mind that an "unbuffered" serial card (and there are more than a few of these out there) working at 19.2 Kbaud will rack up 1900 interrupts per second and the CPU doesn't even sweat. Even an old pig CPU wasn't much strained by 19.2 Kbaud. I used to run an interprocessor link between 2 PDP8's at 38.4 KBaud as a background task with a data terminal running at 19.2 KBaud, and it was hard to tell when data transfer's were going on. That computes to as many as 5700 interrupts per second. I suspect that something else is going on here.

2) While it is hard to estimate directly, if the driver is properly designed, the number of interrupts should not scale linearly. One drive should handle all cards, and part of the time there will be more than one card needing servicing on an interrupt. If the driver does not test for this, then it should.

3) No card is truly "unbuffered". That would make the interrupt service headroom nearly zero. You would have to get to the card in the time it takes to transfer a single bit, that's only 15.6 microseconds at 64K. One must use at least a single buffer. From the comments made earlier in this thread, clearly the Digium card is using at least an 8-deep buffer. In fact, I suspect that the buffer is a standard 16-byte FIFO with the threshold set at 8 bytes. What this means is that it would be possible to handle all 4 cards in a single interrupt, depending of course on the design of the buffer, by always emptying all 4 card's buffers on any interrupt. In fact, only one card (i.e., the master) should even have interrupts enabled!

4) All of the preceding notwithstanding, I suspect that the real issue has nothing (or little) to do with interrupt load, but, given that the card uses CPU cycles rather than a DSP, the problem is more likley CPU overload from data handling, which in turn, causes missed interrupts. The point here is that the card designers made the choice to use the CPU as a DSP, assuming that a server box+card was cheaper than a more expensive card. In otherwords, the combination was intended to be the telephony apparatus, not just the card. If you make that assumption, then those who are successfully using more than one card per CPU are getting a really good deal. The second, third ... card is essentially a freebie.

Sincerely,

Stephen R. Besch

_______________________________________________
Asterisk-Users mailing list
[EMAIL PROTECTED]
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to