Skip to content

Inline Closure#13335

Merged
ncteisen merged 10 commits intogrpc:masterfrom
ncteisen:inline-closure
Nov 16, 2017
Merged

Inline Closure#13335
ncteisen merged 10 commits intogrpc:masterfrom
ncteisen:inline-closure

Conversation

@ncteisen
Copy link
Copy Markdown
Contributor

@ncteisen ncteisen commented Nov 9, 2017

No description provided.

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +104 [None]                                                                                +198Ki  +3.8%
  +2.1% +2.96Ki [Other]                                                                              +2.96Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +2.9%    +352 src/core/lib/iomgr/ev_poll_posix.cc                                                     +352  +2.9%
      +4.4%    +123 pollset_work                                                                            +123  +4.4%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.4%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.4%
       +10%    +130 tcp_client_connect_impl                                                                 +130   +10%
      +4.3%     +48 on_writable                                                                              +48  +4.3%
  +2.5%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.5%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.9%    +160 src/core/lib/iomgr/timer_generic.cc                                                     +160  +3.9%
       +11%    +103 grpc_timer_init                                                                         +103   +11%
       +13%     +34 grpc_timer_cancel                                                                        +34   +13%
      +2.0%     +27 run_some_expired_timers(grpc_exec_ctx*, long, long*, grpc_error*) [clone .part.2]        +27  +2.0%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.84Ki TOTAL                                                                                 +205Ki  +3.5%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



1 similar comment
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +104 [None]                                                                                +198Ki  +3.8%
  +2.1% +2.96Ki [Other]                                                                              +2.96Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +2.9%    +352 src/core/lib/iomgr/ev_poll_posix.cc                                                     +352  +2.9%
      +4.4%    +123 pollset_work                                                                            +123  +4.4%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.4%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.4%
       +10%    +130 tcp_client_connect_impl                                                                 +130   +10%
      +4.3%     +48 on_writable                                                                              +48  +4.3%
  +2.5%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.5%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.9%    +160 src/core/lib/iomgr/timer_generic.cc                                                     +160  +3.9%
       +11%    +103 grpc_timer_init                                                                         +103   +11%
       +13%     +34 grpc_timer_cancel                                                                        +34   +13%
      +2.0%     +27 run_some_expired_timers(grpc_exec_ctx*, long, long*, grpc_error*) [clone .part.2]        +27  +2.0%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.84Ki TOTAL                                                                                 +205Ki  +3.5%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

1 similar comment
@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                         cpu_time    real_time
--------------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner     -33%        -33%
BM_ClosureInitAndRun              -8%         -8%
BM_ClosureSched2OnExecCtx         -14%        -14%
BM_ClosureSchedOnExecCtx          -10%        -10%
BM_HasClearGrpcStatus<ErrorNone>  +6%         +6%

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                      cpu_time    real_time
-----------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner  -33%        -33%
BM_ClosureInitAndRun           -6%         -6%
BM_ClosureSched2OnExecCtx      -10%        -10%
BM_ClosureSched3OnExecCtx      -4%         -4%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +200 [None]                                                                                +198Ki  +3.8%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +2.9%    +352 src/core/lib/iomgr/ev_poll_posix.cc                                                     +352  +2.9%
      +4.4%    +123 pollset_work                                                                            +123  +4.4%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.4%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.4%
       +10%    +130 tcp_client_connect_impl                                                                 +130   +10%
      +4.3%     +48 on_writable                                                                              +48  +4.3%
  +2.5%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.5%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.93Ki TOTAL                                                                                 +205Ki  +3.5%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                                                                                cpu_time    real_time
---------------------------------------------------------------------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner                                                            -9%         -9%
BM_ClosureSched3OnExecCtx                                                                -19%        -19%
BM_ClosureSchedOnExecCtx                                                                 -13%        -13%
BM_HasClearGrpcStatus<ErrorWithHttpError>                                                +6%         +6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/2/0  -6%         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/262144                           +6%         +6%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +200 [None]                                                                                +198Ki  +3.8%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +2.9%    +352 src/core/lib/iomgr/ev_poll_posix.cc                                                     +352  +2.9%
      +4.4%    +123 pollset_work                                                                            +123  +4.4%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.4%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.4%
       +10%    +130 tcp_client_connect_impl                                                                 +130   +10%
      +4.3%     +48 on_writable                                                                              +48  +4.3%
  +2.5%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.5%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.93Ki TOTAL                                                                                 +205Ki  +3.5%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                                  cpu_time    real_time
