[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