Skip to content

gcp: change default control-plane instance size from custom-6-16384 to custom-8-16384 - #82852

Open
sdodson wants to merge 2 commits into
openshift:mainfrom
sdodson:gcp-control-plane-e2-custom-8-16384-default
Open

gcp: change default control-plane instance size from custom-6-16384 to custom-8-16384#82852
sdodson wants to merge 2 commits into
openshift:mainfrom
sdodson:gcp-control-plane-e2-custom-8-16384-default

Conversation

@sdodson

@sdodson sdodson commented Aug 3, 2026

Copy link
Copy Markdown
Member

Summary

Commit 1: Changes the shared GCP IPI default control-plane instance size from e2-custom-6-16384 (6 vCPU / 16GB) to e2-custom-8-16384 (8 vCPU / 16GB) in ipi-conf-gcp-commands.sh. Single-line default change affecting every GCP job across every release branch that doesn't already override with something larger - no per-job config edits needed for this part.

Commit 2: Replaces the only 3 existing CONTROL_PLANE_NODE_TYPE/COMPUTE_NODE_TYPE overrides in the repo (nightly-4.21/nightly-4.22/nightly-5.0 e2e-gcp-custom-dns, currently e2-custom-8-32768) with e2-standard-8. Both are 8 vCPU/32GB, but GCP's custom machine type pricing carries a ~5% premium over the equivalent predefined shape when the ratio matches a predefined tier exactly - confirmed via the GCP Cloud Billing Catalog API ($616.37/mo vs $587.02/mo for 3 nodes). Custom types only save money when trimming RAM below the nearest predefined tier, which wasn't happening here. Strict cost win, no behavior change.

Why (commit 1)