-----------------------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner              -32%        -32%
BM_ClosureInitAndRun                       -7%         -7%
BM_ClosureSched3OnExecCtx                  -8%         -8%
BM_HasClearGrpcStatus<ErrorNone>           +11%        +11%
BM_IsolatedFilter<HttpServerFilter, NoOp>  -6%         -6%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +200 [None]                                                                                +198Ki  +3.8%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +2.9%    +352 src/core/lib/iomgr/ev_poll_posix.cc                                                     +352  +2.9%
      +4.4%    +123 pollset_work                                                                            +123  +4.4%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.4%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.4%
       +10%    +130 tcp_client_connect_impl                                                                 +130   +10%
      +4.3%     +48 on_writable                                                                              +48  +4.3%
  +2.5%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.5%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.93Ki TOTAL                                                                                 +205Ki  +3.5%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                                                               cpu_time    real_time
----------------------------------------------------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner                                           -19%        -19%
BM_ClosureSched2OnExecCtx                                               -6%         -6%
BM_ClosureSchedOnExecCtx                                                -4%         -4%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768  -5%         -5%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +216 [None]                                                                                +161Ki  +3.1%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +3.1%    +368 src/core/lib/iomgr/ev_poll_posix.cc                                                     +368  +3.1%
      +5.3%    +144 pollset_work                                                                            +144  +5.3%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.1%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.1%
       +11%    +138 tcp_client_connect_impl                                                                 +138   +11%
      +3.9%     +48 on_writable                                                                              +48  +3.9%
  +2.4%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.4%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.7%      +3 [Unmapped]                                                                                +3  +1.7%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.7%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.7%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.7%     +39 on_peer_checked                                                                          +39  +5.7%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.9%      +3 [Unmapped]                                                                                +3  +1.9%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.96Ki TOTAL                                                                                 +168Ki  +2.9%


****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]    +232  +0.0%

  [ = ]       0 TOTAL     +232  +0.0%



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +216 [None]                                                                                +161Ki  +3.1%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +3.1%    +368 src/core/lib/iomgr/ev_poll_posix.cc                                                     +368  +3.1%
      +5.3%    +144 pollset_work                                                                            +144  +5.3%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.1%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.1%
       +11%    +138 tcp_client_connect_impl                                                                 +138   +11%
      +3.9%     +48 on_writable                                                                              +48  +3.9%
  +2.4%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.4%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.7%      +3 [Unmapped]                                                                                +3  +1.7%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.5%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.5%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.9%     +39 on_peer_checked                                                                          +39  +5.9%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.96Ki TOTAL                                                                                 +168Ki  +2.9%


****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]    +232  +0.0%

  [ = ]       0 TOTAL     +232  +0.0%



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                      cpu_time    real_time
-----------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner  -33%        -33%
BM_ClosureReschedOnExecCtx     -6%         -6%
BM_ClosureSched2OnExecCtx      -22%        -22%
BM_ClosureSchedOnExecCtx       -13%        -13%
BM_PollAddFd                   -13%        -13%

@ncteisen
Copy link
Copy Markdown
Contributor Author

