httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pane <bri...@apache.org>
Subject new performance profiling data for httpd-2.1
Date Mon, 04 Jul 2005 05:59:09 GMT
I spent some time today profiling the latest httpd-2.1 trunk on OS X,  
using
the Shark application from Apple's developer tools bundle.  Shark works
by sampling the program counter of a monitored process every N  
instructions
or every N microseconds.  It's somewhat like OProfile, but with a  
nice GUI for
visualizing the data.

The test case I monitored was:
* JMeter requesting a 1KB file from the httpd, one request at a time,  
with
   no delay between requests
* Prefork MPM with default config settings during build
* Symlink checking and .htaccess file checking turned off in the  
runtime config
* No server-side-include processing invoked
* No mod_cache

I found a lot of interesting things:

* Over 60% of the httpd's CPU time was spent in userspace, rather than
   the kernel.  That's higher than I'd expected for static file  
delivery.

* We're spending a surprising amount of time creating pollsets (please
   see my message on dev@apr earlier today for details).  It looks like
   this overhead is incurred both when opening files and when setting
   aside file buckets (within core_output_filter).

* Our old friends file_walk() and directory_walk() collectively  
account for
   over 8% of the total CPU time.  It's probably possible to speed up  
both, but
   I haven't looked at them in detail in over a year.

* Another 2.5% of the total is in find_ct(), in mod_mime.c.

* mod_log_config comprises just under 5% of the total CPU usage.
   Date/time formatting is part of the reason for this (even with the  
caching
   that's already in place).

* ap_set_last_modified() is another 2.5% of the total.  Date/time  
formatting
   accounts for most of this.

* basic_http_header() accounts for another 2.5%.  About a third of  
this time
   is spent formatting the Date field in the response header.

* ap_discard_request_body(): 1.5%.

At a high level, the call graph looks like this:
     Self    Total    Library  Symbol
     ----    -----    -------  ------
     0.0%    63.6%    httpd    main
     0.0%    63.6%    httpd     ap_mpm_run
     0.0%    63.6%    httpd      make_child
     0.0%    63.5%    httpd       child_main
     0.0%    62.2%    httpd        ap_run_process_connection
     0.0%    62.2%    httpd         ap_process_http_connection
     0.2%    45.9%    httpd          ap_process_request
     0.1%    20.4%    httpd           ap_invoke_handler
     0.4%    15.5%    httpd           ap_process_request_internal
     0.1%     4.8%    httpd           ap_run_log_transaction
     0.5%     2.4%    httpd           ap_core_output_filter
     0.0%     1.0%    httpd           ap_http_filter
     0.1%     0.6%    httpd           ap_finalize_request_protocol
     0.1%     0.1%    httpd           ap_core_input_filter
     0.1%     0.1%    httpd            
ap_update_child_status_from_indexes
     0.1%     0.1%    httpd           ap_run_quick_handler
     0.1%     0.1%    httpd           ap_update_child_status
     0.1%     0.1%    libapr-1.0      apr_file_read
     0.1%     0.1%    httpd           writev_it_all

The remaining ~37% of the samples are in kernel space.

At the end of this message I've included a more detailed profile, as  
generated by Shark's
"report" feature.  I've left out the kernel-space parts, as well as  
all functions in user-space
whose total self+children time was less than 0.1% of the total.   
There are a few oddities
in the data that I think represent sampling errors--e.g., call stacks  
that are impossible.
But the overall pattern of the data was consistent across many test  
runs, so it appears
to be generally valid for performance optimization work.

Finally, I've saved the Shark data file, including annotated source  
code.  It's
available at  <http://people.apache.org/~brianp/httpd- 
trunk-20050703.mshark>.
Loading this data file into Shark is perhaps the best way to study  
the data.
A few important caveats, though:
* The data file is 10MB in size.
* It's in a binary format readable only by Shark on OS X (found under
   /Developer/Applications/Performance Tools/ if you've installed  
Apple's
   "Developer Tools" or "Xcode" package).

-Brian

