httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <b...@wstoddard.com>
Subject Apache 2 instruction count profile (head as of ~15:00 EDT July 10)
Date Wed, 10 Jul 2002 20:27:18 GMT
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

<snip>

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


Mime
View raw message