Switching reviewers because @ctiller is gone. This PR just inlines Closure because all of these functions were showing up as taking tons of cycles using internal, global profiling tools

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%    +216 [None]                                                                                +161Ki  +3.1%
  +2.1% +2.97Ki [Other]                                                                              +2.97Ki  +2.1%
  +3.1%    +981 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +981  +3.1%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +2.0%     +61 [Other]                                                                                  +61  +2.0%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
   +10%    +672 src/core/lib/iomgr/resource_quota.cc                                                    +672   +10%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.9%    +658 src/core/ext/filters/client_channel/client_channel.cc                                   +658  +4.9%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +13%     +33 [Unmapped]                                                                               +33   +13%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +3.1%    +368 src/core/lib/iomgr/ev_poll_posix.cc                                                     +368  +3.1%
      +5.3%    +144 pollset_work                                                                            +144  +5.3%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +4.3%    +192 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +192  +4.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.5%    +192 src/core/lib/surface/server.cc                                                          +192  +1.5%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +5.4%     +18 [Unmapped]                                                                               +18  +5.4%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +8.0%    +176 src/core/lib/iomgr/combiner.cc                                                          +176  +8.0%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%
      +3.9%      +3 [Unmapped]                                                                                +3  +3.9%
  +6.1%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.1%
       +11%    +138 tcp_client_connect_impl                                                                 +138   +11%
      +3.9%     +48 on_writable                                                                              +48  +3.9%
  +2.4%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.4%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.7%      +3 [Unmapped]                                                                                +3  +1.7%
  +2.1%    +176 src/core/lib/security/credentials/jwt/jwt_verifier.cc                                   +176  +2.1%
      +2.7%     +58 grpc_jwt_verifier_verify                                                                 +58  +2.7%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +9.1%     +49 on_openid_config_retrieved                                                               +49  +9.1%
      +5.3%     +14 [Unmapped]                                                                               +14  +5.3%
  +1.1%    +176 src/core/lib/surface/call.cc                                                            +176  +1.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
      +1.2%     +40 call_start_batch                                                                         +40  +1.2%
      +2.2%     +40 receiving_initial_metadata_ready                                                         +40  +2.2%
      +2.2%     +32 finish_batch_step                                                                        +32  +2.2%
      +4.2%     +16 receiving_stream_ready                                                                   +16  +4.2%
      +2.7%     +10 destroy_call                                                                             +10  +2.7%
  +8.1%    +160 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc                 +160  +8.1%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +27%     +41 dns_start_resolving_locked                                                               +41   +27%
       +42%     +36 dns_maybe_finish_next_locked                                                             +36   +42%
       +16%     +28 dns_shutdown_locked                                                                      +28   +16%
      +0.6%      +4 dns_on_resolved_locked                                                                    +4  +0.6%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/filters/client_channel/subchannel.cc                                       +144  +2.5%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +82%     +46 grpc_subchannel_weak_unref                                                               +46   +82%
       +26%     +38 on_external_state_watcher_done                                                           +38   +26%
      +2.1%      +5 [Unmapped]                                                                                +5  +2.1%
      +0.3%      +1 maybe_start_connecting_locked                                                             +1  +0.3%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +1.4%    +144 src/core/lib/iomgr/ev_epollex_linux.cc                                                  +144  +1.4%
      [NEW]    +491 kick_one_worker(grpc_exec_ctx*, grpc_pollset_worker*) [clone .isra.4]                   +491  [NEW]
      [NEW]    +185 pollset_kick_all(grpc_exec_ctx*, grpc_pollset*) [clone .isra.5]                         +185  [NEW]
       +53%     +60 unref_by(grpc_exec_ctx*, grpc_fd*, int) [clone .constprop.12]                            +60   +53%
      [NEW]     +55 closure_wrapper                                                                          +55  [NEW]
       +20%     +39 fd_orphan                                                                                +39   +20%
      +3.6%      +5 pollset_maybe_finish_shutdown                                                             +5  +3.6%
  +3.5%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.5%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.9%     +39 on_peer_checked                                                                          +39  +5.9%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]

  +0.7% +7.96Ki TOTAL                                                                                 +168Ki  +2.9%


****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]    +232  +0.0%

  [ = ]       0 TOTAL     +232  +0.0%



grpc_closure_init(closure, cb, cb_arg, scheduler)
#endif

namespace {
Copy link
Copy Markdown
Contributor

@vjpai vjpai Nov 15, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

} wrapped_closure;

static void closure_wrapper(grpc_exec_ctx* exec_ctx, void* arg,
grpc_error* error) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No static methods inside header files and, fwiw, why static and anonymous? That seems like overkill

@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                      cpu_time    real_time
-----------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner  -19%        -19%
BM_ClosureSched2OnExecCtx      -7%         -7%
BM_PollAddFd                   -15%        -15%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +1.5% +2.41Ki [Other]                                                                              +2.41Ki  +1.5%
  +2.9%    +917 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +917  +2.9%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +1.7%     +47 [Other]                                                                                  +47  +1.7%
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
      +6.0%     +14 perform_transport_op_locked                                                              +14  +6.0%
  +9.4%    +608 src/core/lib/iomgr/resource_quota.cc                                                    +608  +9.4%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.4%    +594 src/core/ext/filters/client_channel/client_channel.cc                                   +594  +4.4%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
      +9.8%     +24 [Unmapped]                                                                               +24  +9.8%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +3.1%    +368 src/core/lib/iomgr/ev_poll_posix.cc                                                     +368  +3.1%
      +5.3%    +144 pollset_work                                                                            +144  +5.3%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +6.1%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.1%
       +11%    +138 tcp_client_connect_impl                                                                 +138   +11%
      +3.9%     +48 on_writable                                                                              +48  +3.9%
  +2.4%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.4%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.7%      +3 [Unmapped]                                                                                +3  +1.7%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +3.5%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.5%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.9%     +39 on_peer_checked                                                                          +39  +5.9%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +5.0%    +128 src/core/ext/filters/client_channel/http_connect_handshaker.cc                          +128  +5.0%
       +20%     +48 handshake_failed_locked                                                                  +48   +20%
      +3.7%     +28 on_read_done                                                                             +28  +3.7%
      +2.7%     +22 http_connect_handshaker_do_handshake                                                     +22  +2.7%
       +23%     +19 [Unmapped]                                                                               +19   +23%
      +5.3%     +11 handshaker_factory_add_handshakers                                                       +11  +5.3%
  +3.0%    +128 src/core/lib/iomgr/timer_generic.cc                                                     +128  +3.0%
      +9.1%     +83 grpc_timer_init                                                                          +83  +9.1%
       +13%     +34 grpc_timer_cancel                                                                        +34   +13%
      +2.0%     +27 run_some_expired_timers(grpc_exec_ctx*, long, long*, grpc_error*) [clone .part.2]        +27  +2.0%
  +2.8%    +128 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +128  +2.8%
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.4%    +128 src/core/lib/security/transport/security_connector.cc                                   +128  +1.4%
      [NEW]    +537 fake_check_peer(grpc_exec_ctx*, grpc_security_connector*, tsi_peer, grpc_auth_contex    +537  [NEW]
       +42%     +36 ssl_channel_check_peer                                                                   +36   +42%
       +20%     +36 grpc_security_connector_check_peer                                                       +36   +20%
       +45%     +33 ssl_server_check_peer                                                                    +33   +45%
  +1.0%    +128 src/core/lib/surface/server.cc                                                          +128  +1.0%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.3%      +1 [Unmapped]                                                                                +1  +0.3%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +7.8%    +128 src/core/lib/transport/connectivity_state.cc                                            +128  +7.8%
       +17%     +76 grpc_connectivity_state_notify_on_state_change                                           +76   +17%
       +15%     +32 grpc_connectivity_state_destroy                                                          +32   +15%
      +6.2%     +32 grpc_connectivity_state_set                                                              +32  +6.2%
  +4.1%    +119 src/core/lib/http/httpcli.cc                                                            +119  +4.1%
      [NEW]     +55 closure_impl::closure_wrapper                                                            +55  [NEW]
      +7.1%     +40 internal_request_begin                                                                   +40  +7.1%
       +15%     +34 finish                                                                                   +34   +15%
   +10%    +116 src/core/lib/transport/transport.cc                                                     +116   +10%
       +76%     +37 destroy_made_transport_op                                                                +37   +76%
       +47%     +36 grpc_stream_unref                                                                        +36   +47%
       +14%     +32 grpc_transport_stream_op_batch_finish_with_failure                                       +32   +14%
       +58%     +28 destroy_made_transport_stream_op                                                         +28   +58%
      +4.2%      +7 [Unmapped]                                                                                +7  +4.2%
  +5.1%    +112 src/core/lib/iomgr/combiner.cc                                                          +112  +5.1%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]
  -0.8%     -16 src/core/ext/filters/deadline/deadline_filter.cc                                         -16  -0.8%
     -20.5%     -34 [Unmapped]                                                                               -34 -20.5%
     -10.1%     -25 server_start_transport_stream_op_batch                                                   -25 -10.1%
     -14.3%     -16 grpc_deadline_state_client_start_transport_stream_op_batch                               -16 -14.3%
      -3.6%     -10 timer_callback                                                                           -10  -3.6%

 -+-+-+-+-+-+-+ MIXED                                                                                +-+-+-+-+-+-+-
  -0.1%    -639 [None]                                                                                +158Ki  +3.0%

  +0.5% +6.12Ki TOTAL                                                                                 +165Ki  +2.8%


****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]    +160  +0.0%

  [ = ]       0 TOTAL     +160  +0.0%



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +1.5% +2.41Ki [Other]                                                                              +2.41Ki  +1.5%
  +2.9%    +917 src/core/ext/transport/chttp2/transport/chttp2_transport.cc                             +917  +2.9%
      [NEW]    +382 try_http_parsing(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .isra.6]                +382  [NEW]
      +158%    +208 send_ping_locked                                                                        +208  +158%
       +99%    +133 cancel_pings                                                                            +133   +99%
      +9.3%     +84 grpc_chttp2_maybe_complete_recv_message                                                  +84  +9.3%
       +11%     +76 incoming_byte_stream_next_locked                                                         +76   +11%
      [NEW]     +65 post_destructive_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.26]      +65  [NEW]
       +21%     +64 set_write_state                                                                          +64   +21%
      [NEW]     +62 post_benign_reclaimer(grpc_exec_ctx*, grpc_chttp2_transport*) [clone .part.25]           +62  [NEW]
      +1.7%     +47 [Other]                                                                                  +47  +1.7%
       +34%     +46 destroy_stream                                                                           +46   +34%
       +28%     +41 grpc_chttp2_ack_ping                                                                     +41   +28%
       +19%     +38 grpc_chttp2_incoming_byte_stream_finished                                                +38   +19%
      +4.3%     +37 destroy_stream_locked                                                                    +37  +4.3%
       +53%     +37 grpc_chttp2_transport_start_reading                                                      +37   +53%
       +12%     +35 grpc_chttp2_incoming_byte_stream_push                                                    +35   +12%
       +50%     +29 destroy_transport                                                                        +29   +50%
       +15%     +24 reset_byte_stream                                                                        +24   +15%
      +0.7%     +24 perform_stream_op_locked                                                                 +24  +0.7%
      +3.9%     +24 write_action_begin_locked                                                                +24  +3.9%
       +15%     +23 grpc_chttp2_maybe_complete_recv_initial_metadata                                         +23   +15%
      +6.0%     +14 perform_transport_op_locked                                                              +14  +6.0%
  +9.4%    +608 src/core/lib/iomgr/resource_quota.cc                                                    +608  +9.4%
      [NEW]    +411 rq_reclaim(grpc_exec_ctx*, grpc_resource_quota*, bool) [clone .part.9]                  +411  [NEW]
       +14%    +161 rq_step                                                                                 +161   +14%
       +58%    +139 grpc_resource_user_alloc                                                                +139   +58%
       +26%     +96 ru_shutdown                                                                              +96   +26%
       +22%     +54 ru_allocated_slices                                                                      +54   +22%
      [NEW]     +52 rq_step_sched(grpc_exec_ctx*, grpc_resource_quota*) [clone .part.6]                      +52  [NEW]
       +15%     +49 ru_destroy                                                                               +49   +15%
       +23%     +33 ru_unref_by                                                                              +33   +23%
       +36%     +33 grpc_resource_user_finish_reclamation                                                    +33   +36%
       +35%     +30 grpc_resource_user_shutdown                                                              +30   +35%
       +24%     +22 grpc_resource_user_post_reclaimer                                                        +22   +24%
      +3.4%     +16 grpc_resource_user_create                                                                +16  +3.4%
      +3.9%      +8 grpc_resource_user_free                                                                   +8  +3.9%
      +2.7%      +5 ru_post_reclaimer                                                                         +5  +2.7%
  +4.4%    +594 src/core/ext/filters/client_channel/client_channel.cc                                   +594  +4.4%
      [NEW]    +321 waiting_for_pick_batches_fail(grpc_exec_ctx*, grpc_call_element*, grpc_error*) [clon    +321  [NEW]
       +41%    +193 start_transport_op_locked                                                               +193   +41%
      +4.2%    +109 on_resolver_result_changed_locked                                                       +109  +4.2%
       +16%     +49 on_external_watch_complete_locked                                                        +49   +16%
       +16%     +42 cc_destroy_channel_elem                                                                  +42   +16%
       +22%     +41 pick_after_resolver_result_start_locked                                                  +41   +22%
       +11%     +39 cc_destroy_call_elem                                                                     +39   +11%
       +30%     +31 grpc_client_channel_check_connectivity_state                                             +31   +30%
      +5.3%     +25 watch_connectivity_state_locked                                                          +25  +5.3%
      +9.8%     +24 [Unmapped]                                                                               +24  +9.8%
       +30%     +24 on_complete                                                                              +24   +30%
      +1.7%     +16 pick_done_locked                                                                         +16  +1.7%
      +2.2%     +16 pick_callback_start_locked                                                               +16  +2.2%
      +1.2%      +2 cc_start_transport_op                                                                     +2  +1.2%
      +1.1%      +2 grpc_client_channel_watch_connectivity_state                                              +2  +1.1%
  +3.5%    +432 src/core/ext/transport/inproc/inproc_transport.cc                                       +432  +3.5%
      [NEW]    +153 close_stream_locked(grpc_exec_ctx*, inproc_stream*) [clone .part.3]                     +153  [NEW]
      +5.0%    +138 op_state_machine                                                                        +138  +5.0%
      +4.7%     +96 perform_stream_op                                                                        +96  +4.7%
      [NEW]     +90 maybe_schedule_op_closure_locked(grpc_exec_ctx*, inproc_stream*, grpc_error*) [clone     +90  [NEW]
      +4.7%     +64 fail_helper_locked                                                                       +64  +4.7%
      +6.2%     +35 message_transfer_locked                                                                  +35  +6.2%
       +16%     +31 complete_if_batch_end_locked                                                             +31   +16%
      +1.8%     +16 init_stream                                                                              +16  +1.8%
      +1.8%     +11 grpc_inproc_transport_init                                                               +11  +1.8%
      +4.5%      +9 [Unmapped]                                                                                +9  +4.5%
      +0.4%      +1 destroy_stream                                                                            +1  +0.4%
  +3.1%    +368 src/core/lib/iomgr/ev_poll_posix.cc                                                     +368  +3.1%
      +5.3%    +144 pollset_work                                                                            +144  +5.3%
      [NEW]    +108 pollset_kick_locked(grpc_exec_ctx*, grpc_fd_watcher*) [clone .isra.6]                   +108  [NEW]
       +43%     +70 pollset_shutdown                                                                         +70   +43%
       +22%     +68 notify_on_locked                                                                         +68   +22%
      +7.9%     +26 fd_orphan                                                                                +26  +7.9%
       +26%     +24 set_ready_locked                                                                         +24   +26%
       +17%     +23 finish_shutdown                                                                          +23   +17%
      +4.3%     +21 fd_end_poll                                                                              +21  +4.3%
  +3.4%    +192 src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc                +192  +3.4%
       +25%     +59 rr_ping_one_locked                                                                       +59   +25%
      +2.4%     +48 rr_connectivity_changed_locked                                                           +48  +2.4%
       +15%     +40 shutdown_locked                                                                          +40   +15%
       +12%     +33 rr_cancel_picks_locked                                                                   +33   +12%
      +2.4%      +7 rr_cancel_pick_locked                                                                     +7  +2.4%
      +4.3%      +5 [Unmapped]                                                                                +5  +4.3%
  +6.1%    +176 src/core/lib/iomgr/tcp_client_posix.cc                                                  +176  +6.1%
       +11%    +138 tcp_client_connect_impl                                                                 +138   +11%
      +3.9%     +48 on_writable                                                                              +48  +3.9%
  +2.4%    +176 src/core/lib/iomgr/tcp_posix.cc                                                         +176  +2.4%
       +19%     +62 call_read_cb                                                                             +62   +19%
      +5.2%     +32 tcp_write                                                                                +32  +5.2%
      +7.4%     +27 tcp_drop_uncovered_then_handle_write                                                     +27  +7.4%
      +4.8%     +25 notify_on_write                                                                          +25  +4.8%
       +10%     +16 tcp_read                                                                                 +16   +10%
       +10%     +11 notify_on_read                                                                           +11   +10%
      +1.7%      +3 [Unmapped]                                                                                +3  +1.7%
  +3.2%    +144 src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc                  +144  +3.2%
      [NEW]     +97 destroy_unselected_subchannels_locked(grpc_exec_ctx*, pick_first_lb_policy*) [clone      +97  [NEW]
       +34%     +58 pf_ping_one_locked                                                                       +58   +34%
       +15%     +40 shutdown_locked                                                                          +40   +15%
      +9.0%     +25 pf_cancel_picks_locked                                                                   +25  +9.0%
      +1.1%     +16 pf_connectivity_changed_locked                                                           +16  +1.1%
      +2.4%      +7 pf_cancel_pick_locked                                                                     +7  +2.4%
  +2.5%    +144 src/core/ext/transport/chttp2/transport/writing.cc                                      +144  +2.5%
      +2.8%    +149 grpc_chttp2_begin_write                                                                 +149  +2.8%
  +3.5%    +144 src/core/lib/security/transport/security_handshaker.cc                                  +144  +3.5%
       +16%     +48 security_handshake_failed_locked                                                         +48   +16%
       +37%     +46 fail_handshaker_do_handshake                                                             +46   +37%
      +5.9%     +39 on_peer_checked                                                                          +39  +5.9%
      +3.2%      +8 grpc_security_handshaker_create                                                           +8  +3.2%
      +1.8%      +3 [Unmapped]                                                                                +3  +1.8%
  +5.0%    +128 src/core/ext/filters/client_channel/http_connect_handshaker.cc                          +128  +5.0%
       +20%     +48 handshake_failed_locked                                                                  +48   +20%
      +3.7%     +28 on_read_done                                                                             +28  +3.7%
      +2.7%     +22 http_connect_handshaker_do_handshake                                                     +22  +2.7%
       +23%     +19 [Unmapped]                                                                               +19   +23%
      +5.3%     +11 handshaker_factory_add_handshakers                                                       +11  +5.3%
  +3.0%    +128 src/core/lib/iomgr/timer_generic.cc                                                     +128  +3.0%
      +9.1%     +83 grpc_timer_init                                                                          +83  +9.1%
       +13%     +34 grpc_timer_cancel                                                                        +34   +13%
      +2.0%     +27 run_some_expired_timers(grpc_exec_ctx*, long, long*, grpc_error*) [clone .part.2]        +27  +2.0%
  +2.8%    +128 src/core/lib/security/credentials/oauth2/oauth2_credentials.cc                          +128  +2.8%
       +16%     +42 compute_engine_fetch_oauth2                                                              +42   +16%
      +8.5%     +40 on_oauth2_token_fetcher_http_response                                                    +40  +8.5%
      +8.5%     +32 refresh_token_fetch_oauth2                                                               +32  +8.5%
       +17%     +25 oauth2_token_fetcher_cancel_get_request_metadata                                         +25   +17%
  +1.4%    +128 src/core/lib/security/transport/security_connector.cc                                   +128  +1.4%
      [NEW]    +537 fake_check_peer(grpc_exec_ctx*, grpc_security_connector*, tsi_peer, grpc_auth_contex    +537  [NEW]
       +42%     +36 ssl_channel_check_peer                                                                   +36   +42%
       +20%     +36 grpc_security_connector_check_peer                                                       +36   +20%
       +45%     +33 ssl_server_check_peer                                                                    +33   +45%
  +1.0%    +128 src/core/lib/surface/server.cc                                                          +128  +1.0%
      [NEW]    +608 publish_call(grpc_exec_ctx*, grpc_server*, call_data*, unsigned long, requested_call    +608  [NEW]
      [NEW]    +150 request_matcher_zombify_all_pending_calls(grpc_exec_ctx*, request_matcher*) [clone .    +150  [NEW]
      [NEW]    +144 request_matcher_destroy(request_matcher*) [clone .isra.5]                               +144  [NEW]
      +7.3%     +60 got_initial_metadata                                                                     +60  +7.3%
      +8.1%     +32 grpc_server_start                                                                        +32  +8.1%
      +5.0%     +27 server_on_recv_initial_metadata                                                          +27  +5.0%
      +6.3%     +18 finish_start_new_rpc                                                                     +18  +6.3%
      +2.8%     +16 publish_new_rpc                                                                          +16  +2.8%
      +4.3%      +6 init_call_elem                                                                            +6  +4.3%
      +1.6%      +3 init_channel_elem                                                                         +3  +1.6%
      +0.6%      +3 queue_call_request                                                                        +3  +0.6%
      +0.3%      +1 [Unmapped]                                                                                +1  +0.3%
      +0.2%      +1 channel_broadcaster_shutdown                                                              +1  +0.2%
      +0.2%      +1 channel_connectivity_changed                                                              +1  +0.2%
  +7.8%    +128 src/core/lib/transport/connectivity_state.cc                                            +128  +7.8%
       +17%     +76 grpc_connectivity_state_notify_on_state_change                                           +76   +17%
       +15%     +32 grpc_connectivity_state_destroy                                                          +32   +15%
      +6.2%     +32 grpc_connectivity_state_set                                                              +32  +6.2%
  +4.1%    +119 src/core/lib/http/httpcli.cc                                                            +119  +4.1%
      [NEW]     +55 closure_impl::closure_wrapper                                                            +55  [NEW]
      +7.1%     +40 internal_request_begin                                                                   +40  +7.1%
       +15%     +34 finish                                                                                   +34   +15%
   +10%    +116 src/core/lib/transport/transport.cc                                                     +116   +10%
       +76%     +37 destroy_made_transport_op                                                                +37   +76%
       +47%     +36 grpc_stream_unref                                                                        +36   +47%
       +14%     +32 grpc_transport_stream_op_batch_finish_with_failure                                       +32   +14%
       +58%     +28 destroy_made_transport_stream_op                                                         +28   +58%
      +4.2%      +7 [Unmapped]                                                                                +7  +4.2%
  +5.1%    +112 src/core/lib/iomgr/combiner.cc                                                          +112  +5.1%
       +30%     +73 combiner_finally_exec                                                                    +73   +30%
       +23%     +32 queue_offload                                                                            +32   +23%
      +8.0%     +13 grpc_combiner_create                                                                     +13  +8.0%

 -------------- SHRINKING                                                                            --------------
  [DEL]    -554 src/core/lib/iomgr/closure.cc                                                           -554  [DEL]
      [DEL]     -83 grpc_closure_list_append                                                                 -83  [DEL]
      [DEL]     -74 grpc_closure_list_sched                                                                  -74  [DEL]
      [DEL]     -70 grpc_closure_list_fail_all                                                               -70  [DEL]
      [DEL]     -64 grpc_closure_list_move                                                                   -64  [DEL]
      [DEL]     -63 grpc_closure_create                                                                      -63  [DEL]
      [DEL]     -58 [Unmapped]                                                                               -58  [DEL]
      [DEL]     -55 closure_wrapper                                                                          -55  [DEL]
      [DEL]     -24 grpc_closure_run                                                                         -24  [DEL]
      [DEL]     -24 grpc_closure_sched                                                                       -24  [DEL]
      [DEL]     -16 grpc_closure_init                                                                        -16  [DEL]
      [DEL]     -16 grpc_closure_list_init                                                                   -16  [DEL]
      [DEL]      -7 grpc_closure_list_empty                                                                   -7  [DEL]
  -0.8%     -16 src/core/ext/filters/deadline/deadline_filter.cc                                         -16  -0.8%
     -20.5%     -34 [Unmapped]                                                                               -34 -20.5%
     -10.1%     -25 server_start_transport_stream_op_batch                                                   -25 -10.1%
     -14.3%     -16 grpc_deadline_state_client_start_transport_stream_op_batch                               -16 -14.3%
      -3.6%     -10 timer_callback                                                                           -10  -3.6%

 -+-+-+-+-+-+-+ MIXED                                                                                +-+-+-+-+-+-+-
  -0.1%    -639 [None]                                                                                +158Ki  +3.0%

  +0.5% +6.12Ki TOTAL                                                                                 +165Ki  +2.8%


****************************************************************

libgrpc++.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++
  [ = ]       0 [None]    +160  +0.0%

  [ = ]       0 TOTAL     +160  +0.0%



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                      cpu_time    real_time
-----------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner  -19%        -19%
BM_ClosureSched2OnExecCtx      -10%        -10%
BM_ClosureSchedOnExecCtx       -11%        -11%

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] Performance differences noted:
Benchmark                                                              cpu_time    real_time
---------------------------------------------------------------------  ----------  -----------
BM_ClosureInitAgainstCombiner                                          -33%        -33%
BM_ClosureReschedOnExecCtx                                             -11%        -11%
BM_ClosureSched3OnExecCtx                                              -13%        -13%
BM_ClosureSchedOnExecCtx                                               -12%        -12%
BM_HpackEncoderInitDestroy                                             -7%         -7%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/2  -5%         -5%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768    -7%         -7%

@ncteisen
Copy link
Copy Markdown
Contributor Author

TSAN: #13178
ASAN: #13178
Interop: #10763
C++ Dbg: #13148

@ncteisen ncteisen merged commit ad3bdbe into grpc:master Nov 16, 2017
@ncteisen ncteisen deleted the inline-closure branch November 16, 2017 22:43
@lock lock bot locked as resolved and limited conversation to collaborators Jan 21, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants