The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

285 lines
6.7 KiB

# Copyright 2022 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load(
"//bazel:grpc_build_system.bzl",
"grpc_cc_library",
"grpc_cc_test",
"grpc_package",
)
load("//test/cpp/microbenchmarks:grpc_benchmark_config.bzl", "HISTORY", "grpc_cc_benchmark")
grpc_package(name = "test/core/load_balancing")
licenses(["notice"])
grpc_cc_library(
name = "lb_policy_test_lib",
testonly = True,
hdrs = ["lb_policy_test_lib.h"],
external_deps = [
"absl/log:check",
"absl/log:log",
"gtest",
],
language = "C++",
deps = [
"//:oob_backend_metric",
"//src/core:client_channel_internal_header",
"//src/core:lb_policy",
"//src/core:subchannel_interface",
"//src/core:subchannel_pool_interface",
"//test/core/event_engine:event_engine_test_utils",
"//test/core/event_engine/fuzzing_event_engine",
],
)
grpc_cc_test(
name = "pick_first_test",
srcs = ["pick_first_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = [
"lb_unit_test",
],
uses_event_engine = False,
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:channel_args",
"//src/core:grpc_lb_policy_pick_first",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
],
)
grpc_cc_test(
name = "round_robin_test",
srcs = ["round_robin_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = [
"lb_unit_test",
],
uses_event_engine = False,
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:channel_args",
"//src/core:grpc_lb_policy_round_robin",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "outlier_detection_lb_config_parser_test",
srcs = ["outlier_detection_lb_config_parser_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
tags = [
"no_test_ios",
],
uses_event_engine = False,
uses_polling = False,
deps = [
"//:grpc",
"//src/core:channel_args",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
],
)
grpc_cc_test(
name = "outlier_detection_test",
srcs = ["outlier_detection_test.cc"],
external_deps = [
"absl/log:log",
"gtest",
],
language = "C++",
tags = [
"lb_unit_test",
],
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:channel_args",
"//src/core:grpc_lb_policy_outlier_detection",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "xds_override_host_lb_config_parser_test",
srcs = ["xds_override_host_lb_config_parser_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
tags = [
"no_test_ios",
],
uses_event_engine = False,
uses_polling = False,
deps = [
"//:grpc",
"//src/core:client_channel_service_config",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "xds_override_host_test",
srcs = ["xds_override_host_test.cc"],
external_deps = [
"absl/log:log",
"gtest",
],
language = "C++",
tags = [
"lb_unit_test",
],
uses_event_engine = False,
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:grpc_lb_policy_xds_override_host",
"//src/core:xds_health_status",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "rls_lb_config_parser_test",
srcs = ["rls_lb_config_parser_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
tags = [
"no_test_ios",
],
uses_event_engine = False,
uses_polling = False,
deps = [
"//:grpc",
"//src/core:channel_args",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "static_stride_scheduler_test",
srcs = ["static_stride_scheduler_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//src/core:static_stride_scheduler",
],
)
grpc_cc_benchmark(
name = "static_stride_scheduler_benchmark",
srcs = ["static_stride_scheduler_benchmark.cc"],
external_deps = [
"absl/algorithm:container",
"absl/log:check",
],
monitoring = HISTORY,
uses_event_engine = False,
deps = [
"//src/core:no_destruct",
"//src/core:static_stride_scheduler",
],
)
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
grpc_cc_test(
name = "weighted_round_robin_config_test",
srcs = ["weighted_round_robin_config_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
tags = [
"no_test_ios",
],
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
uses_event_engine = False,
uses_polling = False,
deps = [
"//:grpc",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
],
)
grpc_cc_test(
name = "weighted_round_robin_test",
srcs = ["weighted_round_robin_test.cc"],
external_deps = [
"absl/log:log",
"gtest",
],
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
language = "C++",
tags = [
"lb_unit_test",
],
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:grpc_lb_policy_weighted_round_robin",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
],
)
grpc_cc_test(
name = "ring_hash_test",
srcs = ["ring_hash_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = [
"lb_unit_test",
],
uses_event_engine = False,
uses_polling = False,
deps = [
":lb_policy_test_lib",
"//src/core:channel_args",
"//src/core:grpc_lb_policy_ring_hash",
"//test/core/test_util:grpc_test_util",
],
)
[call-v3][client-channel] Add benchmarks for lb picks (#37052) Two new benchmarks here-in. Benchmark 1: `bm_picker` ------ Measures various load balancing policies pick performance. For now we cover `pick_first` and `weighted_round_robin` at 1, 10, 100, 1000, 10000, and 100000 backends. Today's output: ``` ------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------ BM_Pick/pick_first/1 20.4 ns 20.4 ns 68285 BM_Pick/pick_first/10 20.6 ns 20.6 ns 68274 BM_Pick/pick_first/100 20.5 ns 20.5 ns 67817 BM_Pick/pick_first/1000 20.6 ns 20.6 ns 67347 BM_Pick/pick_first/10000 20.7 ns 20.7 ns 67317 BM_Pick/pick_first/100000 20.9 ns 20.9 ns 67385 BM_Pick/weighted_round_robin/1 54.7 ns 54.7 ns 26641 BM_Pick/weighted_round_robin/10 54.2 ns 54.2 ns 25828 BM_Pick/weighted_round_robin/100 55.2 ns 55.2 ns 26210 BM_Pick/weighted_round_robin/1000 54.1 ns 54.1 ns 25678 BM_Pick/weighted_round_robin/10000 77.3 ns 76.6 ns 15776 BM_Pick/weighted_round_robin/100000 148 ns 148 ns 9882 ``` Benchmark 2: `bm_load_balanced_call_destination` ----- This benchmark measures call performance when a call spine passes through a `LoadBalancedCallDestination`, and with `BM_LoadBalancedCallDestination` also the construction/destruction cost of this object. We do not consider picker performance in this benchmark as it's separately covered by `bm_picker` above. Today's output: ``` ----------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------------------------------------------------------- BM_UnaryWithSpawnPerEnd<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1255 ns 1255 ns 1076 BM_UnaryWithSpawnPerOp<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1459 ns 1459 ns 939 BM_ClientToServerStreaming<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 209 ns 209 ns 6775 BM_LoadBalancedCallDestination 92.8 ns 92.8 ns 15063 ``` Notes ------ There's some duplicated code between the benchmarks & tests -- this is ok -- as the tests evolve we'll likely want to add more checks to the fixtures, whereas as the benchmarks evolve we may well want to optimize the fixtures so that performance of the systems under test dominate more. That is, the duplicated code is expected to have different evolutionary tracks. Closes #37052 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37052 from ctiller:moar-benchy 30c7072d878248908c59ca53544c3a9d155d9dc6 PiperOrigin-RevId: 658181731
7 months ago
grpc_cc_benchmark(
name = "bm_picker",
srcs = ["bm_picker.cc"],
external_deps = [
"absl/strings",
],
monitoring = HISTORY,
[call-v3][client-channel] Add benchmarks for lb picks (#37052) Two new benchmarks here-in. Benchmark 1: `bm_picker` ------ Measures various load balancing policies pick performance. For now we cover `pick_first` and `weighted_round_robin` at 1, 10, 100, 1000, 10000, and 100000 backends. Today's output: ``` ------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------ BM_Pick/pick_first/1 20.4 ns 20.4 ns 68285 BM_Pick/pick_first/10 20.6 ns 20.6 ns 68274 BM_Pick/pick_first/100 20.5 ns 20.5 ns 67817 BM_Pick/pick_first/1000 20.6 ns 20.6 ns 67347 BM_Pick/pick_first/10000 20.7 ns 20.7 ns 67317 BM_Pick/pick_first/100000 20.9 ns 20.9 ns 67385 BM_Pick/weighted_round_robin/1 54.7 ns 54.7 ns 26641 BM_Pick/weighted_round_robin/10 54.2 ns 54.2 ns 25828 BM_Pick/weighted_round_robin/100 55.2 ns 55.2 ns 26210 BM_Pick/weighted_round_robin/1000 54.1 ns 54.1 ns 25678 BM_Pick/weighted_round_robin/10000 77.3 ns 76.6 ns 15776 BM_Pick/weighted_round_robin/100000 148 ns 148 ns 9882 ``` Benchmark 2: `bm_load_balanced_call_destination` ----- This benchmark measures call performance when a call spine passes through a `LoadBalancedCallDestination`, and with `BM_LoadBalancedCallDestination` also the construction/destruction cost of this object. We do not consider picker performance in this benchmark as it's separately covered by `bm_picker` above. Today's output: ``` ----------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------------------------------------------------------- BM_UnaryWithSpawnPerEnd<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1255 ns 1255 ns 1076 BM_UnaryWithSpawnPerOp<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1459 ns 1459 ns 939 BM_ClientToServerStreaming<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 209 ns 209 ns 6775 BM_LoadBalancedCallDestination 92.8 ns 92.8 ns 15063 ``` Notes ------ There's some duplicated code between the benchmarks & tests -- this is ok -- as the tests evolve we'll likely want to add more checks to the fixtures, whereas as the benchmarks evolve we may well want to optimize the fixtures so that performance of the systems under test dominate more. That is, the duplicated code is expected to have different evolutionary tracks. Closes #37052 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37052 from ctiller:moar-benchy 30c7072d878248908c59ca53544c3a9d155d9dc6 PiperOrigin-RevId: 658181731
7 months ago
deps = [
"//:config",
"//:grpc",
"//src/core:lb_policy",
"//test/core/test_util:build",
[call-v3][client-channel] Add benchmarks for lb picks (#37052) Two new benchmarks here-in. Benchmark 1: `bm_picker` ------ Measures various load balancing policies pick performance. For now we cover `pick_first` and `weighted_round_robin` at 1, 10, 100, 1000, 10000, and 100000 backends. Today's output: ``` ------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------ BM_Pick/pick_first/1 20.4 ns 20.4 ns 68285 BM_Pick/pick_first/10 20.6 ns 20.6 ns 68274 BM_Pick/pick_first/100 20.5 ns 20.5 ns 67817 BM_Pick/pick_first/1000 20.6 ns 20.6 ns 67347 BM_Pick/pick_first/10000 20.7 ns 20.7 ns 67317 BM_Pick/pick_first/100000 20.9 ns 20.9 ns 67385 BM_Pick/weighted_round_robin/1 54.7 ns 54.7 ns 26641 BM_Pick/weighted_round_robin/10 54.2 ns 54.2 ns 25828 BM_Pick/weighted_round_robin/100 55.2 ns 55.2 ns 26210 BM_Pick/weighted_round_robin/1000 54.1 ns 54.1 ns 25678 BM_Pick/weighted_round_robin/10000 77.3 ns 76.6 ns 15776 BM_Pick/weighted_round_robin/100000 148 ns 148 ns 9882 ``` Benchmark 2: `bm_load_balanced_call_destination` ----- This benchmark measures call performance when a call spine passes through a `LoadBalancedCallDestination`, and with `BM_LoadBalancedCallDestination` also the construction/destruction cost of this object. We do not consider picker performance in this benchmark as it's separately covered by `bm_picker` above. Today's output: ``` ----------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------------------------------------------------------- BM_UnaryWithSpawnPerEnd<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1255 ns 1255 ns 1076 BM_UnaryWithSpawnPerOp<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1459 ns 1459 ns 939 BM_ClientToServerStreaming<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 209 ns 209 ns 6775 BM_LoadBalancedCallDestination 92.8 ns 92.8 ns 15063 ``` Notes ------ There's some duplicated code between the benchmarks & tests -- this is ok -- as the tests evolve we'll likely want to add more checks to the fixtures, whereas as the benchmarks evolve we may well want to optimize the fixtures so that performance of the systems under test dominate more. That is, the duplicated code is expected to have different evolutionary tracks. Closes #37052 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37052 from ctiller:moar-benchy 30c7072d878248908c59ca53544c3a9d155d9dc6 PiperOrigin-RevId: 658181731
7 months ago
],
)