[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: HEAD profile
I've tweaked my profiler a little so that it doesn't over-accumulate the
local times.
Here's the test008 run again, read/search only. I guess the bulk of time in
slapd_daemon_task is actually in select(), waiting for something to do. I'll
try this again with the client tasks running on a separate machine and see if
the select() time drops.
It might be interesting to #define a set of malloc macros that use alloca()
on "safe" platforms and see how things change. So many of the mallocs are for
short-lived blocks, but unfortunately a lot of them are allocated in a
subroutine and passed to the caller, so there may not be much to gain.
| local | total | | |
| sec. | % | sec. | % | calls |t. sec/call| name
|-----------|-----|-----------|-----|----------|-----------|--------
| 0.001141| 0.0| 37.458299|100.0| 1| 37.458299| main
| 0.000024| 0.0| 36.971483| 98.7| 1| 36.971483| slapd_daemon
| 0.001182| 0.0| 36.970144| 98.7| 1| 36.970144|
ldap_pvt_thread_join
| 20.558171| 54.9| 36.970040| 98.7| 1| 36.970040|
slapd_daemon_task
| 0.079525| 0.2| 30.624741| 81.8| 32| 0.957023|
ldap_int_thread_pool_wrapper
| 0.079193| 0.2| 15.444357| 41.2| 7538| 0.002049| connection_read
| 1.932401| 5.2| 13.921705| 37.2| 217099| 0.000064|
ldap_pvt_thread_mutex_unlock
| 0.085329| 0.2| 13.199726| 35.2| 7538| 0.001751|
connection_operation
| 0.187787| 0.5| 12.725430| 34.0| 7506| 0.001695| do_search
| 0.084743| 0.2| 10.680242| 28.5| 15076| 0.000708| connection_input
| 0.057025| 0.2| 9.940941| 26.5| 7538| 0.001319|
connection_op_activate
| 0.041865| 0.1| 9.669668| 25.8| 7538| 0.001283|
ldap_pvt_thread_pool_submit
| 0.261214| 0.7| 7.253292| 19.4| 7501| 0.000967| bdb_search
| 0.013000| 0.0| 4.566231| 12.2| 7538| 0.000606|
connection_return
| 0.059596| 0.2| 3.707823| 9.9| 7524| 0.000493| dnPrettyNormal
| 0.240746| 0.6| 3.369416| 9.0| 7524| 0.000448|
send_search_entry
| 0.181753| 0.5| 2.249178| 6.0| 46718| 0.000048| ber_printf
| 1.913806| 5.1| 1.913806| 5.1| 323371| 0.000006| ber_memfree
| 1.738224| 4.6| 1.798054| 4.8| 251959| 0.000007| ber_memalloc
| 0.076369| 0.2| 1.592079| 4.3| 7501| 0.000212|
send_search_result
| 0.184982| 0.5| 1.556134| 4.2| 15006| 0.000104| LDAPDN_rewrite
| 0.054637| 0.1| 1.519270| 4.1| 7522| 0.000202|
send_ldap_response
| 0.106799| 0.3| 1.463189| 3.9| 15046| 0.000097| send_ldap_ber
| 0.198365| 0.5| 1.087149| 2.9| 147725| 0.000007| ch_free
| 0.062796| 0.2| 0.948490| 2.5| 7503| 0.000126| ldap_bv2dn
| 0.129673| 0.3| 0.838993| 2.2| 26007| 0.000032| ldap_bv2rdn
| 0.210937| 0.6| 0.831580| 2.2| 217095| 0.000004|
ldap_pvt_thread_mutex_lock
| 0.138541| 0.4| 0.809240| 2.2| 22550| 0.000036| ber_scanf
| 0.016618| 0.0| 0.774863| 2.1| 2501| 0.000310|
search_candidates
By the way, the profiler also produces a call graph, which is helpful in
interpreting the flat profiles. You can download it (FunctionCheck 1.5.1) at
http://highlandsun.com/hyc if you're interested. I only use it on Linux/glibc
but I'm told that it also works on Solaris. It requires gcc to produce
profiled binaries.
-- Howard Chu
Chief Architect, Symas Corp. Director, Highland Sun
http://www.symas.com http://highlandsun.com/hyc
Symas: Premier OpenSource Development and Support