Skip to content

Variant Configs & Sweep Tools - #6901

Open
george-kalisse-sada wants to merge 1 commit into
GoogleCloudPlatform:masterfrom
george-kalisse-sada:SADA_4_configs_sweep_tools
Open

Variant Configs & Sweep Tools#6901
george-kalisse-sada wants to merge 1 commit into
GoogleCloudPlatform:masterfrom
george-kalisse-sada:SADA_4_configs_sweep_tools

Conversation

@george-kalisse-sada

Copy link
Copy Markdown
Collaborator

Files: ~20 new files

  • perfkitbenchmarker/data/k8s_agents/config/agentic_benchmark_config.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/baseline.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/kubelet_pulls.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/overlay_none.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/larger_vm.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/hyperdisk_200gb.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/thp.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/sched_tuning.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/swap.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/c4d_amd.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/c4a_arm.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/multi_node.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/variant_reference_guide.md
  • perfkitbenchmarker/data/k8s_agents/config/variants/tuning/kubelet_parallel_pulls.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/tuning/sched_tuner_daemonset.yaml.j2
  • perfkitbenchmarker/data/k8s_agents/config/variants/tuning/swap_config.yaml
  • perfkitbenchmarker/data/k8s_agents/config/variants/tuning/thp_config.yaml
  • perfkitbenchmarker/scripts/agentic/sweep.py
  • perfkitbenchmarker/scripts/agentic/analyze.py
  • .gitignore additions

Description: Adds optimization sweep infrastructure:

  • 11 variant configurations defining different GKE cluster knobs (machine types, disk, kubelet tuning, THP, swap, scheduler tuning, ARM/AMD architectures, multi-node). Each config contains all 7 benchmark keys with the k8s_snapshot key including --enable-pod-snapshots in gke_additional_flags.
  • Shared benchmark config (agentic_benchmark_config.yaml) with YAML anchors for consistent cluster definitions
  • Variant reference guide documenting baseline configuration, per-variant expected influence on each benchmark, and recommended test matrix
  • Tuning files for kubelet, scheduler, swap, and THP configurations
  • Sweep runner (sweep.py) — orchestrates multi-variant benchmark sweeps across all 7 benchmarks with warm pool drain between sweep levels
  • Results analyzer (analyze.py) — parses PKB NDJSON results, computes deltas vs baseline, generates markdown reports and CSV exports. Supports all 7 benchmarks via registry with auto-discovery fallback.

@george-kalisse-sada
george-kalisse-sada force-pushed the SADA_4_configs_sweep_tools branch from 3b6a9ef to 9345124 Compare August 5, 2026 17:45
@roycaihw

roycaihw commented Aug 6, 2026

Copy link
Copy Markdown

/cc @pmandewalkar

return sorted(all_metrics)


def get_median(values):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit: i see that in sweep.py we import statistics and use that median, is there a reason why that's being redefined here?

f"kubectl delete sandboxclaims --all -n {namespace} --ignore-not-found=true",
check=False,
)
for _ in range(100):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Can we use the built in kubernetes wait function here?

@pmandewalkar pmandewalkar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I see a good amount of YAML duplication across configs like baseline.yaml, c4a_arm.yaml, c4d_amd.yaml, larger_vm.yaml, etc., with mostly identical benchmark definitions. I think for overall easier maintenance and longevity could we use templating similar to how it is done in sched_tuner_daemonset.yaml.j2?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants