[Asterisk-Dev] Asterisk 99% cpu with libunicall

Andres Maduro andres at iconos.com.ve
Tue May 31 16:33:11 MST 2005


Hi, 

I am sending this message again, I think it did not went through. Sorry if it is duplicate.

I have been experiencing 99% of cpu usage by the asterisk 1.0.7 process under very low loads with an E1 interface and 2 Digium cards (1 Wildcard TE110P and 1 Wildcard TDM400P).

The high load occurs when there are 2,3,4 or more calls with 99% of cpu usage.  When this occurs, the audio on all calls are bad or maybe on almost all calls.

The other problem I have is that Snom sip phones can't play dtmf on the chan_unicall channel under * 1.0.7 using either dtmfmode (info, rfc2833 or
inband).   I have tested the same configuration with * 1.0.4 and 1.0.5 and
dtmf from sip phones through SIP INFO work great.

I would like to expose what I am using, what I have done to try to fix the high cpu usage.

We are using:

- Linux Kernel 2.4.21-32.0.1.EL from CentOS distro (bundled with Asterisk at Home version 1.0 ISO)
- Asterisk 1.0.7 which is bundled with Asterisk at Home 1.0 ISO distro.
- Spandsp-0.0.2pre11 bundled with Asterisk at Home
- I have installed libunicall-0.0.2pre2 with libmfcr2 and libsupertone (yes this is the latest one newer than 0.0.2pre19)

What I have done:

So far I have tested the following to see if the 99% CPU go away:

- Changed motherboard to see if the problem is related to this.
	- I have tested 2 uniprocessor motherboards (One Gbyte, the other
Asrock)
	- I have tested and old Pentium III dual motherboard with APIC controller with same high cpu.
- I have tested running * with and without echo cancel via unicall.conf
- I have tried all possible echo cancellers by recompiling zaptel with zconfig.h options
- I have renamed mpg123 process to see if this is the problem, it is not.
- I have created a simple extensions.conf with the same problem (I thought that dialparties.agi that came with Asterisk at home could be causing this problem or other agi scripts or macros)
- I have tried to boot the kernel with noapic and acpi=no kernel directives.
- I have tried hdparm -u1 on all /dev/hdx devices with the same result.
- I have checked for irq misses with zttool and find none.
- I have disabled serial port, usb, parallel port, audio, etc, in order to free as much irqs as I could.
- I ran strace <* pid> during a 99% of cpu load, and found lots of this:

write(31, "\0\7\20{\354\221\230\207\233\340f\35\32\31\26dA\314\342"...,160)
= -1 EAGAIN (Resource temporarily unavailable) write(31,"\0\7\20{\354\221\230\207\233\340f\35\32\31\26dA\314\342"..., 160) = -1 EAGAIN (Resource temporarily unavailable) write(31,"\0\7\20{\354\221\230\207\233\340f\35\32\31\26dA\314\342"..., 160) = -1 EAGAIN (Resource temporarily unavailable) write(31,"\0\7\20{\354\221\230\207\233\340f\35\32\31\26dA\314\342"..., 160) = -1 

I tried to compile with debug and DEBUG=-g -pg without much success.  I could not compile it after I remove from all Makefiles the -fomit-frame-pointer which is incompatible with -pg.  I will be trying again to compile it now that our customer has gone for today.

Any help, thoughts on how to isolate this annoying behaviour is much appreciated.

I am willing to provide additional information if you guide me in what you need.

Kind regards.
			Andres Maduro.


More information about the asterisk-dev mailing list