[asterisk-dev] asterisk profiling...
Luigi Rizzo
rizzo at icir.org
Fri Mar 24 02:19:43 MST 2006
i have decided to do a bit of profiling of the locking in asterisk,
and with a little bit of code (maybe 100 lines total)
implemented a simple 'show profile' command that lets you track
the time spent in various sections of code using the TSC timer.
I will post the code once polished.
Below, you see the output generated by putting (automatically)
wrappers around the various mutex_lock functions, slightly modified
so that we first do (and time) a trylock, and if it fails we then do
the blocking operation (not timed to avoid counting time
where the CPU is doing other things).
Note something interesting: i have no IAX devices connected, yet
iax2 does approx 200 mutex_lock per second.
Each mutex lock in my case costs between 1000 and 2000 ticks
(it is a 2 GHz CPU).
more data later...
if you have any ideas on places to profile, let me know.
the mechanism is good for counting time as well as events
or other user-defined values.
cheers
luigi
*CLI> show uptime
System uptime: 2 minutes, 54 seconds
*CLI> show profile chan
profile values (183, allocated 190)
-------------------
item scale events total_ticks avg_ticks event_name
15: [ 0] 0 0 0 mtx_lock_chanvars.c
36: [ 0] 43 47148 1096 mtx_lock_channel.c
60: [ 0] 2 3480 1740 mtx_lock_chan_agent.c
61: [ 0] 0 0 0 mtx_lock_chan_features.c
64: [ 0] 40773 40135552 984 mtx_lock_chan_iax2.c
65: [ 0] 0 0 0 mtx_lock_chan_local.c
66: [ 0] 714 1013180 1419 mtx_lock_chan_mgcp.c
67: [ 0] 0 0 0 mtx_lock_chan_oss.c
68: [ 0] 2729 3406424 1248 mtx_lock_chan_sip.c
69: [ 0] 178 509808 2864 mtx_lock_chan_skinny.c
70: [ 0] 357 513900 1439 mtx_lock_chan_zap.c
76: [ 0] 0 0 0 mtx_lock_app_chanisavail.c
77: [ 0] 0 0 0 mtx_lock_app_chanspy.c
85: [ 0] 0 0 0 mtx_lock_app_dumpchan.c
167: [ 0] 0 0 0 mtx_lock_func_channel.c
More information about the asterisk-dev
mailing list