[asterisk-dev] Identifying Asterisk threads

Anil Gupta anilgupta83 at gmail.com
Tue Mar 16 05:34:40 CDT 2010


Hi Pavel,

It might be netconsole thread.

If you are on debian based system like ubuntu, try removing -c parameter in
/etc/init.d/asterisk from following line.

start-stop-daemon --start --oknodo --background --exec $DAEMON -- $ASTARGS
-c

I have faced similar problem this worked for me, not sure if it will resolve
your problem.

Thanks,

Anil

On Tue, Mar 16, 2010 at 3:28 PM, Pavel Troller <patrol at sinus.cz> wrote:

> Hi!
>  I have a problem with one of Asterisk installations. It serves
> as a conference bridge and most of the time there is no traffic. When a new
> call arrives after a longer time of idleness, one of Asterisk threads
> awakes
> up and runs at 100% CPU utilization for a time, which is proportional to
> the
> time the system was idle before. For example, when there were two hours of
> idle, the thread runs about 3 seconds. When there was one week of idle, the
> thread runs several minutes. During this time, the Asterisk performance is
> degraded, including choppy playback of announcements and improper inband
> DTMF
> detection. It is on a 8-core machine, where using one core fully should not
> influence the total system performance. When the thread finishes its work,
> it's going to (almost) sleep again and Asterisk performance returns to
> normal.
>  I can display the asterisk threads:
> bigmeat1*CLI> core show threads
> 0x41b5e950 netconsole           started at [ 1103] asterisk.c listener()
> 0x40e33950 monitor_sig_flags    started at [ 3527] asterisk.c main()
> 0x4031e950 tps_processing_function started at [  451] taskprocessor.c
> ast_taskprocessor_get()
> 0x41cd1950 scan_thread          started at [  516] pbx_spool.c
> load_module()
> 0x4205d950 do_monitor           started at [20996] chan_sip.c
> restart_monitor()
> 0x40ad7950 desc->accept_fn      started at [  462] tcptls.c
> ast_tcptls_server_start()
> 0x4042a950 lock_broker          started at [  463] func_lock.c
> load_module()
> 0x41c55950 do_monitor           started at [ 3513] chan_mgcp.c
> restart_monitor()
> 0x411bd950 do_timing            started at [  482] res_timing_pthread.c
> init_timing_thread()
> 0x40fb4950 do_parking_thread    started at [ 4589] features.c
> ast_features_init()
> 0x413e7950 tps_processing_function started at [  451] taskprocessor.c
> ast_taskprocessor_get()
> 0x41906950 do_devstate_changes  started at [  751] devicestate.c
> ast_device_state_engine_init()
> 0x41f76950 logger_thread        started at [ 1009] logger.c init_logger()
> 0x40932950 listener             started at [ 1162] asterisk.c
> ast_makesocket()
> 0x4188a950 tps_processing_function started at [  451] taskprocessor.c
> ast_taskprocessor_get()
> 0x41ae2950 canary_thread        started at [ 3369] asterisk.c main()
> 16 threads listed.
>  I can display system threads:
> root at bigmeat1:~# ps axumw |less
> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
> ...
> root      3472  0.0  0.3 498956 15496 pts/1    -    08:23   0:04
> /opt/asterisk/sbin/asterisk -p -f -I -vvvg -c
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:03 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
> root         -  0.0    -      -     - -        Sl   08:23   0:00 -
>  As you can see, the Asterisk was started at 8:23, there was no call until
> 10:30. Before the call, the main process showed 0:01 of CPU time, during
> the call, the time increased by 3 seconds (in the first 3 seconds of call)
> and then the time consumption returned to normal. You can also see an
> individual thread, which was at 0:00 before the call, and then promptly
> increased to 0:03 and also stopped. This thread is IMHO responsible for
> the problem.
>  Can I map the threads displayed by ps to the ones shown by core show
> threads?
> Which thread could be the time-consuming one ? I've tested with internal
> timing
> (-I flag) as well as without it and there is no difference. DAHDI timer not
> used. The problem occurs during calls of any type, for example this one was
> to
> the Milliwatt application.
>  It's Asterisk 1.6.1.7.
>  With regards, Pavel.
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20100316/e6e2bfbd/attachment.htm 


More information about the asterisk-dev mailing list