[Asterisk-Dev] Intermittent EAGAIN error when writing to zaptel driver in zt_my_write()?

Kris Boutilier Kris.Boutilier at scrd.bc.ca
Sat Apr 30 14:17:27 MST 2005


I have a group of * servers, all running todays cvs-head, who intermittently throw away data going to their t100p cards apparently because of EAGAIN errors in my_zt_write(). This creates pops and/or clicks across all the zap channels that are running at that instant and has been going on for a long time for me, but only recently was * determined to be the cause (rather than the network, T1 etc.).

It seems to be somehow host related rather than code. I'm guessing it's PCI bus congestion getting data out of the zaptel drivers and into the card because I can tickle it by flooding a nic on the same bus with an incoming stream of large ICMP echo frames. An outgoing flood has no obvious effect. It's also interesting though that the zap channels settle down right after the incoming flood starts and then doesn't misbehave (except occasionally, as normal) even if I leave the flood running for an extended period.

Is there some way I can tune buffers at the zaptel level, or would it be reasonable to implement some degree of buffering or limited retry in my_zt_write()?

For what it's worth, one host was particularly bad until the bios was brought up to the same level as the others. I did some comparisons back and forth and couldn't see anything obvious (ie. device latency timers remained the same and so on) so I can only assume they tweaked the performance of the pci bridge controllers somehow. Similarly I've tried running kernel 2.4.29 with lowlatency, realtime and other audio-performance related patches (ie. the lck patchset) and didn't notice any difference.

Any thoughts?

Kris Boutilier
Information Services Coordinator
Sunshine Coast Regional District




More information about the asterisk-dev mailing list