More detailed profile:
# Report 1 - httpd-trunk-20050703.mshark - Time Profile (CPU Cycles -  
G4+) of httpd
SharkProfileViewer
# Generated from the visible portion of the outline view
+ 63.6% start (httpd)
| + 63.6% _start (httpd)
| | + 63.6% main (httpd)
| | | + 63.6% ap_mpm_run (httpd)
| | | | + 63.6% make_child (httpd)
| | | | | + 63.5% child_main (httpd)
| | | | | | + 62.2% ap_run_process_connection (httpd)
| | | | | | | + 62.2% ap_process_http_connection (httpd)
| | | | | | | | + 45.9% ap_process_request (httpd)
| | | | | | | | | + 20.4% ap_invoke_handler (httpd)
| | | | | | | | | | + 19.7% ap_run_handler (httpd)
| | | | | | | | | | | + 18.3% default_handler (httpd)
| | | | | | | | | | | | + 8.1% ap_byterange_filter (httpd)
| | | | | | | | | | | | | + 7.7% ap_content_length_filter (httpd)
| | | | | | | | | | | | | | + 7.3% ap_http_header_filter (httpd)
| | | | | | | | | | | | | | | + 2.5% basic_http_header (httpd)
| | | | | | | | | | | | | | | | - 0.6% ap_recent_rfc822_date (httpd)
| | | | | | | | | | | | | | | | - 0.5% form_header_field (httpd)
| | | | | | | | | | | | | | | | - 0.4% apr_brigade_writev  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | | | | | - 0.4% cached_explode (httpd)
| | | | | | | | | | | | | | | |   0.2% __stub_getrealaddr  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | | | | |   0.2% __memcpy (commpage  
[libSystem.B.dylib])
| | | | | | | | | | | | | | | |   0.1% ap_get_server_version (httpd)
| | | | | | | | | | | | | | | |   0.1% strlen (libSystem.B.dylib)
| | | | | | | | | | | | | | | |   0.1% dyld_stub_apr_table_unset (httpd)
| | | | | | | | | | | | | | | + 2.0% ap_set_keepalive (httpd)
| | | | | | | | | | | | | | | | - 0.8% apr_psprintf (libapr-1.0.dylib)
| | | | | | | | | | | | | | | | - 0.5% ap_find_token (httpd)
| | | | | | | | | | | | | | | | - 0.2% apr_table_mergen  
(libapr-1.0.dylib)
| | | | | | | | | | | | | | | | - 0.2% apr_table_get (libapr-1.0.dylib)
| | | | | | | | | | | | | | | |   0.1% __divdi3 (httpd)
| | | | | | | | | | | | | | | + 1.2% ap_core_output_filter (httpd)
| | | | | | | | | | | | | | | | - 1.1% ap_save_brigade (httpd)
| | | | | | | | | | | | | | | - 0.2% basic_http_header_check (httpd)
| | | | | | | | | | | | | | | - 0.2% ap_http_header_filter (httpd)
| | | | | | | | | | | | | | |   0.2% strlen (libSystem.B.dylib)
| | | | | | | | | | | | | | | - 0.1% apr_table_do (libapr-1.0.dylib)
| | | | | | | | | | | | | | | - 0.1% apr_table_setn (libapr-1.0.dylib)
| | | | | | | | | | | | | | | - 0.1% apr_array_make (libapr-1.0.dylib)
| | | | | | | | | | | | | | |   0.1% dyld_stub_strlen (httpd)
| | | | | | | | | | | | | | |   0.1% ap_pass_brigade (httpd)
| | | | | | | | | | | | | | |   0.1% ap_make_content_type (httpd)
| | | | | | | | | | | | | | | - 0.1% apr_brigade_write  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | | | |   0.1% dyld_stub_apr_table_do (httpd)
| | | | | | | | | | | | | | - 0.3% ap_set_content_length (httpd)
| | | | | | | | | | | | | - 0.1% ap_http_header_filter (httpd)
| | | | | | | | | | | | + 2.6% ap_set_last_modified (httpd)
| | | | | | | | | | | | | + 2.2% apr_rfc822_date (libapr-1.0.dylib)
| | | | | | | | | | | | | | + 1.4% apr_time_exp_tz (libapr-1.0.dylib)
| | | | | | | | | | | | | | | + 1.4% explode_time (libapr-1.0.dylib)
| | | | | | | | | | | | | | | | - 1.3% gmtime_r (libSystem.B.dylib)
| | | | | | | | | | | | | | | |   0.1% notify_check (libSystem.B.dylib)
| | | | | | | | | | | | | |   0.2% __divdi3 (libapr-1.0.dylib)
| | | | | | | | | | | | | |   0.2% __moddi3 (libapr-1.0.dylib)
| | | | | | | | | | | | | | - 0.1% explode_time (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.1% apr_time_exp_tz (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% ap_rationalize_mtime (httpd)
| | | | | | | | | | | | + 1.5% ap_discard_request_body (httpd)
| | | | | | | | | | | | | + 0.5% ap_http_filter (httpd)
| | | | | | | | | | | | | |   0.1% apr_table_get (libapr-1.0.dylib)
| | | | | | | | | | | | | |   0.1% ap_get_limit_req_body (httpd)
| | | | | | | | | | | | | | - 0.1% apr_bucket_eos_create  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | |   0.2% __stub_getrealaddr (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.1% apr_brigade_create  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_file_open (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_unix_perms2mode (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.1% apr_brigade_cleanup  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_pool_cleanup_register  
(libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_bucket_alloc (libaprutil-1.0.dylib)
| | | | | | | | | | | | + 0.9% ap_meets_conditions (httpd)
| | | | | | | | | | | | | - 0.3% apr_table_get (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.2% __divdi3 (httpd)
| | | | | | | | | | | | | - 0.1% ap_meets_conditions (httpd)
| | | | | | | | | | | | + 0.7% apr_file_open (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.2% apr_pollset_create (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_palloc (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% __stub_getrealaddr (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% __memcpy (commpage [libSystem.B.dylib])
| | | | | | | | | | | |   0.6% ap_core_output_filter (httpd)
| | | | | | | | | | | |   0.5% ap_http_header_filter (httpd)
| | | | | | | | | | | | - 0.4% ap_set_etag (httpd)
| | | | | | | | | | | | - 0.4% ap_set_content_length (httpd)
| | | | | | | | | | | | - 0.2% apr_table_setn (libapr-1.0.dylib)
| | | | | | | | | | | |   0.2% ap_set_keepalive (httpd)
| | | | | | | | | | | |   0.2% ap_save_brigade (httpd)
| | | | | | | | | | | | - 0.2% default_handler (httpd)
| | | | | | | | | | | | - 0.1% apr_bucket_file_create  
(libaprutil-1.0.dylib)
| | | | | | | | | | | |   0.1% apr_brigade_write (libaprutil-1.0.dylib)
| | | | | | | | | | | | - 0.1% ap_http_filter (httpd)
| | | | | | | | | | | |   0.1% strcasecmp (libSystem.B.dylib)
| | | | | | | | | | | |   0.1% ap_content_length_filter (httpd)
| | | | | | | | | | | |   0.1% ap_pass_brigade (httpd)
| | | | | | | | | | | | - 0.1% apr_brigade_create (libaprutil-1.0.dylib)
| | | | | | | | | | | |   0.1% ap_allow_standard_methods (httpd)
| | | | | | | | | | | |   0.1% ap_update_mtime (httpd)
| | | | | | | | | | | |   0.1% basic_http_header_check (httpd)
| | | | | | | | | | | + 0.3% status_handler (httpd)
| | | | | | | | | | | |   0.1% getpid (libSystem.B.dylib)
| | | | | | | | | | | - 0.2% cgi_handler (httpd)
| | | | | | | | | | | - 0.2% asis_handler (httpd)
| | | | | | | | | | | - 0.1% handle_map_file (httpd)
| | | | | | | | | | |   0.1% action_handler (httpd)
| | | | | | | | | | | - 0.1% handle_autoindex (httpd)
| | | | | | | | | | | - 0.1% apr_table_setn (libapr-1.0.dylib)
| | | | | | | | | | - 0.2% ap_run_insert_filter (httpd)
| | | | | | | | | | - 0.2% ap_invoke_handler (httpd)
| | | | | | | | | | - 0.1% ap_run_fixups (httpd)
| | | | | | | | | + 15.5% ap_process_request_internal (httpd)
| | | | | | | | | | + 8.9% ap_run_map_to_storage (httpd)
| | | | | | | | | | | + 8.7% core_map_to_storage (httpd)
| | | | | | | | | | | | + 6.5% ap_directory_walk (httpd)
| | | | | | | | | | | | | + 2.6% ap_merge_per_dir_configs (httpd)
| | | | | | | | | | | | | | + 1.7% merge_core_dir_configs (httpd)
| | | | | | | | | | | | | | | - 0.4% apr_array_append (libapr-1.0.dylib)
| | | | | | | | | | | | | | |   0.2% __memcpy (commpage  
[libSystem.B.dylib])
| | | | | | | | | | | | | | |   0.1% dyld_stub_apr_array_append (httpd)
| | | | | | | | | | | | | - 0.6% ap_make_dirstr_parent (httpd)
| | | | | | | | | | | | | - 0.6% apr_stat (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.3% prep_walk_cache (httpd)
| | | | | | | | | | | | |   0.1% strlen (libSystem.B.dylib)
| | | | | | | | | | | | |   0.1% dyld_stub_memcpy (httpd)
| | | | | | | | | | | | | - 0.1% apr_filepath_merge (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% strcmp (libSystem.B.dylib)
| | | | | | | | | | | | | - 0.1% apr_filepath_root (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% core_opts_merge (httpd)
| | | | | | | | | | | | |   0.1% strchr (libSystem.B.dylib)
| | | | | | | | | | | | |   0.1% __memcpy (commpage [libSystem.B.dylib])
| | | | | | | | | | | | | - 0.1% ap_directory_walk (httpd)
| | | | | | | | | | | | |   0.1% dyld_stub_apr_filepath_root (httpd)
| | | | | | | | | | | | + 2.1% ap_file_walk (httpd)
| | | | | | | | | | | | | - 1.4% ap_regexec (httpd)
| | | | | | | | | | | | | - 0.1% prep_walk_cache (httpd)
| | | | | | | | | | | | |   0.1% strrchr (libSystem.B.dylib)
| | | | | | | | | | | | | - 0.1% ap_core_input_filter (httpd)
| | | | | | | | | | | | - 0.1% core_map_to_storage (httpd)
| | | | | | | | | | + 2.8% ap_run_type_checker (httpd)
| | | | | | | | | | | + 2.5% find_ct (httpd)
| | | | | | | | | | | | - 0.5% ap_str_tolower (httpd)
| | | | | | | | | | | | - 0.3% apr_hash_get (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.2% apr_table_setn (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.1% find_ct (httpd)
| | | | | | | | | | | | - 0.1% ap_set_content_type (httpd)
| | | | | | | | | | | | - 0.1% find_entry (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.1% ap_getword (httpd)
| | | | | | | | | | | |   0.1% bcmp (libSystem.B.dylib)
| | | | | | | | | | | |   0.1% strrchr (libSystem.B.dylib)
| | | | | | | | | | |   0.1% ap_add_output_filters_by_type (httpd)
| | | | | | | | | | - 1.3% ap_run_translate_name (httpd)
| | | | | | | | | | - 0.8% ap_run_fixups (httpd)
| | | | | | | | | | - 0.5% ap_run_access_checker (httpd)
| | | | | | | | | |   0.3% ap_getparents (httpd)
| | | | | | | | | | - 0.2% ap_run_header_parser (httpd)
| | | | | | | | | |   0.1% ap_location_walk (httpd)
| | | | | | | | | | - 0.1% ap_unescape_url (httpd)
| | | | | | | | | | - 0.1% ap_some_auth_required (httpd)
| | | | | | | | | | - 0.1% ap_process_request_internal (httpd)
| | | | | | | | | |   0.1% ap_satisfies (httpd)
| | | | | | | | | + 4.8% ap_run_log_transaction (httpd)
| | | | | | | | | | + 4.6% multi_log_transaction (httpd)
| | | | | | | | | | | + 4.4% config_log_transaction (httpd)
| | | | | | | | | | | | + 1.6% log_request_time (httpd)
| | | | | | | | | | | | | - 0.7% cached_explode (httpd)
| | | | | | | | | | | | | - 0.3% apr_snprintf (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.2% __divdi3 (httpd)
| | | | | | | | | | | | |   0.1% __memcpy (commpage [libSystem.B.dylib])
| | | | | | | | | | | | - 0.5% ap_default_log_writer (httpd)
| | | | | | | | | | | | - 0.3% ap_escape_logitem (httpd)
| | | | | | | | | | | |   0.2% strlen (libSystem.B.dylib)
| | | | | | | | | | | |   0.2% __moddi3 (libapr-1.0.dylib)
| | | | | | | | | | | |   0.2% __divdi3 (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.2% log_remote_host (httpd)
| | | | | | | | | | | | - 0.1% apr_itoa (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.1% apr_off_t_toa (libapr-1.0.dylib)
| | | | | | | | | | | | - 0.1% log_remote_logname (httpd)
| | | | | | | | | | | |   0.1% dyld_stub_apr_palloc (httpd)
| | | | | | | | | | | - 0.1% ap_net_time_filter (httpd)
| | | | | | | | | | - 0.1% ap_run_log_transaction (httpd)
| | | | | | | | | + 2.4% ap_core_output_filter (httpd)
| | | | | | | | | | - 0.4% apr_pool_clear (libapr-1.0.dylib)
| | | | | | | | | | - 0.3% apr_brigade_cleanup (libaprutil-1.0.dylib)
| | | | | | | | | | - 0.3% writev_it_all (httpd)
| | | | | | | | | |   0.2% apr_socket_send (libapr-1.0.dylib)
| | | | | | | | | | - 0.1% run_cleanups (libapr-1.0.dylib)
| | | | | | | | | |   0.1% apr_pool_cleanup_kill (libapr-1.0.dylib)
| | | | | | | | | | - 0.1% apr_file_read (libapr-1.0.dylib)
| | | | | | | | | | - 0.1% apr_file_seek (libapr-1.0.dylib)
| | | | | | | | | |   0.1% __stub_getrealaddr (libaprutil-1.0.dylib)
| | | | | | | | | |   0.1% dyld_stub_apr_file_seek (httpd)
| | | | | | | | | |   0.1% apr_brigade_destroy (libaprutil-1.0.dylib)
| | | | | | | | | | - 0.1% ap_core_output_filter (httpd)
| | | | | | | | | - 1.0% ap_http_filter (httpd)
| | | | | | | | | - 0.6% ap_finalize_request_protocol (httpd)
| | | | | | | | |   0.1% ap_core_input_filter (httpd)
| | | | | | | | |   0.1% ap_update_child_status_from_indexes (httpd)
| | | | | | | | |   0.1% ap_run_quick_handler (httpd)
| | | | | | | | |   0.1% ap_update_child_status (httpd)
| | | | | | | | |   0.1% apr_file_read (libapr-1.0.dylib)
| | | | | | | | |   0.1% writev_it_all (httpd)
| | | | | | | | | - 0.1% ap_process_request (httpd)
| | | | | | | | + 15.4% ap_read_request (httpd)
| | | | | | | | | + 4.1% ap_rgetline_core (httpd)
| | | | | | | | | | + 3.1% ap_core_input_filter (httpd)
| | | | | | | | | | | + 2.9% apr_brigade_split_line  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | + 2.1% socket_bucket_read (libaprutil-1.0.dylib)
| | | | | | | | | | | | | - 0.5% apr_socket_recv (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.2% apr_pollset_poll (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.2% apr_pollset_remove (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.2% apr_pollset_add (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% __divdi3 (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_allocator_alloc (libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% apr_wait_for_io_or_timeout  
(libapr-1.0.dylib)
| | | | | | | | | | | | |   0.1% __stub_getrealaddr  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | | - 0.1% apr_bucket_heap_make  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | |   0.1% __moddi3 (libapr-1.0.dylib)
| | | | | | | | | | | | | - 0.1% cthread_set_errno_self  
(libSystem.B.dylib)
| | | | | | | | | | | | |   0.1% kevent (libSystem.B.dylib)
| | | | | | | | | | | | | - 0.1% apr_bucket_socket_create  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | + 0.2% apr_bucket_shared_split  
(libaprutil-1.0.dylib)
| | | | | | | | | | | | |   0.1% __memcpy (commpage [libSystem.B.dylib])
| | | | | | | | | | | | | - 0.1% apr_bucket_simple_split  
(libaprutil-1.0.dylib)
| | | | | | | | | | | |   0.1% memchr (libSystem.B.dylib)
| | | | | | | | | | | | - 0.1% cerror (libSystem.B.dylib)
| | | | | | | | | | | |   0.1% apr_bucket_simple_split  
(libaprutil-1.0.dylib)
| | | | | | | | | | | |   0.1% apr_socket_recv (libapr-1.0.dylib)
| | | | | | | | | | - 0.3% ap_net_time_filter (httpd)
| | | | | | | | | |   0.1% apr_brigade_split_line (libaprutil-1.0.dylib)
| | | | | | | | | |   0.1% ap_get_brigade (httpd)
| | | | | | | | | + 4.0% ap_get_mime_headers_core (httpd)
| | | | | | | | | | + 1.7% ap_rgetline_core (httpd)
| | | | | | | | | | | - 0.7% ap_core_input_filter (httpd)
| | | | | | | | | | | - 0.2% apr_brigade_cleanup (libaprutil-1.0.dylib)
| | | | | | | | | | | - 0.1% ap_net_time_filter (httpd)
| | | | | | | | | | | - 0.1% apr_brigade_split_line  
(libaprutil-1.0.dylib)
| | | | | | | | | | |   0.1% ap_get_brigade (httpd)
| | | | | | | | | | |   0.1% apr_palloc (libapr-1.0.dylib)
| | | | | | | | | | |   0.1% __memcpy (commpage [libSystem.B.dylib])
| | | | | | | | | | - 1.0% apr_table_compress (libapr-1.0.dylib)
| | | | | | | | | | - 0.2% apr_table_addn (libapr-1.0.dylib)
| | | | | | | | | | - 0.1% ap_get_mime_headers_core (httpd)
| | | | | | | | | |   0.1% strcasecmp (libSystem.B.dylib)
| | | | | | | | | |   0.1% strchr (libSystem.B.dylib)
| | | | | | | | | |   0.1% table_reindex (libapr-1.0.dylib)
| | | | | | | | | |   0.1% ap_core_input_filter (httpd)
| | | | | | | | | |   0.1% dyld_stub_strchr (httpd)
| | | | | | | | | + 1.6% ap_update_vhost_from_headers (httpd)
| | | | | | | | | | + 0.6% apr_parse_addr_port (libapr-1.0.dylib)
| | | | | | | | | | |   0.3% strtol_l (libSystem.B.dylib)
| | | | | | | | | | |   0.1% __stub_getrealaddr (libapr-1.0.dylib)
| | | | | | | | | | - 0.2% ap_update_vhost_from_headers (httpd)
| | | | | | | | | | - 0.1% apr_table_get (libapr-1.0.dylib)
| | | | | | | | | |   0.1% atoi (libSystem.B.dylib)
| | | | | | | | | |   0.1% strtol_l (libSystem.B.dylib)
| | | | | | | | | | - 0.1% apr_itoa (libapr-1.0.dylib)
| | | | | | | | | |   0.1% dyld_stub_strtol_l (libSystem.B.dylib)
| | | | | | | | | + 1.1% ap_run_create_request (httpd)
| | | | | | | | | | + 0.6% core_create_req (httpd)
| | | | | | | | | | | - 0.2% apr_brigade_create (libaprutil-1.0.dylib)
| | | | | | | | | | | - 0.1% add_any_filter_handle (httpd)
| | | | | | | | | | - 0.3% http_create_request (httpd)
| | | | | | | | | - 0.8% ap_parse_uri (httpd)
| | | | | | | | | - 0.4% create_empty_config (httpd)
| | | | | | | | | - 0.3% apr_pool_create_ex (libapr-1.0.dylib)
| | | | | | | | | - 0.3% ap_run_post_read_request (httpd)
| | | | | | | | | - 0.3% ap_make_method_list (httpd)
| | | | | | | | | - 0.3% apr_time_now (libapr-1.0.dylib)
| | | | | | | | | - 0.2% ap_getword_white (httpd)
| | | | | | | | | - 0.2% apr_table_make (libapr-1.0.dylib)
| | | | | | | | | - 0.1% ap_read_request (httpd)
| | | | | | | | | - 0.1% apr_table_get (libapr-1.0.dylib)
| | | | | | | | |   0.1% __bzero (commpage [libSystem.B.dylib])
| | | | | | | | | - 0.1% add_any_filter_handle (httpd)
| | | | | | | | |   0.1% dyld_stub_apr_table_get (httpd)
| | | | | | | | |   0.1% ap_core_input_filter (httpd)
| | | | | | | | |   0.1% dyld_stub_apr_table_make (httpd)
| | | | | | | | |   0.1% apr_palloc (libapr-1.0.dylib)
| | | | | | | | |   0.1% ap_method_number_of (httpd)
| | | | | | | | - 0.5% apr_pool_destroy (libapr-1.0.dylib)
| | | | | | | | - 0.1% ap_process_http_connection (httpd)
| | | | | | | |   0.1% ap_update_child_status_from_indexes (httpd)
| | | | | | | |   0.1% ap_update_child_status (httpd)
| | | | | | + 0.7% ap_run_create_connection (httpd)
| | | | | | | + 0.6% core_create_conn (httpd)
| | | | | | | | - 0.3% apr_sockaddr_ip_get (libapr-1.0.dylib)
| | | | | | | | - 0.1% create_empty_config (httpd)
| | | | | | - 0.2% unixd_accept (httpd)
| | | | | | - 0.2% ap_process_connection (httpd)
| | | | | |   0.1% ap_process_http_connection (httpd)
| | | | | | - 0.1% ap_lingering_close (httpd)


Mime
View raw message