The 6 vCPU default has an existing code comment noting it was a "temporary test to see if this helps the consistent high CPU alerts and random test failures" - this same pattern was independently confirmed via:

  1. Empirical rehearsal campaign (12 runs across 3 alternative instance types on debug PR [Debug] Test e2-standard-8 control plane for gcp-ovn-rt-upgrade #82754), which found e2-custom-8-16384 matches or beats e2-standard-8 on etcd fsync/commit latency, control-plane CPU saturation, and etcd error rates - at ~13% lower monthly cost than e2-standard-8 and only ~24% above the current default's cost.
  2. A 30-day production survey across ~20 GCP 5.0 jobs, which found the same elevated etcd fsync/commit-latency pattern broadly present on the current 6 vCPU default, not isolated to one job.
  3. Control-plane vCPU count (not memory ratio or CPU host platform) was found to be the dominant driver of the improvement - n2-standard-4 (4 vCPU) performed worse than the 6 vCPU baseline, while every 8-vCPU option tested performed better.

Scope

  • Only the shared *-case (amd64) default in ipi-conf-gcp-commands.sh is changed. The xlarge/large/compact SIZE_VARIANT branches (already >=8 vCPU equivalent) and the arm64 path (t2a-standard-4, unvalidated by this work) are untouched.
  • Worker/compute node default (COMPUTE_NODE_TYPE) is unchanged for the shared default - out of scope for that part of this work (the commit-2 change to e2e-gcp-custom-dns's worker override is a separate, pricing-driven cleanup, not a sizing change).

Validation

This affects ~722 GCP job configs across every active release branch (4.6-5.0, nightly, OKD). Before merging, this should be rehearsed against a representative sample of jobs (at minimum a 5.0 e2e job, an upgrade job, and one older stable branch) to confirm the shared step-registry change behaves as expected. Not rehearsed as part of this PR submission - please advise if you'd like specific jobs rehearsed before review.

Test plan

  • Rehearse a handful of representative GCP jobs across release branches to confirm the new default installs correctly
  • Confirm no e2e/upgrade job regressions on the rehearsed jobs
  • Rehearse e2e-gcp-custom-dns on one branch to confirm e2-standard-8 behaves identically to e2-custom-8-32768
  • Get sign-off given the "consult cloud financial operations before changing default family type" note in the surrounding code (this PR keeps the same e2 family, only changes size within family, but flagging for visibility)

Summary by CodeRabbit

  • Test Infrastructure
    • Updated Azure test environments with refreshed compute and control-plane machine sizes.
    • Improved consistency across nightly, upgrade, rollback, and multi-architecture test scenarios.
    • Migrated several Azure worker configurations to newer VM sizes.
    • Increased the default AMD64 GCP master configuration to 8 vCPUs and 16 GB memory.
    • Standardized GCP custom DNS test environments on 8-vCPU machine types for compute and control-plane nodes.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 3, 2026
@openshift-ci
openshift-ci Bot requested review from oliver-smakal and smg247 August 3, 2026 23:14
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

Azure test jobs now use updated compute, control-plane, and additional-worker VM types. GCP fallback and custom DNS tests now use updated machine types.

Changes

Cloud VM sizing

Layer / File(s) Summary
Azure nightly sizing
ci-operator/config/openshift/openshift-tests-private/*amd64-nightly*.yaml, ci-operator/config/openshift/openshift-tests-private/*multi-nightly.yaml, ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22.yaml
Azure IPI, HyperShift, Mag, and Windows-container jobs now specify Standard_D4as_v5 compute nodes and, where applicable, Standard_D8as_v5 control-plane nodes.
Azure upgrade and rollback sizing
ci-operator/config/openshift/openshift-tests-private/*upgrade*.yaml, ci-operator/config/openshift/openshift-tests-private/*rollback*.yaml
Azure upgrade, rollback, and scheduled upgrade jobs now specify updated compute and control-plane VM sizes.
Azure multi-architecture sizing
ci-operator/config/openshift/openshift-tests-private/*multi*.yaml
Additional worker VM types changed from Standard_D4s_v3 to Standard_D4s_v5. Related jobs now specify Standard_D4as_v5 compute and Standard_D8as_v5 control-plane nodes.
GCP machine sizing
ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh, ci-operator/config/openshift/release/openshift-release-main__nightly-*.yaml
The fallback AMD64 master type changed to e2-custom-8-16384. Custom DNS tests now use e2-standard-8 for compute and control-plane nodes.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: oliver-smakal, smg247, redhat-chai-bot

🚥 Pre-merge checks | ✅ 5 | ❌ 10

❌ Failed checks (10 inconclusive)

Check name Status Explanation Resolution
Stable And Deterministic Test Names ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Test Structure And Quality ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Microshift Test Compatibility ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Single Node Openshift (Sno) Test Compatibility ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Topology-Aware Scheduling Compatibility ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Ote Binary Stdout Contract ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Ipv6 And Disconnected Network Test Compatibility ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
No-Weak-Crypto ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
Container-Privileges ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
No-Sensitive-Data-In-Logs ❓ Inconclusive Repository clone failed, so this custom check could not run with code access. Retry the review run. If this persists, inspect pre-merge custom-check logs for infrastructure or agent runtime failures.
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the primary change to the shared GCP default control-plane instance size.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@sdodson, pj-rehearse: unable to determine affected jobs. This could be due to a branch that needs to be rebased. ERROR:

couldn't prepare candidate: couldn't rebase candidate onto 07de2f45b9509e19e6edbf3581a10f3b0a025504 due to conflicts
Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh`:
- Around line 41-44: Add representative AMD64 GCP job links and explicit
sign-off evidence for the e2-custom-8-16384 default in the surrounding comment
for master_type_suffix. Retain the existing PR reference and performance
rationale, and ensure the cited runs cover the exact instance type before merge.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d6eb6e1b-93fb-4b25-af3c-18060c46090a

📥 Commits

Reviewing files that changed from the base of the PR and between 07de2f4 and 2ca8c5d.

📒 Files selected for processing (12)
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__amd64-nightly-4.22-upgrade-from-stable-4.21.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__amd64-nightly-4.22-upgrade-from-stable-4.22.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__amd64-nightly.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__amd64-rollback-nightly.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__amd64-stable-4.22-upgrade-from-stable-4.21.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__multi-nightly-4.22-cpou-upgrade-from-4.20.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__multi-nightly-4.22-upgrade-from-stable-4.21.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__multi-nightly-4.22-upgrade-from-stable-4.22.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__multi-nightly.yaml
  • ci-operator/config/openshift/openshift-tests-private/openshift-openshift-tests-private-release-4.22__multi-stable.yaml
  • ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

Comment on lines +41 to +44
# 8 vCPU / 16GB default: empirically validated (PR openshift/release#82754) to
# eliminate the CPU saturation / etcd disk-latency pattern seen with the prior
# 6 vCPU default, at a lower cost than e2-standard-8.
master_type_suffix="custom-8-16384"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n -C 8 \
  'master_type_suffix|SIZE_VARIANT|custom-6-16384|custom-8-16384' \
  ci-operator/step-registry/ipi/conf/gcp \
  ci-operator/config

Repository: openshift/release

Length of output: 2110


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- repository state ---'
pwd
git status --short --branch
printf '%s\n' '--- target files ---'
git ls-files 'ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh' 'ci-operator/config/**' | head -80
printf '%s\n' '--- relevant references ---'
rg -n -C 8 'master_type_suffix|SIZE_VARIANT|custom-6-16384|custom-8-16384' \
  ci-operator/step-registry/ipi/conf/gcp ci-operator/config

Repository: openshift/release

Length of output: 6742


🌐 Web query:

openshift/release PR 82754 GCP custom-8-16384 empirical validation

💡 Result:

There is no evidence of a pull request numbered 82754 in the openshift/release repository [1][2][3][4]. The number 82754 is not associated with an OpenShift release or an empirical validation task for the GCP custom machine type custom-8-16384. While custom-8-16384 refers to a standard Google Cloud Platform (GCP) custom instance type configuration with 8 vCPUs and 16 GiB (16384 MB) of memory [5][6], it is a generic resource specification rather than a specific OpenShift validation target linked to the requested PR number [7]. Publicly available information regarding 82754 unrelated to OpenShift includes references to technical documentation for hardware components [8], security configuration guidelines [9][10], and unrelated software patches [11].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- target script ---'
sed -n '1,100p' ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

printf '%s\n' '--- repository references ---'
rg -n -C 8 'master_type_suffix|SIZE_VARIANT|custom-6-16384|custom-8-16384' \
  ci-operator/step-registry/ipi/conf/gcp ci-operator/config || true

printf '%s\n' '--- related GCP step files ---'
git ls-files 'ci-operator/step-registry/ipi/conf/gcp/*'

Repository: openshift/release

Length of output: 50374


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

for url in \
  'https://api.github.com/repos/openshift/release/pulls/82754' \
  'https://api.github.com/repos/openshift/release/issues/82754' \
  'https://api.github.com/repos/openshift/release/commits?per_page=100'
do
  printf '\n--- %s ---\n' "$url"
  curl -LfsS --max-time 20 \
    -H 'Accept: application/vnd.github+json' \
    "$url" | jq '{message,number,title,state,html_url,merged_at,body}'
done

Repository: openshift/release

Length of output: 274


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- target script ---'
cat -n ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

printf '%s\n' '--- exact symbol references in step registry ---'
rg -n -C 5 'master_type_suffix|custom-6-16384|custom-8-16384' ci-operator/step-registry || true

printf '%s\n' '--- GCP workflow and chain references ---'
rg -n -C 4 'ipi-conf-gcp|ipi-gcp|conf-gcp' ci-operator/step-registry ci-operator/config --glob '*.yaml' --glob '*.json' || true

printf '%s\n' '--- cited identifier in local repository ---'
rg -n '82754' . || true

Repository: openshift/release

Length of output: 50374


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- recent history for target script ---'
git log -n 12 --format='%h %ad %s' --date=short -- ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

printf '%s\n' '--- repository remotes ---'
git remote -v

Repository: openshift/release

Length of output: 441


🌐 Web query:

site:github.com/openshift/release/pull/82754

💡 Result:

PR #82754 in openshift/release is an open, rehearsal-only experiment titled:

[Debug] Test e2-standard-8 control plane for gcp-ovn-rt-upgrade

It tests larger GCP control-plane nodes to determine whether additional CPU and disk throughput reduce etcd latency and CPU-saturation issues. It should not be merged. The PR later also tests n2-standard-4 as a lower-sizing comparison. [1] (github.com)

Citations:


🌐 Web query:

"openshift/release#82754"

💡 Result:

There is no public information available regarding a pull request with the number #82754 in the openshift/release repository. Search results for this number returned references to a Common Configuration Enumeration (CCE) identifier, CCE-82754-3, associated with the secure configuration of Red Hat Enterprise Linux CoreOS rather than an OpenShift pull request [1][2]. Other pull requests in the openshift/release repository exist with different identifiers [3][4][5][6][7].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- current fallback logic ---'
sed -n '1,90p' ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

printf '%s\n' '--- change commit ---'
git show --format=fuller --no-ext-diff --unified=25 \
  2ca8c5d90 -- ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh

printf '%s\n' '--- exact machine-size references in GCP step files ---'
rg -n 'master_type_suffix|custom-[0-9]+-[0-9]+|e2-standard-8|n2-standard-4' \
  ci-operator/step-registry/ipi/conf/gcp

Repository: openshift/release

Length of output: 12924


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- commit and parent metadata ---'
git show -s --format='%H%n%P%n%B' 2ca8c5d90

printf '%s\n' '--- parent value ---'
git show 2ca8c5d90^:ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh \
  | sed -n '30,55p'

Repository: openshift/release

Length of output: 1698


🌐 Web query:

site:github.com/openshift/release/pull/82754 "custom-8-16384"

💡 Result:

No search results were found for:

site:github.com/openshift/release/pull/82754 "custom-8-16384"


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- control-plane override references ---'
rg -n -C 5 'CONTROL_PLANE_NODE_TYPE|e2-custom-8-32768' \
  ci-operator/step-registry/ipi ci-operator/config || true

printf '%s\n' '--- files with the claimed override ---'
rg -l 'e2-custom-8-32768' ci-operator/config ci-operator/step-registry || true

printf '%s\n' '--- default-size inputs in the GCP configuration path ---'
rg -n -C 4 'SIZE_VARIANT|CONTROL_ARCH|OCP_ARCH|COMPUTE_NODE_TYPE' \
  ci-operator/step-registry/ipi/conf/gcp \
  ci-operator/step-registry/ipi/conf \
  --glob '*.yaml' --glob '*.sh' || true

Repository: openshift/release

Length of output: 50374


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path

needles = (
    "chain: ipi-conf-gcp",
    "ref: ipi-conf-gcp",
    "workflow: ipi-gcp",
    "e2-custom-8-32768",
    "CONTROL_PLANE_NODE_TYPE",
)
for root in (Path("ci-operator/config"), Path("ci-operator/step-registry")):
    counts = {needle: 0 for needle in needles}
    files = {needle: set() for needle in needles}
    for path in root.rglob("*"):
        if not path.is_file():
            continue
        try:
            text = path.read_text(errors="replace")
        except OSError:
            continue
        for needle in needles:
            if needle in text:
                counts[needle] += text.count(needle)
                files[needle].add(str(path))
    print(root)
    for needle in needles:
        print(f"{needle}: {counts[needle]} matches in {len(files[needle])} files")
        for path in sorted(files[needle])[:20]:
            print(f"  {path}")
PY

Repository: openshift/release

Length of output: 18284


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- explicit control-plane override step ---'
cat -n ci-operator/step-registry/ipi/conf/gcp/control-plane-node-type/ipi-conf-gcp-control-plane-node-type-commands.sh
cat -n ci-operator/step-registry/ipi/conf/gcp/control-plane-node-type/ipi-conf-gcp-control-plane-node-type-ref.yaml

printf '%s\n' '--- three claimed override jobs ---'
rg -n -C 10 'e2-custom-8-32768|ipi-conf-gcp-control-plane-node-type' \
  ci-operator/config/openshift/release/openshift-release-main__nightly-4.21.yaml \
  ci-operator/config/openshift/release/openshift-release-main__nightly-4.22.yaml \
  ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml

Repository: openshift/release

Length of output: 10103


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- default GCP provision chain ---'
cat -n ci-operator/step-registry/cucushift/installer/rehearse/gcp/ipi/default/provision/cucushift-installer-rehearse-gcp-ipi-default-provision-chain.yaml

printf '%s\n' '--- GCP machine-type check ---'
cat -n ci-operator/step-registry/cucushift/installer/check/gcp/machine-type/cucushift-installer-check-gcp-machine-type-commands.sh

Repository: openshift/release

Length of output: 3733


Link the representative validation and sign-off for e2-custom-8-16384.

PR openshift/release#82754 is cited for 12 rehearsal runs, including this exact type, but no run links or sign-off are included. Add evidence for representative AMD64 GCP jobs before merge.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh` around lines
41 - 44, Add representative AMD64 GCP job links and explicit sign-off evidence
for the e2-custom-8-16384 default in the surrounding comment for
master_type_suffix. Retain the existing PR reference and performance rationale,
and ensure the cited runs cover the exact instance type before merge.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@sdodson, pj-rehearse: unable to determine affected jobs. This could be due to a branch that needs to be rebased. ERROR:

couldn't prepare candidate: couldn't rebase candidate onto 07de2f45b9509e19e6edbf3581a10f3b0a025504 due to conflicts
Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

sdodson added 2 commits August 3, 2026 19:32
…o custom-8-16384

The default e2-custom-6-16384 (6 vCPU) GCP control-plane sizing has been
associated with consistent high CPU alerts and elevated etcd disk-latency
(WAL fsync / backend commit) across many GCP e2e jobs, contributing to
flaky, non-reproducible test failures during upgrade and general e2e runs.

An empirical rehearsal campaign on PR openshift#82754 (12 rehearsal runs across
n2-standard-4, e2-standard-8, e2-custom-8-16384, and n2-custom-8-16384)
found that control-plane vCPU count, not memory ratio or CPU platform,
is the dominant driver of the improvement, and that e2-custom-8-16384
matches or beats e2-standard-8 on etcd/CPU metrics at a lower monthly
cost by avoiding e2-standard-8's unneeded extra RAM.

This changes the shared default in ipi-conf-gcp-commands.sh so every
GCP job across every release branch that doesn't already set a larger
CONTROL_PLANE_NODE_TYPE picks up the new sizing automatically, with no
per-job config changes required. The 3 existing per-job overrides
(nightly-4.21/4.22/5.0 e2e-gcp-custom-dns -> e2-custom-8-32768) are
already >= 8 vCPU and are left untouched.

The arm64 path (t2a-standard-4) is unaffected - custom sizes aren't
supported on arm64, and this change was only validated on amd64
(e2/n2 GCP host pools).

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
e2-custom-8-32768 (8 vCPU, 32GB, custom) and e2-standard-8 (8 vCPU,
32GB, predefined) have identical vCPU/RAM specs, but GCP's custom
machine type pricing carries a ~5% premium over the equivalent
predefined shape when the ratio matches a predefined tier exactly
(confirmed via the GCP Cloud Billing Catalog API: $616.37/mo vs
$587.02/mo for 3 nodes). Custom types only save money when trimming
RAM below the nearest predefined tier, which isn't the case here.

These were the only 3 CONTROL_PLANE_NODE_TYPE/COMPUTE_NODE_TYPE
overrides in the repo using this instance type
(nightly-4.21/4.22/5.0 e2e-gcp-custom-dns), so switching to
e2-standard-8 is a strict cost win with no behavior change.

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
@sdodson
sdodson force-pushed the gcp-control-plane-e2-custom-8-16384-default branch from 8ec7704 to 5103c9d Compare August 3, 2026 23:33
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 3, 2026
@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: sdodson

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@sdodson: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-priv-openshift-tests-private-main-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-5.1-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-5.0-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.23-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.22-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.21-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.20-debug-winc-gcp-ipi openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-main-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-5.1-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-5.0-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.23-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.22-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.21-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.20-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.11-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-priv-openshift-tests-private-release-4.10-e2e-console openshift-priv/openshift-tests-private presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-aescbc openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-aesgcm openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-rotation-aescbc openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-rotation-aesgcm openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-perf-aescbc openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-perf-aesgcm openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-serial openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-main-e2e-gcp-operator-encryption-kms-rotation openshift/cluster-kube-apiserver-operator presubmit Registry content changed
pull-ci-openshift-cluster-kube-apiserver-operator-release-5.1-e2e-gcp-operator-encryption-aescbc openshift/cluster-kube-apiserver-operator presubmit Registry content changed

A total of 6218 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@sdodson: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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.

1 participant