Skip to content

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

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
sdodson:gcp-control-plane-e2-custom-8-16384-default
Aug 12, 2026
Merged

openshift-merge-bot[bot] merged 1 commit 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

Final production GCP sizing scheme for CI, based on three rehearsal campaigns (#82754, #82856, #83005).

Node type Non-serial GCP jobs Serial GCP jobs
Control plane e2-custom-6-16384 → e2-custom-8-16384 (+2 vCPU) unchanged — explicit CONTROL_PLANE_NODE_TYPE: e2-custom-6-16384 override added (51 jobs / 33 config files) to opt out of the new shared default
Workers e2-custom-6-16384 → e2-standard-4 e2-custom-6-16384 → e2-standard-4 (same change as non-serial)

Also: e2e-gcp-custom-dns (nightly-4.21/4.22/5.0) moves e2-custom-8-32768 → e2-standard-8 — identical specs, avoids GCP's custom-machine-type pricing premium. Cost-only, no behavior change.

Why

  • Control plane +2 vCPU (non-serial only): the prior 6-vCPU default was a "temporary test" per its own code comment. A rehearsal campaign and a 30-day production survey both confirmed elevated etcd fsync/commit latency on the 6-vCPU default; vCPU count (not memory ratio) was the dominant fix. Serial control planes were not tested at 8 vCPU — serial jobs already show lower control-plane CPU utilization than non-serial jobs, so there's less reason to expect the same benefit. A separate test of downsizing serial control planes further to e2-standard-4 did regress etcd fsync p99 (29-113% above baseline, with one round hitting etcd overload errors), so serial control planes stay at their current 6-vCPU size — neither upsized nor downsized.
  • Workers → e2-standard-4 (all jobs): validated safe, not beneficial — no latency or correctness regression on any job class across all rehearsal rounds in the earlier campaign. This is a cost reduction with no measured downside, not a reliability fix.
  • A further step-down to n4-standard-4 was evaluated and shelved: some installer versions reject its required disk type, and instances intermittently vanished mid-provisioning (GCP capacity/stockout behavior on the n4 family, not a config issue).

Validation results (#83005)

10 production GCP jobs (2 release-blocking, 8 informing) rehearsed against fixed 30-day Sippy baselines, using a two-proportion power test (90% confidence / 80% power) for a ≥50% failure-rate reduction. All 10 jobs PROVEN, including both blocking jobs:

Caveat: these deltas compare a short rehearsal window against a 30-day historical baseline, so they capture more than just the node-sizing change — e.g. serial jobs (worker resize only, no control-plane change) show some of the largest gains, which is not consistent with a simple "control-plane vCPU is the driver" story. Treat the deltas as evidence the change causes no regression at statistically meaningful confidence, not as a precise measurement of each individual node-sizing change's isolated effect.

Job class Job Baseline pass rate Validated pass rate
Non-serial (CP + worker changed) aggregated-gcp-ovn-rt-upgrade-5.0-major (blocking) 31.7% 60.0%
Non-serial (CP + worker changed) gcp-ovn 55.8% 73.1%
Non-serial (CP + worker changed) gcp-ovn-rt 46.5% 88.9%
Non-serial (CP + worker changed) gcp-ovn-techpreview 42.0% 73.3%
Non-serial (CP + worker changed) gcp-ovn-upgrade-5.0-major 48.8% 80.0%
Non-serial (CP + worker changed) gcp-ovn-upgrade-micro 42.6% 100.0%
Non-serial (CP + worker changed) gcp-ovn-rt-upgrade-4.22-minor (blocking) 53.1% 82.6%
Serial (worker only changed) gcp-ovn-serial 52.3% 78.3%
Serial (worker only changed) gcp-ovn-techpreview-serial-1of2 52.3% 95.7%
Serial (worker only changed) gcp-ovn-techpreview-serial-2of2 53.5% 70.8%

Scope

  • Only the shared *-case (amd64) defaults in ipi-conf-gcp-commands.sh change. SIZE_VARIANT branches (xlarge/large/compact), arm64, and pre-existing per-job overrides are untouched.
  • The serial CONTROL_PLANE_NODE_TYPE override applies only to jobs on a genuinely serial workflow (openshift-e2e-gcp-serial*, openshift-e2e-gcp-ovn-serial, openshift-e2e-gcp-sdn-serial, openshift-e2e-gcp-techpreview-serial). A few old jobs with "serial" in the as: name but running the parallel workflow are intentionally left alone.
  • Affects ~722 GCP job configs across every active release branch.

Test plan

  • Rehearse representative GCP jobs (e2e, serial, upgrade, multiple branches) — see validation results above
  • Confirm no e2e/upgrade regressions on rehearsed jobs
  • Rehearse e2e-gcp-custom-dns to confirm e2-standard-8 behaves identically to e2-custom-8-32768
  • Sign-off given the "consult cloud financial operations before changing default family type" note (this PR stays within the e2 family, only changes size)

@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

GCP provisioning defaults now use updated master and compute machine types. CI and nightly GCP serial test configurations explicitly set control-plane machine types. Custom DNS tests use e2-standard-8 nodes.

Changes

GCP machine type configuration

Layer / File(s) Summary
GCP provisioning defaults
ci-operator/step-registry/ipi/conf/gcp/ipi-conf-gcp-commands.sh
The AMD64 master fallback uses e2-custom-8-16384. The default non-arm64 compute node uses e2-standard-4.
CI serial test configurations
ci-operator/config/openshift/release/openshift-release-main__ci-*.yaml
GCP serial and TechPreview test configurations set CONTROL_PLANE_NODE_TYPE to e2-custom-6-16384.
Nightly serial test configurations
ci-operator/config/openshift/release/openshift-release-main__nightly-*.yaml
GCP serial configurations set CONTROL_PLANE_NODE_TYPE to e2-custom-6-16384. Custom DNS configurations use e2-standard-8 for compute and control-plane nodes.

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

Suggested reviewers: smg247, oliver-smakal

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 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.
Stable And Deterministic Test Names ✅ Passed The diff changes only 33 YAML configuration files and one GCP shell configuration; searches found no Ginkgo test declarations or dynamic test titles.
Test Structure And Quality ✅ Passed The PR changes 33 YAML configs and one shell script; it adds no Ginkgo test files or Ginkgo constructs, so these test-quality requirements are not applicable.
Microshift Test Compatibility ✅ Passed The commit changes only 33 YAML configuration files and one shell script; the added lines contain sizing environment values and no new Ginkgo tests.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The pull request changes only GCP shell and YAML CI configuration; it adds or modifies no Ginkgo e2e tests requiring SNO compatibility review.
Topology-Aware Scheduling Compatibility ✅ Passed The patch changes GCP machine types and CI environment overrides only; it adds no deployment manifests, operators, controllers, or topology-related scheduling constraints.
Ote Binary Stdout Contract ✅ Passed The patch changes only 33 YAML files and one shell script; no Go OTE entry points or suite hooks were added, and shell output writes target files.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR changes only 33 YAML configurations and one shell file; no new Ginkgo tests, IPv4 assumptions, or external-connectivity code were added.
No-Weak-Crypto ✅ Passed The 34-file patch adds only GCP sizing comments, shell assignments, and YAML machine-type settings; parsed additions contain no weak-crypto terms, crypto APIs, secret handling, or comparisons.
Container-Privileges ✅ Passed The patch adds only GCP node-type settings and sizing comments; no added privileged, hostPID, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, or root settings. hostNetwork matches are existing test-s...
No-Sensitive-Data-In-Logs ✅ Passed The diff adds only GCP machine-type settings and validation comments; it introduces no logging, output of secrets, tokens, PII, hostnames, or customer data.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary change to the shared GCP control-plane instance default.
✨ 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.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@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-okd-machine-os-master-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-5.1-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-5.0-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.23-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.22-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.21-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.20-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.19-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.18-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.17-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.16-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.15-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.14-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.13-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.12-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.11-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.10-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.9-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.8-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.7-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.6-e2e-gcp openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-master-e2e-gcp-upgrade openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-5.1-e2e-gcp-upgrade openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-5.0-e2e-gcp-upgrade openshift/okd-machine-os presubmit Registry content changed
pull-ci-openshift-okd-machine-os-release-4.23-e2e-gcp-upgrade openshift/okd-machine-os 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.

…planes, e2-standard-4 workers

Final production GCP sizing scheme, based on two rehearsal campaigns
(openshift#82754, openshift#82856):

- Control planes: change the shared ipi-conf-gcp default from
  e2-custom-6-16384 (6 vCPU / 16GB) to e2-custom-8-16384 (8 vCPU / 16GB).
  The prior default carried a code comment noting it was a "temporary
  test to see if this helps the consistent high CPU alerts and random
  test failures" - confirmed via a 12-run rehearsal campaign across 3
  alternative instance types (openshift#82754) and a 30-day production survey
  across ~20 GCP 5.0 jobs, both showing e2-custom-8-16384 matches or
  beats e2-standard-8 on etcd fsync/commit latency and CPU saturation
  at ~13% lower cost. vCPU count (not memory ratio or CPU host
  platform) was the dominant driver: n2-standard-4 (4 vCPU) performed
  worse than the 6 vCPU baseline, every 8-vCPU option performed better.

- Serial control planes: pinned back down to e2-custom-6-16384 via an
  explicit CONTROL_PLANE_NODE_TYPE override on every serial GCP job
  (51 jobs across 33 config files, using workflows
  openshift-e2e-gcp-serial{,-runc,-cgroupsv1}, openshift-e2e-gcp-ovn-serial,
  openshift-e2e-gcp-sdn-serial, openshift-e2e-gcp-techpreview-serial).
  Serial jobs run a non-parallel test suite and already show lower
  control-plane CPU utilization than non-serial jobs, and a 3-round
  study (openshift#82856) found downsizing them further to e2-standard-4 (4 vCPU)
  causes a clear, reproducible etcd disk-latency regression (fsync p99
  elevated 29-113% above baseline in every round with data, including
  one round with real etcd overload errors: "etcdserver: too many
  requests", leader elections). A handful of old (nightly-4.6-4.16)
  jobs have "serial" in their as: name but run the parallel workflow
  (openshift-e2e-gcp/openshift-e2e-gcp-sdn) - left alone, since
  serial-ness is determined by workflow, not job name.

- Workers: change the shared COMPUTE_NODE_TYPE default from
  e2-custom-6-16384 to e2-standard-4 for all GCP jobs (serial and
  non-serial). The same openshift#82856 campaign found no disqualifying
  etcd/CPU regression at this size across 3 rounds.

- e2e-gcp-custom-dns (nightly-4.21/4.22/5.0): replaces the only 3
  pre-existing CONTROL_PLANE_NODE_TYPE/COMPUTE_NODE_TYPE overrides in
  the repo, 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). Strict cost win, no behavior change.

A further step-down to n4-standard-4 was also evaluated
(openshift#82929, openshift#82934) but is not
currently viable: some installer versions reject n4-standard-4's
required hyperdisk-balanced disk type outright, and instances (workers,
and in one case a control-plane node) intermittently vanished
mid-provisioning with "can't find created instance" - consistent with
GCP-side capacity/stockout behavior on the n4 family in the tested
zones rather than a config issue. Revisit in the future once GCP
capacity/tooling matures.

Scope: only the shared *-case (amd64) defaults in ipi-conf-gcp-commands.sh
are touched; xlarge/large/compact SIZE_VARIANT branches and the arm64
path (t2a-standard-4, unvalidated by this work) are untouched.
Pre-existing per-job overrides elsewhere in the repo (e.g. jobs pinned
to larger sizes for their own reasons) are left alone.

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 b789b7e to 436ae3f Compare August 5, 2026 20:51
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@sdodson: pj-rehearse could not automatically process this event because the request waited in queue for longer than 5 minutes. Use /pj-rehearse to trigger rehearsals manually.

@openshift-ci

openshift-ci Bot commented Aug 5, 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.

@dgoodwin

Copy link
Copy Markdown
Contributor

/lgtm
/approve

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 12, 2026
@openshift-ci

openshift-ci Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dgoodwin, sdodson

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

The pull request process is described 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-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 12, 2026
@sdodson

sdodson commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse ack

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@sdodson: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-merge-bot openshift-merge-bot Bot added the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label Aug 12, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit 756ba89 into openshift:main Aug 12, 2026
16 checks passed
openshift-merge-bot Bot pushed a commit that referenced this pull request Aug 17, 2026
Also see #82852

Co-authored-by: Jiri Mencak <jmencak@users.noreply.github.com>
sdodson added a commit to sdodson/release that referenced this pull request Aug 24, 2026
…r serial GCP jobs

DO NOT MERGE - rehearsal-only debug PR.

Follow-up to openshift#82852 (production default bump to
e2-custom-8-16384) and openshift#82856 (e2-standard-4 study,
now concluded: workers showed no consistent latency regression but a
plateaued increase in worker CPU>95% breach time on some jobs; serial
control planes showed a clear, reproducible etcd disk-latency
regression and are not recommended at e2-standard-4).

This PR studies n4-standard-4 (Intel Emerald Rapids) as an alternative
sizing point, using the same 8-job structure: 4 non-serial jobs get
COMPUTE_NODE_TYPE=n4-standard-4 (workers only); 4 serial jobs get both
COMPUTE_NODE_TYPE and CONTROL_PLANE_NODE_TYPE=n4-standard-4.

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
TimurMP pushed a commit to TimurMP/release that referenced this pull request Sep 5, 2026
…planes, e2-standard-4 workers (openshift#82852)

Final production GCP sizing scheme, based on two rehearsal campaigns
(openshift#82754, openshift#82856):

- Control planes: change the shared ipi-conf-gcp default from
  e2-custom-6-16384 (6 vCPU / 16GB) to e2-custom-8-16384 (8 vCPU / 16GB).
  The prior default carried a code comment noting it was a "temporary
  test to see if this helps the consistent high CPU alerts and random
  test failures" - confirmed via a 12-run rehearsal campaign across 3
  alternative instance types (openshift#82754) and a 30-day production survey
  across ~20 GCP 5.0 jobs, both showing e2-custom-8-16384 matches or
  beats e2-standard-8 on etcd fsync/commit latency and CPU saturation
  at ~13% lower cost. vCPU count (not memory ratio or CPU host
  platform) was the dominant driver: n2-standard-4 (4 vCPU) performed
  worse than the 6 vCPU baseline, every 8-vCPU option performed better.

- Serial control planes: pinned back down to e2-custom-6-16384 via an
  explicit CONTROL_PLANE_NODE_TYPE override on every serial GCP job
  (51 jobs across 33 config files, using workflows
  openshift-e2e-gcp-serial{,-runc,-cgroupsv1}, openshift-e2e-gcp-ovn-serial,
  openshift-e2e-gcp-sdn-serial, openshift-e2e-gcp-techpreview-serial).
  Serial jobs run a non-parallel test suite and already show lower
  control-plane CPU utilization than non-serial jobs, and a 3-round
  study (openshift#82856) found downsizing them further to e2-standard-4 (4 vCPU)
  causes a clear, reproducible etcd disk-latency regression (fsync p99
  elevated 29-113% above baseline in every round with data, including
  one round with real etcd overload errors: "etcdserver: too many
  requests", leader elections). A handful of old (nightly-4.6-4.16)
  jobs have "serial" in their as: name but run the parallel workflow
  (openshift-e2e-gcp/openshift-e2e-gcp-sdn) - left alone, since
  serial-ness is determined by workflow, not job name.

- Workers: change the shared COMPUTE_NODE_TYPE default from
  e2-custom-6-16384 to e2-standard-4 for all GCP jobs (serial and
  non-serial). The same openshift#82856 campaign found no disqualifying
  etcd/CPU regression at this size across 3 rounds.

- e2e-gcp-custom-dns (nightly-4.21/4.22/5.0): replaces the only 3
  pre-existing CONTROL_PLANE_NODE_TYPE/COMPUTE_NODE_TYPE overrides in
  the repo, 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). Strict cost win, no behavior change.

A further step-down to n4-standard-4 was also evaluated
(openshift#82929, openshift#82934) but is not
currently viable: some installer versions reject n4-standard-4's
required hyperdisk-balanced disk type outright, and instances (workers,
and in one case a control-plane node) intermittently vanished
mid-provisioning with "can't find created instance" - consistent with
GCP-side capacity/stockout behavior on the n4 family in the tested
zones rather than a config issue. Revisit in the future once GCP
capacity/tooling matures.

Scope: only the shared *-case (amd64) defaults in ipi-conf-gcp-commands.sh
are touched; xlarge/large/compact SIZE_VARIANT branches and the arm64
path (t2a-standard-4, unvalidated by this work) are untouched.
Pre-existing per-job overrides elsewhere in the repo (e.g. jobs pinned
to larger sizes for their own reasons) are left alone.

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. rehearsals-ack Signifies that rehearsal jobs have been acknowledged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants