Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Status propagation changes #16418

Merged
merged 34 commits into from
Sep 2, 2018
Merged

Status propagation changes #16418

merged 34 commits into from
Sep 2, 2018

Conversation

yashykt
Copy link
Member

@yashykt yashykt commented Aug 21, 2018

Continuation of Ken's PR #13368

Rough explanation of why this new logic is roughly equivalent to the old logic:

The old logic would search through a bunch of errors attached to the recv_trailing_metadata batch, looking for an error with an explicit non-ok status, and sort these errors according to their source.

One of the errors was synthesized from the receive_trailing_metadata op. This status would always be explicit, and had the second highest priority STATUS_FROM_WIRE. In the case of the chttp2 transport, whenever one of the other batch errors occurred, it would cause a cancellation and a fake receive_trailing_metadata status was created, and this would be the resulting status code. Other transports would end up failing the receive_trailing_metadata batch with this error.

New Approach:
Surface: The call status will always be determined by the recv_trailing_metadata_ready callback. If the callback completes with an error, that error is used to determine the status code. If the callback completes without an error, the status code is determined from the grpc-status metdata value.

Any ops that complete with an error will cause a cancellation to occur on the entire call.

Filter Stack: If a filter stack injects an error on the way down (on a send op), the entire batch should be failed with that error. This will cause any recv callbacks to be called with that error.

If a filter stack injects an error on the way up (recv{metadata/msg/trailing_metadata} callback), that error must also be injected into the trailing_metadata callback. If there is already an error in the trailing_metadata callback, that error should be added as a child.

Transport: If a transport receives a cancellation op, the first cancellation error must be passed to recv_trailing_metadata_ready (if it has not been queued already).

@grpc-testing
Copy link

[trickle] No significant performance differences

@grpc-testing
Copy link

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
   669,865       Core (>)        668,859

 1,953,590      Total (>)      1,952,584

***************FRAMEWORKS****************
  New size                      Old size
10,665,567      Total (<)     10,665,708

 No significant differences in binary sizes


@grpc-testing
Copy link

[microbenchmarks] Performance differences noted:
Benchmark                                                                                              allocs_per_iteration    atm_add_per_iteration    atm_cas_per_iteration    cpu_time    nows_per_iteration    real_time
-----------------------------------------------------------------------------------------------------  ----------------------  -----------------------  -----------------------  ----------  --------------------  -----------
BM_IsolatedCall_Unary                                                                                  +2999%                                           +10%                     +154%       +50%                  +154%
BM_IsolatedFilter<HttpServerFilter, NoOp>                                                                                                                                        +10%                              +10%
BM_LameChannelCallCreateCore                                                                           -10%                    -28%                                                          -33%
BM_LameChannelCallCreateCoreSeparateBatch                                                              -17%                    -30%                     -10%                     -12%        -37%                  -12%
BM_LameChannelCallCreateCpp                                                                            -10%                    -28%                                                          -33%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                           -6%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/2                                                                                   -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                      -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                       -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                        -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/512/1                                                                                         -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/64/1                                                                                          -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/8/1                                                                                           -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                        -6%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                   -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                    -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                     -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/1                                                                                      -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/1                                                                                       -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/1                                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                      -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                      -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                       -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                       -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                 -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                  -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                               -4%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<100>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 1>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 2>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/512                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/64                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                               -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                        -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                                 -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                       -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/0                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/512                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/0                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/64                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                    -4%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/512                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/64                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/8                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                            -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                              -4%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                  -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/0                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/512                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/0                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/64                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/8                                                                                            -6%

grpc_error_get_status(error, call->send_deadline,
call->final_op.client.status, &slice, nullptr,
call->final_op.client.error_string);
*call->final_op.client.status_details = grpc_slice_ref_internal(slice);
Copy link
Contributor

Choose a reason for hiding this comment

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

That could still be done without creating the extra slice on the stack.

grpc_error_get_status(error, call->send_deadline,
                                      call->final_op.client.status, call->final_op.client.status_details, 
                                      nullptr, call->final_op.client.error_string);
