From 3e97614cfc07c70891fe1aa34adea038f7bf4b15 Mon Sep 17 00:00:00 2001 From: WenyXu Date: Mon, 28 Sep 2026 15:26:23 +0000 Subject: [PATCH] ci: increase tracesbench defaults to 8 CPU and 32 GiB Signed-off-by: WenyXu --- .github/workflows/tracesbench.yml | 19 ++++++++++++----- tests/perf/test_ci_runner_scripts.py | 32 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tracesbench.yml b/.github/workflows/tracesbench.yml index 6f633881ffc..335fae8c3ed 100644 --- a/.github/workflows/tracesbench.yml +++ b/.github/workflows/tracesbench.yml @@ -20,7 +20,7 @@ on: default: Aliyun required: true instance_type: - description: 'Instance type; auto = Aliyun: ecs.c9i.2xlarge, AWS: c7i.2xlarge (both 8 vCPU / 16 GiB). Enter a specific type to override.' + description: 'Instance type; auto = Aliyun: ecs.g9i.2xlarge, AWS: m7i.2xlarge (both 8 vCPU / 32 GiB). Enter a specific type to override.' type: string default: auto required: true @@ -45,14 +45,14 @@ on: default: 8 required: true db_cpus: - description: CPU limit per DB container + description: CPU limit per DB container (default 8 vCPU) type: string default: '8' required: true db_memory: - description: Memory limit per DB container + description: Memory limit per DB container (default 32 GiB; shared host also runs the runtime and runner) type: string - default: 16g + default: 32g required: true runtime_cpus: description: CPU limit per runtime container (0 = unrestricted) @@ -95,7 +95,16 @@ jobs: persist-credentials: false - name: Resolve CI runner id: runner - run: python3 greptimedb/.github/scripts/ci-runner-config.py --provider "$PROVIDER" --instance-type "$REQUESTED_INSTANCE_TYPE" + run: | + set -euo pipefail + instance_type="$REQUESTED_INSTANCE_TYPE" + if [[ "$instance_type" == auto ]]; then + case "$PROVIDER" in + Aliyun) instance_type=ecs.g9i.2xlarge ;; + AWS) instance_type=m7i.2xlarge ;; + esac + fi + python3 greptimedb/.github/scripts/ci-runner-config.py --provider "$PROVIDER" --instance-type "$instance_type" - name: Validate budgets and shared runtime id: runtime run: | diff --git a/tests/perf/test_ci_runner_scripts.py b/tests/perf/test_ci_runner_scripts.py index c031230dc85..8300d8623b5 100644 --- a/tests/perf/test_ci_runner_scripts.py +++ b/tests/perf/test_ci_runner_scripts.py @@ -78,6 +78,38 @@ class ProviderConfigTest(unittest.TestCase): with self.subTest(provider=provider, requested=requested): self.assertEqual(config.resolve_instance_type(provider, requested), expected) + def test_traces_workflow_runner_defaults_and_overrides(self): + workflow = (SCRIPTS.parent / "workflows/tracesbench.yml").read_text() + step = workflow.split(" - name: Resolve CI runner\n", 1)[1].split(" - name:", 1)[0] + command = textwrap.dedent(step.split(" run: |\n", 1)[1]) + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + (root / "greptimedb").symlink_to(SCRIPTS.parents[1], target_is_directory=True) + output = root / "output" + for provider, requested, expected in ( + ("Aliyun", "auto", "ecs.g9i.2xlarge"), + ("AWS", "auto", "m7i.2xlarge"), + ("Aliyun", "ecs.c9i.4xlarge", "ecs.c9i.4xlarge"), + ("AWS", "c7i.4xlarge", "c7i.4xlarge"), + ("invalid", "auto", None), + ("AWS", "ecs.g9i.2xlarge", None), + ): + with self.subTest(provider=provider, requested=requested): + output.write_text("") + result = subprocess.run( + ["bash", "-c", command], cwd=root, capture_output=True, text=True, + env=dict(os.environ, PROVIDER=provider, REQUESTED_INSTANCE_TYPE=requested, + GITHUB_OUTPUT=str(output)), timeout=10, + ) + if expected is None: + self.assertNotEqual(result.returncode, 0) + self.assertEqual(output.read_text(), "") + else: + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(output.read_text(), f"instance_type={expected}\n") + self.assertRegex(workflow, r"(?s)db_cpus:.*?default: '8'") + self.assertRegex(workflow, r"(?s)db_memory:.*?default: 32g") + def test_wrong_provider_and_shell_fragments_rejected(self): for provider, requested in (("ec2", "auto"), ("AWS", "ecs.c9i.2xlarge"), ("Aliyun", "c7i.2xlarge"), ("AWS", ""),