[benchmark] Add "dashboard" category to scenario_config.py (#33907)

This PR covers C++ only. Other language owners: feel free to ping me if
this would be useful for you.

This allows scenario_config to produce a small superset of tests
required to generate the performance dashboard
https://grafana-dot-grpc-testing.appspot.com/. This only adds a category
to some existing scenarios, and to my knowledge, should not affect any
current automation that uses scenario_config.

I plan to use this category to run gRPC-core experiments and produce
equivalent dashboards. It seems worth landing this independently of
those job configurations, but I'm flexible.

---------

Co-authored-by: drfloob <drfloob@users.noreply.github.com>
pull/33911/head
AJ Heller 2 years ago committed by GitHub
parent 8082abb60c
commit 9c30f6742f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      tools/run_tests/performance/scenario_config.py
  2. 10
      tools/run_tests/performance/scenario_config_exporter.py

@ -25,6 +25,9 @@ SCALABLE = "scalable"
INPROC = "inproc"
SWEEP = "sweep"
PSM = "psm"
# A small superset of the benchmarks required to produce
# https://grafana-dot-grpc-testing.appspot.com/
DASHBOARD = "dashboard"
DEFAULT_CATEGORIES = (SCALABLE, SMOKETEST)
SECURE_SECARGS = {
@ -527,7 +530,7 @@ class CXXLanguage(Language):
minimal_stack=not secure,
categories=smoketest_categories
+ inproc_categories
+ [SCALABLE],
+ [SCALABLE, DASHBOARD],
)
for rpc_type in [
@ -536,6 +539,9 @@ class CXXLanguage(Language):
"streaming_from_client",
"streaming_from_server",
]:
maybe_dashboard = (
[DASHBOARD] if rpc_type in ("unary", "streaming") else []
)
for synchronicity in ["sync", "async"]:
yield _ping_pong_scenario(
"cpp_protobuf_%s_%s_ping_pong_%s"
@ -546,6 +552,7 @@ class CXXLanguage(Language):
async_server_threads=1,
minimal_stack=not secure,
secure=secure,
categories=list(DEFAULT_CATEGORIES) + maybe_dashboard,
)
for size in geometric_progression(
@ -576,6 +583,11 @@ class CXXLanguage(Language):
# see b/198275705
maybe_scalable = [SWEEP]
maybe_dashboard = (
[DASHBOARD]
if rpc_type in ("unary", "streaming")
else []
)
yield _ping_pong_scenario(
"cpp_protobuf_%s_%s_qps_unconstrained_%s"
% (synchronicity, rpc_type, secstr),
@ -587,7 +599,9 @@ class CXXLanguage(Language):
minimal_stack=not secure,
server_threads_per_cq=2,
client_threads_per_cq=2,
categories=inproc_categories + maybe_scalable,
categories=inproc_categories
+ maybe_scalable
+ maybe_dashboard,
)
# TODO(vjpai): Re-enable this test. It has a lot of timeouts

@ -188,7 +188,15 @@ def main() -> None:
argp.add_argument(
"--category",
default="all",
choices=["all", "inproc", "scalable", "smoketest", "sweep", "psm"],
choices=[
"all",
"inproc",
"scalable",
"smoketest",
"sweep",
"psm",
"dashboard",
],
help="Select scenarios for a category of tests.",
)
argp.add_argument(

Loading…
Cancel
Save