// explicitly take a ref
grpc_slice_ref_internal(call->final_op.client.status_details);

@grpc-testing
Copy link

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

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%     +94 [None]                                                                               +2.23Ki  +0.0%
  +9.4%    +204 src/core/lib/security/transport/server_auth_filter.cc                                   +204  +9.4%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
       +72%     +28 auth_start_transport_stream_op_batch                                                     +28   +72%
       +15%     +19 init_call_elem                                                                           +19   +15%
      +2.6%     +17 recv_initial_metadata_ready                                                              +17  +2.6%
      +2.0%     +12 on_md_processing_done                                                                    +12  +2.0%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
      +4.4%      +9 on_md_processing_done_inner                                                               +9  +4.4%
       +14%      +8 [Unmapped]                                                                                +8   +14%
      +4.7%      +8 remove_consumed_md                                                                        +8  +4.7%
  +4.7%    +191 src/core/ext/filters/http/server/http_server_filter.cc                                  +191  +4.7%
      [NEW]     +92 hs_recv_trailing_metadata_ready                                                          +92  [NEW]
      +6.8%     +32 hs_start_transport_stream_op_batch                                                       +32  +6.8%
       +35%     +28 hs_init_call_elem                                                                        +28   +35%
       +77%     +20 hs_destroy_call_elem                                                                     +20   +77%
      +7.3%     +15 hs_recv_initial_metadata_ready                                                           +15  +7.3%
      +7.0%      +4 [Unmapped]                                                                                +4  +7.0%
  +3.5%    +160 src/core/ext/filters/message_size/message_size_filter.cc                                +160  +3.5%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
      +6.5%     +32 init_call_elem                                                                           +32  +6.5%
      +5.4%     +16 recv_message_ready                                                                       +16  +5.4%
      +5.7%     +16 start_transport_stream_op_batch                                                          +16  +5.7%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
  +1.2%    +160 src/core/lib/surface/server.cc                                                          +160  +1.2%
      [NEW]     +92 server_recv_trailing_metadata_ready                                                      +92  [NEW]
       +29%     +32 server_start_transport_stream_op_batch                                                   +32   +29%
       +19%     +28 init_call_elem                                                                           +28   +19%
      +9.4%     +16 destroy_call_elem                                                                        +16  +9.4%
  +1.0%     +64 src/core/lib/iomgr/error.cc                                                              +64  +1.0%
       +73%     +55 grpc_error_add_child                                                                     +55   +73%
      +5.1%      +9 [Unmapped]                                                                                +9  +5.1%
  +1.0%     +47 src/core/ext/filters/http/client/http_client_filter.cc                                   +47  +1.0%
       +33%     +32 recv_trailing_metadata_ready                                                             +32   +33%
       +15%     +15 recv_initial_metadata_ready                                                              +15   +15%
      +700%     +14 destroy_call_elem                                                                        +14  +700%

 -------------- SHRINKING                                                                            --------------
  -3.7%    -592 src/core/lib/surface/call.cc                                                            -592  -3.7%
      [DEL]    -625 get_final_status                                                                        -625  [DEL]
      [DEL]    -498 set_encodings_accepted_by_peer(grpc_call*, grpc_mdelem, unsigned int*, bool) [clone     -498  [DEL]
     -41.9%    -376 finish_batch_step                                                                       -376 -41.9%
      [DEL]    -234 get_final_status_from                                                                   -234  [DEL]
      [DEL]    -186 cancel_with_error                                                                       -186  [DEL]
      [DEL]    -105 add_batch_error                                                                         -105  [DEL]
      [DEL]     -91 set_status_from_error                                                                    -91  [DEL]
     -21.0%     -88 [Unmapped]                                                                               -88 -21.0%
      [DEL]     -47 get_md_elem(grpc_metadata*, grpc_metadata*, int, int) [clone .part.4]                    -47  [DEL]
      -6.4%     -23 destroy_call                                                                             -23  -6.4%
      [DEL]     -10 set_cancelled_value                                                                      -10  [DEL]
      [DEL]      -3 set_status_value_directly                                                                 -3  [DEL]
      -5.9%      -1 grpc_call_context_get                                                                     -1  -5.9%

  +0.0%    +328 TOTAL                                                                                +2.46Ki  +0.0%


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

libgrpc++.so

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

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link

[trickle] No significant performance differences

@grpc-testing
Copy link

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,955,427      Total (>)      1,954,445

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,842,133      Total (<)     10,842,284

 No significant differences in binary sizes


@grpc-testing
Copy link

[microbenchmarks] Performance differences noted:
Benchmark                                                                                              allocs_per_iteration    atm_add_per_iteration    atm_cas_per_iteration    cpu_time    nows_per_iteration    real_time
-----------------------------------------------------------------------------------------------------  ----------------------  -----------------------  -----------------------  ----------  --------------------  -----------
BM_IsolatedCall_Unary                                                                                  +2999%                                           +10%                     +228%       +50%                  +228%
BM_LameChannelCallCreateCore                                                                           -10%                    -28%                                                          -33%
BM_LameChannelCallCreateCoreSeparateBatch                                                              -17%                    -30%                     -10%                                 -37%
BM_LameChannelCallCreateCpp                                                                            -10%                    -28%                                                          -33%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                           -6%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                      -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                       -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                        -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/512/1                                                                                         -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/64/1                                                                                          -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/8/1                                                                                           -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                        -6%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                   -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                    -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                     -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/1                                                                                      -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/1                                                                                       -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/1                                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                      -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                      -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                       -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                       -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                 -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                  -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                               -4%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<100>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 1>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 2>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                       -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                         -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/512                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/64                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                               -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                        -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                                 -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                       -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/0                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/512                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/0                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/64                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                    -4%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                      -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/512                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/64                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/8                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                            -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                     -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                              -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                  -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/0                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/512                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/0                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/64                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/8                                                                                            -6%

@grpc-testing
Copy link

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

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%     +94 [None]                                                                               +2.23Ki  +0.0%
  +9.4%    +204 src/core/lib/security/transport/server_auth_filter.cc                                   +204  +9.4%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
       +72%     +28 auth_start_transport_stream_op_batch                                                     +28   +72%
       +15%     +19 init_call_elem                                                                           +19   +15%
      +2.6%     +17 recv_initial_metadata_ready                                                              +17  +2.6%
      +2.0%     +12 on_md_processing_done                                                                    +12  +2.0%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
      +4.4%      +9 on_md_processing_done_inner                                                               +9  +4.4%
       +14%      +8 [Unmapped]                                                                                +8   +14%
      +4.7%      +8 remove_consumed_md                                                                        +8  +4.7%
  +4.7%    +191 src/core/ext/filters/http/server/http_server_filter.cc                                  +191  +4.7%
      [NEW]     +92 hs_recv_trailing_metadata_ready                                                          +92  [NEW]
      +6.8%     +32 hs_start_transport_stream_op_batch                                                       +32  +6.8%
       +35%     +28 hs_init_call_elem                                                                        +28   +35%
       +77%     +20 hs_destroy_call_elem                                                                     +20   +77%
      +7.3%     +15 hs_recv_initial_metadata_ready                                                           +15  +7.3%
      +7.0%      +4 [Unmapped]                                                                                +4  +7.0%
  +3.5%    +160 src/core/ext/filters/message_size/message_size_filter.cc                                +160  +3.5%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
      +6.5%     +32 init_call_elem                                                                           +32  +6.5%
      +5.4%     +16 recv_message_ready                                                                       +16  +5.4%
      +5.7%     +16 start_transport_stream_op_batch                                                          +16  +5.7%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
  +1.2%    +160 src/core/lib/surface/server.cc                                                          +160  +1.2%
      [NEW]     +92 server_recv_trailing_metadata_ready                                                      +92  [NEW]
       +29%     +32 server_start_transport_stream_op_batch                                                   +32   +29%
       +19%     +28 init_call_elem                                                                           +28   +19%
      +9.4%     +16 destroy_call_elem                                                                        +16  +9.4%
  +1.0%     +64 src/core/lib/iomgr/error.cc                                                              +64  +1.0%
       +73%     +55 grpc_error_add_child                                                                     +55   +73%
      +5.1%      +9 [Unmapped]                                                                                +9  +5.1%
  +1.0%     +47 src/core/ext/filters/http/client/http_client_filter.cc                                   +47  +1.0%
       +33%     +32 recv_trailing_metadata_ready                                                             +32   +33%
       +15%     +15 recv_initial_metadata_ready                                                              +15   +15%
      +700%     +14 destroy_call_elem                                                                        +14  +700%

 -------------- SHRINKING                                                                            --------------
  -3.7%    -592 src/core/lib/surface/call.cc                                                            -592  -3.7%
      [DEL]    -625 get_final_status                                                                        -625  [DEL]
      [DEL]    -498 set_encodings_accepted_by_peer(grpc_call*, grpc_mdelem, unsigned int*, bool) [clone     -498  [DEL]
     -41.9%    -376 finish_batch_step                                                                       -376 -41.9%
      [DEL]    -234 get_final_status_from                                                                   -234  [DEL]
      [DEL]    -186 cancel_with_error                                                                       -186  [DEL]
      [DEL]    -105 add_batch_error                                                                         -105  [DEL]
      [DEL]     -91 set_status_from_error                                                                    -91  [DEL]
     -21.0%     -88 [Unmapped]                                                                               -88 -21.0%
      [DEL]     -47 get_md_elem(grpc_metadata*, grpc_metadata*, int, int) [clone .part.4]                    -47  [DEL]
      -6.4%     -23 destroy_call                                                                             -23  -6.4%
      [DEL]     -10 set_cancelled_value                                                                      -10  [DEL]
      [DEL]      -3 set_status_value_directly                                                                 -3  [DEL]
      -5.9%      -1 grpc_call_context_get                                                                     -1  -5.9%

  +0.0%    +328 TOTAL                                                                                +2.46Ki  +0.0%


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

libgrpc++.so

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

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link

[trickle] No significant performance differences

@grpc-testing
Copy link

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,955,984      Total (>)      1,955,002

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,843,623      Total (<)     10,843,750

 No significant differences in binary sizes


@grpc-testing
Copy link

[microbenchmarks] Performance differences noted:
Benchmark                                                                                              allocs_per_iteration    atm_add_per_iteration    atm_cas_per_iteration    cpu_time    nows_per_iteration    real_time
-----------------------------------------------------------------------------------------------------  ----------------------  -----------------------  -----------------------  ----------  --------------------  -----------
BM_IsolatedCall_Unary                                                                                  +2999%                                           +10%                     +178%       +50%                  +178%
BM_LameChannelCallCreateCore                                                                           -10%                    -28%                                                          -33%
BM_LameChannelCallCreateCoreSeparateBatch                                                              -17%                    -30%                     -10%                                 -37%
BM_LameChannelCallCreateCpp                                                                            -10%                    -28%                                                          -33%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                           -6%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/2                                                                                    -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                      -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                       -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                        -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/512/1                                                                                         -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/64/1                                                                                          -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/8/1                                                                                           -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                        -6%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                   -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                    -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                     -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/1                                                                                      -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/1                                                                                       -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/1                                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                      -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                      -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                       -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                       -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                 -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                  -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                               -4%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<100>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 1>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 2>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                       -4%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                         -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/512                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/64                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                               -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                                 -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                       -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/0                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/512                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/0                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/64                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                      -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/512                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/64                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/8                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                            -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                              -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                  -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/0                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/512                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/0                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/64                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/8                                                                                            -6%

@grpc-testing
Copy link

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

libgrpc.so

     VM SIZE                                                                                            FILE SIZE
 ++++++++++++++ GROWING                                                                              ++++++++++++++
  +0.0%     +94 [None]                                                                               +2.23Ki  +0.0%
  +9.4%    +204 src/core/lib/security/transport/server_auth_filter.cc                                   +204  +9.4%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
       +72%     +28 auth_start_transport_stream_op_batch                                                     +28   +72%
       +15%     +19 init_call_elem                                                                           +19   +15%
      +2.6%     +17 recv_initial_metadata_ready                                                              +17  +2.6%
      +2.0%     +12 on_md_processing_done                                                                    +12  +2.0%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
      +4.4%      +9 on_md_processing_done_inner                                                               +9  +4.4%
       +14%      +8 [Unmapped]                                                                                +8   +14%
      +4.7%      +8 remove_consumed_md                                                                        +8  +4.7%
  +4.7%    +191 src/core/ext/filters/http/server/http_server_filter.cc                                  +191  +4.7%
      [NEW]     +92 hs_recv_trailing_metadata_ready                                                          +92  [NEW]
      +6.8%     +32 hs_start_transport_stream_op_batch                                                       +32  +6.8%
       +35%     +28 hs_init_call_elem                                                                        +28   +35%
       +77%     +20 hs_destroy_call_elem                                                                     +20   +77%
      +7.3%     +15 hs_recv_initial_metadata_ready                                                           +15  +7.3%
      +7.0%      +4 [Unmapped]                                                                                +4  +7.0%
  +3.5%    +160 src/core/ext/filters/message_size/message_size_filter.cc                                +160  +3.5%
      [NEW]     +92 recv_trailing_metadata_ready                                                             +92  [NEW]
      +6.5%     +32 init_call_elem                                                                           +32  +6.5%
      +5.4%     +16 recv_message_ready                                                                       +16  +5.4%
      +5.7%     +16 start_transport_stream_op_batch                                                          +16  +5.7%
      +550%     +11 destroy_call_elem                                                                        +11  +550%
  +1.2%    +160 src/core/lib/surface/server.cc                                                          +160  +1.2%
      [NEW]     +92 server_recv_trailing_metadata_ready                                                      +92  [NEW]
       +29%     +32 server_start_transport_stream_op_batch                                                   +32   +29%
       +19%     +28 init_call_elem                                                                           +28   +19%
      +9.4%     +16 destroy_call_elem                                                                        +16  +9.4%
  +1.0%     +64 src/core/lib/iomgr/error.cc                                                              +64  +1.0%
       +73%     +55 grpc_error_add_child                                                                     +55   +73%
      +5.1%      +9 [Unmapped]                                                                                +9  +5.1%
  +1.0%     +47 src/core/ext/filters/http/client/http_client_filter.cc                                   +47  +1.0%
       +33%     +32 recv_trailing_metadata_ready                                                             +32   +33%
       +15%     +15 recv_initial_metadata_ready                                                              +15   +15%
      +700%     +14 destroy_call_elem                                                                        +14  +700%

 -------------- SHRINKING                                                                            --------------
  -3.7%    -592 src/core/lib/surface/call.cc                                                            -592  -3.7%
      [DEL]    -625 get_final_status                                                                        -625  [DEL]
      [DEL]    -498 set_encodings_accepted_by_peer(grpc_call*, grpc_mdelem, unsigned int*, bool) [clone     -498  [DEL]
     -41.9%    -376 finish_batch_step                                                                       -376 -41.9%
      [DEL]    -234 get_final_status_from                                                                   -234  [DEL]
      [DEL]    -186 cancel_with_error                                                                       -186  [DEL]
      [DEL]    -105 add_batch_error                                                                         -105  [DEL]
      [DEL]     -91 set_status_from_error                                                                    -91  [DEL]
     -21.0%     -88 [Unmapped]                                                                               -88 -21.0%
      [DEL]     -47 get_md_elem(grpc_metadata*, grpc_metadata*, int, int) [clone .part.4]                    -47  [DEL]
      -6.4%     -23 destroy_call                                                                             -23  -6.4%
      [DEL]     -10 set_cancelled_value                                                                      -10  [DEL]
      [DEL]      -3 set_status_value_directly                                                                 -3  [DEL]
      -5.9%      -1 grpc_call_context_get                                                                     -1  -5.9%

  +0.0%    +328 TOTAL                                                                                +2.46Ki  +0.0%


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

libgrpc++.so

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

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link

[trickle] No significant performance differences

@grpc-testing
Copy link

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,955,984      Total (>)      1,955,002

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,843,616      Total (<)     10,843,749

 No significant differences in binary sizes


@grpc-testing
Copy link

[microbenchmarks] Performance differences noted:
Benchmark                                                                                              allocs_per_iteration    atm_add_per_iteration    atm_cas_per_iteration    cpu_time    nows_per_iteration    real_time
-----------------------------------------------------------------------------------------------------  ----------------------  -----------------------  -----------------------  ----------  --------------------  -----------
BM_IsolatedCall_Unary                                                                                  +2999%                                           +10%                     +200%       +50%                  +200%
BM_LameChannelCallCreateCore                                                                           -10%                    -28%                                              -6%         -33%                  -6%
BM_LameChannelCallCreateCoreSeparateBatch                                                              -17%                    -30%                     -10%                                 -37%
BM_LameChannelCallCreateCpp                                                                            -10%                    -28%                                                          -33%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                           -6%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                           -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/2                                                                                    -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                      -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                       -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                        -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/512/1                                                                                         -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/64/1                                                                                          -4%
BM_StreamingPingPong<InProcess, NoOpMutator, NoOpMutator>/8/1                                                                                           -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                        -6%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                        -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/2                                                                                 -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/1                                                                                   -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/1                                                                                    -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/1                                                                                     -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/1                                                                                      -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/1                                                                                       -4%
BM_StreamingPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/1                                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                        -6%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                                -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                      -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                      -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                       -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                       -5%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                        -4%
BM_StreamingPingPongWithCoalescingApi<InProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                        -5%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/0                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/0/1                                                                     -6%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/0                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/0/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/1/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/134217728/1/1                                                             -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/0                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/16777216/1/1                                                              -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/2097152/1/1                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/0                                                                -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/262144/1/1                                                                -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/0                                                                 -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/32768/1/1                                                                 -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/0                                                                  -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/4096/1/1                                                                  -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/0                                                                   -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/512/1/1                                                                   -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/0                                                                    -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/64/1/1                                                                    -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/0                                                                     -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcess, NoOpMutator, NoOpMutator>/8/1/1                                                                     -5%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/0                                                               -4%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/0/1                                                               -4%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<100>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator>/0/0                                                            -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 1>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<100>, 2>, NoOpMutator>/0/0                                                          -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<10>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 1>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, Client_AddMetadata<RandomBinaryMetadata<31>, 2>, NoOpMutator>/0/0                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                       -4%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                         -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/512                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/64                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/0/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/1/1                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                               -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                        -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                                 -5%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                          -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                       -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                            -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                         -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/0                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/512/512                                                                                           -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/0                                                                                              -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/64/64                                                                                             -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/0                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/8/8                                                                                               -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>>/0/0                                                     -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>>/0/0                                                   -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<InProcess, NoOpMutator, Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>>/0/0                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/134217728                                                                                    -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/16777216                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/2097152                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/262144                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/32768                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/4096                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/512                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/64                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/0/8                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/1/1                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                                                            -5%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/0                                                                                     -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/16777216/16777216                                                                              -4%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/0                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/2097152/2097152                                                                                -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/0                                                                                       -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/262144/262144                                                                                  -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/0                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/32768/32768                                                                                    -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/0                                                                                         -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/4096/4096                                                                                      -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/0                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/512/512                                                                                        -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/0                                                                                           -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/64/64                                                                                          -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/0                                                                                            -6%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/8/8                                                                                            -6%

@yashykt
Copy link
Member Author

yashykt commented Sep 2, 2018

Known issues : #16471

@yashykt
Copy link
Member Author

yashykt commented Sep 2, 2018

Thanks for reviewing!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
release notes: no Indicates if PR should not be in release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants