[Asterisk-Dev] Asterisk 99% cpu with libunicall

Andres Maduro andres at iconos.com.ve
Tue May 31 15:23:24 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