Return-Path: Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 20308 invoked by uid 500); 10 Jul 2002 20:23:51 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 20284 invoked from network); 10 Jul 2002 20:23:50 -0000 From: "Bill Stoddard" To: Subject: Apache 2 instruction count profile (head as of ~15:00 EDT July 10) Date: Wed, 10 Jul 2002 16:27:18 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Importance: Normal X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N This is with Ryan's poll patch and some of my patches to mod_cache and mod_mem_cache (which I will publish later on). Unfortuanetely the results are difficult to compare with earlier results because my test tree was just too polluted with patches for Ryan's patch to cleanly apply. Still, the overall direction is good (7.5% reduction in instruction count). The difference between Jeff's wait_for_timeout and Ryan's is noise in this comparison. However, I suspect the apr_poll() is better in general and is contributing to the improvement. use ab to generate the test load: ab -k -n 100000 -c 1 host/500bytefile.html Here is the old (lots of patches): Space % Ticks ===== ==== ===== User 19.8 10304 Shared Library 54.1 28107 Kernel 26.0 13506 Total 51917 Here is the latest: Space % Ticks ===== ==== ===== User 18.4 8850 Shared Library 53.3 25557 Kernel 28.3 13569 Total 47976 /usr/local/apachetest/bin/httpd : Subroutine Name Source File Visit Enter % Ticks =============== =========== ===== ===== ==== ===== .ap_rgetline_core protocol.c 36 6 1.5 709 .get_filter_handle util_filter.c 2 2 1.2 591 .core_input_filter core.c 23 7 1.1 513 .add_any_filter_handle util_filter.c 12 6 1.0 478 .fix_hostname vhost.c 40 1 0.9 446 .core_output_filter core.c 16 2 0.8 405 .net_time_filter core.c 24 8 0.8 395 .ap_get_mime_headers_core protocol.c 16 1 0.6 302 .add_any_filter util_filter.c 1 1 0.5 257 .ap_getword_white util.c 28 2 0.5 254 ._ptrgl ptrgl.s 42 42 0.5 252 .ap_find_token util.c 5 3 0.5 229 .ap_get_brigade util_filter.c 34 17 0.5 221 .ap_recent_rfc822_date util_time.c 15 1 0.4 190 ._moveeq moveeq.s 10 10 0.4 185 .ap_content_length_filter protocol.c 6 1 0.3 158 .ap_set_keepalive http_protocol.c 12 1 0.3 148 .ap_read_request protocol.c 20 1 0.3 144 .isspace glink.s 22 22 0.3 132 .apr_palloc glink.s 22 22 0.3 132 .read_request_line protocol.c 11 1 0.3 125 .ap_pass_brigade util_filter.c 10 5 0.3 121 .log_error_core log.c 4 4 0.3 120 .isalpha glink.s 19 19 0.2 114 .tolower glink.s 19 19 0.2 114 .ap_http_filter http_protocol.c 8 2 0.2 99 .ap_log_error log.c 8 4 0.2 88 .basic_http_header http_protocol.c 13 1 0.2 84 .ap_update_child_status_from_indexes scoreboard.c 2 2 0.2 80 .form_header_field http_protocol.c 10 2 0.2 78 .apr_table_get glink.s 12 12 0.2 72 .ap_discard_request_body http_protocol.c 4 1 0.1 71 .cached_explode util_time.c 5 1 0.1 65 .core_create_req core.c 5 1 0.1 58 .apr_brigade_write glink.s 8 8 0.1 48 .ap_run_create_request request.c 3 1 0.1 45 .writev_it_all core.c 2 1 0.1 45 .check_pipeline_flush http_request.c 5 1 0.1 44 .ap_parse_uri protocol.c 3 1 0.1 44 .basic_http_header_check http_protocol.c 3 1 0.1 42 .apr_setsocketopt glink.s 7 7 0.1 42 .apr_brigade_cleanup glink.s 7 7 0.1 42 .http_create_request http_core.c 4 1 0.1 38 .apr_table_make glink.s 6 6 0.1 36 .apr_brigade_split_line glink.s 6 6 0.1 36 .apr_brigade_create glink.s 6 6 0.1 36 .ap_process_http_connection http_core.c 5 0 0.1 35 .ap_run_post_read_request protocol.c 2 1 0.1 34 .ap_run_log_transaction protocol.c 2 1 0.1 33 .ap_set_byterange http_protocol.c 3 1 0.1 32 .remove_any_filter util_filter.c 2 2 0.1 31 .ap_update_vhost_from_headers vhost.c 3 1 0.1 31 .ap_byterange_filter http_protocol.c 4 1 0.1 29 .avoid_xlc_bug core.c 7 7 0.1 28 .ap_run_quick_handler config.c 2 1 0.1 28 .ap_process_request http_request.c 5 1 0.1 27 .lookup_builtin_method http_protocol.c 1 1 0.1 27 .ap_make_method_list http_protocol.c 3 1 0.1 25 .apr_brigade_puts glink.s 4 4 0.1 24 .strchr glink.s 4 4 0.1 24 .apr_table_addn glink.s 4 4 0.1 24 .memset glink.s 4 4 0.1 24 .strlen glink.s 4 4 0.1 24 .ap_add_output_filters_by_type core.c 1 1 0.0 23 .ap_set_content_type http_protocol.c 2 1 0.0 21 .create_empty_config config.c 3 1 0.0 21 .ap_set_content_length protocol.c 3 1 0.0 20 .ap_method_number_of http_protocol.c 3 1 0.0 20 .ap_remove_output_filter util_filter.c 2 2 0.0 20 .ap_index_of_response http_protocol.c 1 1 0.0 19 .ap_finalize_request_protocol protocol.c 2 1 0.0 19 .ap_add_output_filter_handle util_filter.c 3 3 0.0 18 .apr_brigade_destroy glink.s 3 3 0.0 18 .__divi64 glink.s 3 3 0.0 18 .ap_basic_http_header http_protocol.c 3 1 0.0 15 .ap_update_child_status scoreboard.c 2 2 0.0 14 .ap_add_input_filter_handle util_filter.c 2 2 0.0 12 .strncasecmp glink.s 2 2 0.0 12 .apr_table_unset glink.s 2 2 0.0 12 .apr_table_setn glink.s 2 2 0.0 12 .isdigit glink.s 2 2 0.0 12 .ap_add_output_filter util_filter.c 1 1 0.0 8 .ap_get_limit_req_body core.c 1 1 0.0 7 .apr_uri_parse glink.s 1 1 0.0 6 .apr_pstrmemdup glink.s 1 1 0.0 6 .apr_pool_destroy glink.s 1 1 0.0 6 .apr_bucket_eos_create glink.s 1 1 0.0 6 .apr_psprintf glink.s 1 1 0.0 6 .apr_brigade_split glink.s 1 1 0.0 6 .apr_bucket_flush_create glink.s 1 1 0.0 6 .apr_pool_create_ex glink.s 1 1 0.0 6 .apr_table_overlap glink.s 1 1 0.0 6 .apr_sendv glink.s 1 1 0.0 6 .apr_pstrdup glink.s 1 1 0.0 6 .ap_get_output_filter_handle util_filter.c 2 2 0.0 6 .apr_time_now glink.s 1 1 0.0 6 .apr_off_t_toa glink.s 1 1 0.0 6 .apr_parse_addr_port glink.s 1 1 0.0 6 .apr_array_make glink.s 1 1 0.0 6 .apr_pstrcatv glink.s 1 1 0.0 6 .apr_table_mergen glink.s 1 1 0.0 6 .ap_get_server_version core.c 1 1 0.0 5 .ap_explode_recent_gmt util_time.c 1 1 0.0 4 .ap_graceful_stop_signalled worker.c 1 1 0.0 3 .ap_create_request_config config.c 1 1 0.0 1 Shlib Subroutine Source File Visit Enter % Ticks ================ =========== ===== ===== ==== ===== .apr_palloc apr_pools.c 78 78 2.9 1404 .__is_wctype_std libc/__is_wctype_std.c 66 66 2.8 1320 .apr_table_get apr_tables.c 21 17 2.6 1229 .__divu64 divu64.s 3 3 2.0 976 .__divi64 divi64.s 4 4 1.9 917 .apr_table_setn apr_tables.c 24 12 1.6 781 ._moveeq moveeq.s 11 11 1.5 735 .memchr libc/memchr.c 7 7 1.5 711 .apr_brigade_puts apr_brigade.c 5 5 1.4 682 .strcasecmp libaixinet/strcasecmp.c 7 7 1.4 681 .memset memset.s 8 8 1.3 646 .apr_brigade_write apr_brigade.c 26 11 1.2 562 .strlen strlen.s 14 14 1.2 554 .apr_setsocketopt sockopt.c 9 9 1.1 539 .isspace libc/isspace.c 46 23 1.0 460 .apr_array_push_noclear apr_tables.c 22 20 1.0 458 .apr_bucket_alloc apr_buckets_alloc.c 24 20 0.9 444 .apr_vformatter apr_snprintf.c 5 1 0.9 422 ._ptrgl ptrgl.s 70 70 0.9 420 .apr_brigade_cleanup apr_brigade.c 38 14 0.9 417 .apr_brigade_split_line apr_brigade.c 24 6 0.8 390 .isalpha libc/isalpha.c 38 19 0.8 380 .isupper libc/isupper.c 38 19 0.8 380 .make_array_core apr_tables.c 25 12 0.7 330 .tolower libc/tolower.c 38 19 0.7 323 .apr_bucket_free apr_buckets_alloc.c 24 20 0.6 272 .strchr strchr.s 5 5 0.6 268 .allocator_alloc apr_pools.c 5 5 0.5 258 ._ptrgl ptrgl.s 39 39 0.5 234 .allocator_free apr_pools.c 5 5 0.5 227 .apr_palloc glink.s 37 37 0.5 222 .strncasecmp libaixinet/strcasecmp.c 3 3 0.5 216 .apr_brigade_create apr_brigade.c 24 8 0.5 216 ._moveeq moveeq.s 13 13 0.4 214 .apr_pool_cleanup_register apr_pools.c 18 9 0.4 207 .apr_table_overlap apr_tables.c 13 1 0.4 205 .cache_url_handler mod_cache.c 23 1 0.4 195 .apr_table_make apr_tables.c 30 10 0.4 190 .apr_bucket_simple_split apr_buckets_simple.c 12 6 0.4 186 .pthread_mutex_lock libpthreads/mutex.c 6 3 0.4 177 .overlap_hash apr_tables.c 4 4 0.4 168 .apr_table_unset apr_tables.c 3 2 0.3 160 .apr_table_addn apr_tables.c 8 4 0.3 156 .unserialize_table mod_mem_cache.c 14 4 0.3 151 .heap_bucket_destroy apr_buckets_heap.c 24 9 0.3 147 .find_entry cache_hash.c 3 1 0.3 140 .heap_bucket_read apr_buckets_heap.c 14 14 0.3 126 .apr_bucket_alloc glink.s 20 20 0.3 120 .pthread_mutex_unlock libpthreads/mutex.c 6 3 0.3 120 .apr_uri_parse apr_uri.c 3 1 0.3 120 .socket_bucket_read apr_buckets_socket.c 12 2 0.2 118 .apr_pstrdup apr_strings.c 17 5 0.2 116 .apr_bucket_simple_copy apr_buckets_simple.c 12 6 0.2 114 .apr_bucket_shared_split apr_buckets_refcount.c 12 6 0.2 108 .apr_recv sendrecv.c 8 2 0.2 106 .apr_bucket_heap_make apr_buckets_heap.c 9 3 0.2 96 .apr_table_mergen apr_tables.c 2 1 0.2 93 .cache_out_filter mod_cache.c 8 1 0.2 86 .apr_pstrcatv apr_strings.c 6 1 0.2 84 .open_entity mod_mem_cache.c 8 1 0.2 81 .apr_poll poll.c 6 1 0.2 74 .cache_select_url cache_storage.c 8 1 0.2 72 .read libc/read.c 5 2 0.1 70 .conv_10 apr_snprintf.c 6 2 0.1 70 .apr_pool_create_ex apr_pools.c 3 1 0.1 67 .apr_off_t_toa apr_strings.c 5 1 0.1 64 .read_headers mod_mem_cache.c 11 1 0.1 64 .apr_parse_addr_port sockaddr.c 5 1 0.1 61 .apr_table_setn glink.s 10 10 0.1 60 .isdigit libc/isdigit.c 6 3 0.1 60 .apr_pool_cleanup_kill apr_pools.c 3 3 0.1 59 .ap_cache_get_cachetype cache_util.c 3 1 0.1 57 ._Errno libc/errno.c 6 3 0.1 57 .time_base_to_time libc/POWER/time_base_to_time.c 4 1 0.1 56 .apr_bucket_shared_destroy apr_buckets_refcount.c 9 9 0.1 54 .apr_bucket_shared_destroy glink.s 9 9 0.1 54 .apr_pool_destroy apr_pools.c 7 1 0.1 53 .apr_bucket_heap_create apr_buckets_heap.c 6 2 0.1 52 .apr_brigade_destroy apr_brigade.c 9 3 0.1 51 .apr_pvsprintf apr_pools.c 2 1 0.1 49 .apr_pool_cleanup_register glink.s 8 8 0.1 48 .run_cleanups apr_pools.c 6 1 0.1 48 .apr_thread_mutex_unlock thread_mutex.c 6 3 0.1 48 .__pthread_geterrno_addr libpthreads/lib_lock.c 4 4 0.1 48 .apr_thread_mutex_lock thread_mutex.c 6 3 0.1 48 .apr_palloc glink.s 8 8 0.1 48 .apr_wait_for_io_or_timeout waitio.c 2 1 0.1 47 .apr_pstrmemdup apr_strings.c 6 2 0.1 46 .apr_sendv sendrecv.c 2 1 0.1 46 .ap_cache_tokstr cache_util.c 5 1 0.1 45 .ap_cache_liststr cache_util.c 4 2 0.1 42 .gettimeofday libc/gettimeofday.c 4 1 0.1 42 .read_body mod_mem_cache.c 3 1 0.1 42 .apr_bucket_eos_create apr_buckets_eos.c 6 2 0.1 40 .islower libc/islower.c 4 2 0.1 40 .spin_unlock_global_ppc_up locks_ppc_up.s 3 3 0.1 39 .match_headers mod_setenvif.c 1 1 0.1 38 .apr_bucket_simple_split glink.s 6 6 0.1 36 .strcasecmp glink.s 6 6 0.1 36 .memchr glink.s 6 6 0.1 36 .memcmp memcmp.s 1 1 0.1 36 .spin_lock_global_ppc_up locks_ppc_up.s 3 3 0.1 33 .cache_run_open_entity cache_storage.c 2 1 0.1 32 .multi_log_transaction mod_log_config.c 1 1 0.1 31 .cache_update cache_cache.c 5 1 0.1 31 .apr_atomic_dec apr_atomic.c 4 1 0.1 31 .apr_pstrndup apr_strings.c 4 1 0.1 31 .strlen glink.s 5 5 0.1 30 .apr_table_get glink.s 5 5 0.1 30 ._ptrgl ptrgl.s 5 5 0.1 30 .strlen glink.s 5 5 0.1 30 .apr_atomic_inc apr_atomic.c 4 1 0.1 29 .memcache_gdsf_algorithm mod_mem_cache.c 3 2 0.1 28 .read_real_time read_real_time.s 1 1 0.1 28 .decrement_refcount mod_mem_cache.c 2 1 0.1 26 .apr_time_now time.c 3 1 0.1 25 .apr_table_make glink.s 4 4 0.1 24 .apr_allocator_free glink.s 4 4 0.1 24 ._ptrgl ptrgl.s 4 4 0.1 24 ._ptrgl ptrgl.s 4 4 0.1 24 .apr_allocator_alloc glink.s 4 4 0.1 24 .apr_bucket_free glink.s 4 4 0.1 24 .apr_bucket_immortal_create apr_buckets_simple.c 3 1 0.1 24 .ap_log_error glink.s 4 4 0.1 24 .cache_read_entity_headers cache_storage.c 3 1 0.0 22 .cache_pq_change_priority cache_pqueue.c 3 1 0.0 21 .apr_bucket_socket_create apr_buckets_socket.c 3 1 0.0 21 .writev libc/write.c 2 1 0.0 20 .apr_bucket_flush_create apr_buckets_flush.c 3 1 0.0 20 .apr_array_make apr_tables.c 3 1 0.0 20 .get_revent poll.c 1 1 0.0 19 .get_event poll.c 1 1 0.0 19 .apr_brigade_write glink.s 3 3 0.0 18 ._Errno glink.s 3 3 0.0 18 .apr_pstrdup glink.s 3 3 0.0 18 .apr_psprintf apr_pools.c 2 1 0.0 18 .pthread_mutex_unlock glink.s 3 3 0.0 18 .apr_bucket_shared_make glink.s 3 3 0.0 18 .apr_brigade_split apr_brigade.c 2 1 0.0 18 .apr_pool_cleanup_kill glink.s 3 3 0.0 18 .apr_bucket_shared_make apr_buckets_refcount.c 3 3 0.0 18 .pthread_mutex_lock glink.s 3 3 0.0 18 .cache_pq_percolate_down cache_pqueue.c 2 1 0.0 17 .minchild cache_pqueue.c 1 1 0.0 17 .cache_generate_key_default cache_storage.c 2 1 0.0 17 .simple_bucket_read apr_buckets_simple.c 2 2 0.0 16 .cache_hash_get cache_hash.c 2 1 0.0 14 .apr_bucket_eos_make apr_buckets_eos.c 2 2 0.0 14 .free_proc_chain apr_pools.c 1 1 0.0 14 .cache_find cache_cache.c 2 1 0.0 13 .read glink.s 2 2 0.0 12 .apr_palloc glink.s 2 2 0.0 12 .islower glink.s 2 2 0.0 12 .ap_cache_liststr glink.s 2 2 0.0 12 .apr_bucket_heap_create glink.s 2 2 0.0 12 .apr_thread_mutex_lock glink.s 2 2 0.0 12 .apr_recv glink.s 2 2 0.0 12 .ap_pass_brigade glink.s 2 2 0.0 12 .ap_get_output_filter_handle glink.s 2 2 0.0 12 .apr_thread_mutex_unlock glink.s 2 2 0.0 12 .kread glink.s 2 2 0.0 12 .apr_setsocketopt glink.s 2 2 0.0 12 .memset glink.s 2 2 0.0 12 .cache_read_entity_body cache_storage.c 2 1 0.0 10 .apr_bucket_flush_make apr_buckets_flush.c 1 1 0.0 7 .apr_bucket_socket_make apr_buckets_socket.c 1 1 0.0 7 .memcache_inc_frequency mod_mem_cache.c 1 1 0.0 7 .apr_bucket_immortal_make apr_buckets_simple.c 1 1 0.0 7 .ap_cache_tokstr glink.s 1 1 0.0 6 .poll glink.s 1 1 0.0 6 .memset glink.s 1 1 0.0 6 .cache_hash_get glink.s 1 1 0.0 6 .apr_thread_mutex_lock glink.s 1 1 0.0 6 .kwritev glink.s 1 1 0.0 6 .apr_atomic_inc glink.s 1 1 0.0 6 .apr_poll glink.s 1 1 0.0 6 .cache_find glink.s 1 1 0.0 6 .memcmp glink.s 1 1 0.0 6 .strchr glink.s 1 1 0.0 6 .strncasecmp glink.s 1 1 0.0 6 .gettimeofday glink.s 1 1 0.0 6 .ap_basic_http_header glink.s 1 1 0.0 6 .ap_set_keepalive glink.s 1 1 0.0 6 .__divi64 glink.s 1 1 0.0 6 .ap_set_content_type glink.s 1 1 0.0 6 .apr_getsocketopt sockopt.c 1 1 0.0 6 .apr_brigade_puts glink.s 1 1 0.0 6 .apr_getsocketopt glink.s 1 1 0.0 6 .apr_brigade_create glink.s 1 1 0.0 6 .apr_pstrmemdup glink.s 1 1 0.0 6 .apr_bucket_eos_create glink.s 1 1 0.0 6 .cache_pq_change_priority glink.s 1 1 0.0 6 .memchr glink.s 1 1 0.0 6 .apr_pstrndup glink.s 1 1 0.0 6 .apr_bucket_immortal_create glink.s 1 1 0.0 6 .apr_bucket_heap_make glink.s 1 1 0.0 6 .writev glink.s 1 1 0.0 6 .apr_pool_cleanup_register glink.s 1 1 0.0 6 .ap_remove_output_filter glink.s 1 1 0.0 6 .apr_wait_for_io_or_timeout glink.s 1 1 0.0 6 .isdigit glink.s 1 1 0.0 6 .ap_add_output_filter glink.s 1 1 0.0 6 .apr_atomic_dec glink.s 1 1 0.0 6 .strcasecmp glink.s 1 1 0.0 6 .isspace glink.s 1 1 0.0 6 .apr_pstrdup glink.s 1 1 0.0 6 .cache_read_entity_body glink.s 1 1 0.0 6 .ap_cache_get_cachetype glink.s 1 1 0.0 6 .memset glink.s 1 1 0.0 6 .apr_vformatter glink.s 1 1 0.0 6 .cache_update glink.s 1 1 0.0 6 .apr_thread_mutex_unlock glink.s 1 1 0.0 6 .cache_select_url glink.s 1 1 0.0 6 .apr_bucket_destroy_noop apr_buckets.c 4 4 0.0 4 .apr_allocator_free apr_pools.c 4 4 0.0 4 .apr_allocator_alloc apr_pools.c 4 4 0.0 4 .apr_allocator_owner_get apr_pools.c 2 2 0.0 4 .brigade_cleanup apr_brigade.c 4 4 0.0 4 .eos_bucket_read apr_buckets_eos.c 1 1 0.0 4 .apr_allocator_mutex_get apr_pools.c 2 2 0.0 4 .memcache_get_pos mod_mem_cache.c 1 1 0.0 3