Skip to content

OCPBUGS-91745: e2e: fix: clear hugepages before switching kernelPageSize to 4k#1550

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
oblau:fixarm-pagesize-tests
Jun 24, 2026
Merged

OCPBUGS-91745: e2e: fix: clear hugepages before switching kernelPageSize to 4k#1550
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
oblau:fixarm-pagesize-tests

Conversation

@oblau

@oblau oblau commented Jun 18, 2026

Copy link
Copy Markdown
Member

BeforeAll set kernelPageSize=4k without clearing hugepages (512M default
on arm CI cluster), causing the admission webhook to reject the
incompatible combination on aarch64.

  • Declarative baseline in BeforeAll: set kernelPageSize=4k, clear
    hugepages, disable RT; apply only if spec differs (DeepEqual guard)
  • Simplify AfterAll revert with same DeepEqual guard (drop JSON marshal)
  • Fix Expect(err) ordering after GetByNodeLabels
  • Extract 3-step update pattern into ApplyProfileAndWait helper (cosmetic)
  • Remove unused imports (encoding/json, poolname) and poolName variable

Summary by CodeRabbit

  • Tests
    • Improved ARM/aarch64 kernelPageSize end-to-end coverage by standardizing baseline preparation and making the test skip non-ARM nodes.
    • Refined performance profile rollout handling to apply updates only when the target spec differs, using a shared “apply and wait” flow to ensure tuning readiness/completion.
    • Simplified update/revert behavior and the kernel page size validation flow to apply each change, wait for tuning, then verify the observed setting.

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

A new ApplyProfileAndWait helper encapsulates profile application with automatic tuning wait orchestration. The ARM kernelPageSize test is refactored to use this helper for baseline enforcement, per-iteration modifications, and revert logic, while replacing manual JSON spec marshaling with semantic deep-equality comparison.

Changes

ARM kernelPageSize test refactoring with new profile update helper

Layer / File(s) Summary
New ApplyProfileAndWait helper
test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go
Introduces ApplyProfileAndWait(ctx, profile) that applies a performance profile via UpdateWithRetry, derives the pool name using poolname.GetByProfile, logs Ginkgo By checkpoint messages, and waits for tuning update start and completion via existing WaitForTuningUpdating and WaitForTuningUpdated helpers.
ARM kernelPageSize test refactoring
test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go
BeforeAll gates on infrastructure.IsARM, deep-copies the initial profile, enforces a fixed baseline (KernelPageSize=4k, HugePages=nil, RealTimeKernel disabled), and applies it via ApplyProfileAndWait only when the spec differs. AfterAll simplifies revert logic by comparing profile.Spec directly to initialProfile.Spec using semantic deep-equality instead of JSON marshaling, then applies the original profile via ApplyProfileAndWait. Table-driven test iterations replace manual UpdateWithRetry and tuning wait calls with single ApplyProfileAndWait invocations. Removes json, poolname, and encoding/json imports and the poolName state variable.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Test Structure And Quality ⚠️ Warning Multiple error assertions lack meaningful failure messages: 7 in kernelpagesize.go and 8 in profile_update.go lack diagnostic context (e.g., Expect(err).ToNot(HaveOccurred()) should be Expect(err).... Add meaningful failure messages to all error assertions: change Expect(err).ToNot(HaveOccurred()) to include a message describing what failed (e.g., "failed to get performance profile").
✅ Passed checks (14 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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 All Ginkgo test titles in the PR are static and deterministic with no dynamic values like generated suffixes, timestamps, UUIDs, node names, or IP addresses.
Microshift Test Compatibility ✅ Passed PR refactors existing test hooks (BeforeAll/AfterAll) and adds utility function, but adds no new Ginkgo test blocks (It, Describe, Context, When, or DescribeTable). Check applies only to new test a...
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR does not add any new Ginkgo test cases (It(), Describe(), Context(), When(), etc.). The changes are refactoring of existing tests in kernelpagesize.go and adding a helper utility function i...
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only test code (test/e2e/) and test utilities; topology-aware scheduling check applies only to deployment manifests, operator code, or controllers, which this PR does not contain.
Ote Binary Stdout Contract ✅ Passed All changes are in test-level code (BeforeAll, AfterAll, test bodies). Logging uses Ginkgo's By() (outputs to GinkgoWriter, not stdout) and klog (defaults to stderr). No process-level stdout writes...
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR refactors existing Ginkgo e2e tests (not adding new ones) and does not contain IPv4 assumptions or external connectivity requirements that would fail in IPv6-only environments.
No-Weak-Crypto ✅ Passed No weak cryptography (MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB), custom crypto implementations, or non-constant-time secret comparisons detected in the modified test files.
Container-Privileges ✅ Passed PR modifies only Go test files (kernelpagesize.go, profile_update.go), not container/K8s manifests. Container privilege check is not applicable.
No-Sensitive-Data-In-Logs ✅ Passed All logging statements in the PR contain only non-sensitive data: test descriptions, kernel page size values (4k/64k), machine config pool names, and CPU configuration. No passwords, tokens, APIs k...
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly addresses the main fix in the changeset: clearing hugepages before switching kernelPageSize to 4k on ARM architecture, which is the core issue resolved.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@openshift-ci openshift-ci Bot requested review from MarSik and Tal-or June 18, 2026 19:46

@coderabbitai coderabbitai Bot 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.

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 `@test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go`:
- Around line 78-80: The condition checking
`*perfProfile.Spec.RealTimeKernel.Enabled` can panic when RealTimeKernel exists
but the Enabled field is nil. In the if statement that checks
`perfProfile.Spec.RealTimeKernel != nil`, replace the direct dereference of
Enabled with `ptr.Deref(perfProfile.Spec.RealTimeKernel.Enabled, false)` to
safely handle the case where Enabled might be nil, returning false as the
default value if it is.
🪄 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: b1fc153b-dd57-47e2-82d6-26d418eb1899

📥 Commits

Reviewing files that changed from the base of the PR and between 8978bc5 and 86a4692.

📒 Files selected for processing (1)
  • test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go

Comment thread test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go Outdated
validKernelPageSize = currentKernelPageSize != kernelPageSizeBytes4k
if perfProfile.Spec.RealTimeKernel != nil && *perfProfile.Spec.RealTimeKernel.Enabled {
testlog.Info("Setting RealTimeKernel.Enabled to false")
perfProfile.Spec.RealTimeKernel = &performancev2.RealTimeKernel{Enabled: ptr.To(false)}

@mrniranjan mrniranjan Jun 19, 2026

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.

Can we move this if conditions to a helper function
like

func resettodefaults(profile *performancev2.PerformanceProfile) bool {
    GinkgoHelper()
    needsUpdate := false

    // KernelPageSize
    if profile.Spec.KernelPageSize == nil || *profile.Spec.KernelPageSize != performancev2.KernelPageSize(kernelPageSize4k) {
        testlog.Infof("Setting KernelPageSize to %s (was %v)", kernelPageSize4k, getKernelPageSizeValue(profile))
        profile.Spec.KernelPageSize = ptr.To(performancev2.KernelPageSize(kernelPageSize4k))
        needsUpdate = true
    }
.....

return needsupdate
} 

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I found that the need for such function is very common so i created a more general one.
Now the BeforeAll + AfterAll and the test are shorter and easier to read.

@Tal-or Tal-or 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.

Please address the existing review comments (including the CodeRabbit one which make sense in this case)
otherwise, LGTM

@oblau oblau force-pushed the fixarm-pagesize-tests branch from 86a4692 to 8df1d51 Compare June 21, 2026 15:44

@coderabbitai coderabbitai Bot 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.

🧹 Nitpick comments (1)
test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go (1)

181-196: ⚡ Quick win

Consider distinguishing timeout from fetch errors.

The function returns false for any non-nil error from PollUntilContextTimeout, conflating two distinct cases: the expected timeout (MC genuinely unchanged) and unexpected fetch errors (transient API issues). If fetching the MachineConfig fails during polling, the test silently skips the rollout wait, which could cause downstream flakiness.

♻️ Suggested improvement to fail explicitly on fetch errors
 func hasMCResourceVersionChanged(ctx context.Context, profile *performancev2.PerformanceProfile, resourceVersionBefore string) bool {
 	mcName := machineconfig.GetMachineConfigName(profile.Name)
 	err := wait.PollUntilContextTimeout(ctx, 2*time.Second, 60*time.Second, true,
 		func(ctx context.Context) (bool, error) {
 			currentResourceVersion, err := fetchMCResourceVersion(ctx, profile)
 			if err != nil {
-				return false, err
+				testlog.Errorf("transient error fetching MachineConfig %q: %v", mcName, err)
+				return false, nil // retry on transient errors
 			}
 			return currentResourceVersion != resourceVersionBefore, nil
 		})
 	if err == nil {
 		testlog.Infof("MachineConfig %q resourceVersion changed", mcName)
 		return true
 	}
+	// Timeout reached without change — expected when profile update doesn't affect MC
 	return false
 }

As per coding guidelines, "Never ignore error returns" — logging transient errors while continuing to poll makes failures diagnosable without aborting on brief API hiccups.

🤖 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 `@test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go`
around lines 181 - 196, The hasMCResourceVersionChanged function currently
returns false for any error from PollUntilContextTimeout, which masks transient
fetch errors from fetchMCResourceVersion. After the poll completes with a
non-nil error, check if the error is a context deadline exceeded (which
indicates the expected timeout case where the MachineConfig resource version did
not change), and only then return false. For any other error from the polling
operation, log the error details using testlog.Infof or testlog.Warnf to make
diagnostic information available, then return false to avoid aborting the test
but allow visibility into what went wrong during the fetch attempt.

Source: Coding guidelines

🤖 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.

Nitpick comments:
In
`@test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go`:
- Around line 181-196: The hasMCResourceVersionChanged function currently
returns false for any error from PollUntilContextTimeout, which masks transient
fetch errors from fetchMCResourceVersion. After the poll completes with a
non-nil error, check if the error is a context deadline exceeded (which
indicates the expected timeout case where the MachineConfig resource version did
not change), and only then return false. For any other error from the polling
operation, log the error details using testlog.Infof or testlog.Warnf to make
diagnostic information available, then return false to avoid aborting the test
but allow visibility into what went wrong during the fetch attempt.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 36a7b1aa-fde9-4e2d-9ed2-6f00a3130da0

📥 Commits

Reviewing files that changed from the base of the PR and between 86a4692 and 8df1d51.

📒 Files selected for processing (2)
  • test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go
  • test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go

@oblau

oblau commented Jun 22, 2026

Copy link
Copy Markdown
Member Author

/retest

@oblau oblau force-pushed the fixarm-pagesize-tests branch from 8df1d51 to fc1ac89 Compare June 22, 2026 08:43

@coderabbitai coderabbitai Bot 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.

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 `@test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go`:
- Around line 65-70: The `initialProfile` variable can be nil if the ARM check
in `BeforeAll` calls Skip(), but Ginkgo v2 still executes `AfterAll` afterward,
causing a nil pointer dereference when `ApplyProfileIfChanged` tries to access
the Spec field of the nil `initialProfile`. Fix this by adding a nil check guard
before calling `ApplyProfileIfChanged(ctx, profile, initialProfile)` in the
`AfterAll` block, so the rollback operation only proceeds if `initialProfile`
was successfully initialized and is not nil.
🪄 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: 385bbf23-f2fa-483e-9837-56a83349721e

📥 Commits

Reviewing files that changed from the base of the PR and between 8df1d51 and fc1ac89.

📒 Files selected for processing (2)
  • test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go
  • test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/e2e/performanceprofile/functests/utils/profilesupdate/profile_update.go

Comment thread test/e2e/performanceprofile/functests/14_arm/kernelpagesize.go Outdated
@oblau oblau force-pushed the fixarm-pagesize-tests branch from fc1ac89 to 22b4db1 Compare June 22, 2026 10:57
BeforeAll set kernelPageSize=4k without clearing hugepages (512M is default on arm ci cluster),
causing the performance admission webhook to reject the incompatible
combination on aarch64.

Extract common 3-step profile update pattern (UpdateWithRetry +
WaitForTuningUpdating + WaitForTuningUpdated) into ApplyProfileAndWait
helper in profilesupdate package.

- Declarative baseline in BeforeAll/AfterAll with DeepEqual guard
- Fix error check ordering for GetByNodeLabels
- Remove unused imports and variables

Ref: CNF-25175
@oblau oblau force-pushed the fixarm-pagesize-tests branch from 22b4db1 to 7085ded Compare June 23, 2026 08:43

@Tal-or Tal-or 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.

/lgtm


// ApplyProfileAndWait updates the profile and waits for the MCP rollout (or nodepool on hypershift) to complete.
// Replaces the common 3-step pattern: UpdateWithRetry + WaitForTuningUpdating + WaitForTuningUpdated.
func ApplyProfileAndWait(ctx context.Context, profile *performancev2.PerformanceProfile) {

@Tal-or Tal-or Jun 23, 2026

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.

I would suggest to add another wrapper

ApplyProfileIfNeededAndWait(ctx context.Context, initialProfile, profile *performancev2.PerformanceProfile) {
  if equality.Semantic.DeepEqual(profile.Spec, initialProfile.Spec) {
    return
  }
  ApplyProfileAndWait(ctx, profile)
}

can be done on separate PR if you're planning major refactoring.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes, will add that exact function when refactoring.

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

oblau commented Jun 23, 2026

Copy link
Copy Markdown
Member Author

/retest

@oblau oblau changed the title e2e: fix: clear hugepages before switching kernelPageSize to 4k OCPBUGS-91745: e2e: fix: clear hugepages before switching kernelPageSize to 4k Jun 23, 2026
@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Jun 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@oblau: This pull request references Jira Issue OCPBUGS-91745, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

BeforeAll set kernelPageSize=4k without clearing hugepages (512M default
on arm CI cluster), causing the admission webhook to reject the
incompatible combination on aarch64.

  • Declarative baseline in BeforeAll: set kernelPageSize=4k, clear
    hugepages, disable RT; apply only if spec differs (DeepEqual guard)
  • Simplify AfterAll revert with same DeepEqual guard (drop JSON marshal)
  • Fix Expect(err) ordering after GetByNodeLabels
  • Extract 3-step update pattern into ApplyProfileAndWait helper (cosmetic)
  • Remove unused imports (encoding/json, poolname) and poolName variable

Summary by CodeRabbit

  • Tests
  • Improved ARM/aarch64 kernelPageSize end-to-end coverage by standardizing baseline preparation and making the test skip non-ARM nodes.
  • Refined performance profile rollout handling to apply updates only when the target spec differs, using a shared “apply and wait” flow to ensure tuning readiness/completion.
  • Simplified update/revert behavior and the kernel page size validation flow to apply each change, wait for tuning, then verify the observed setting.

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 openshift-eng/jira-lifecycle-plugin repository.

@oblau

oblau commented Jun 23, 2026

Copy link
Copy Markdown
Member Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@oblau: This pull request references Jira Issue OCPBUGS-91745, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

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 openshift-eng/jira-lifecycle-plugin repository.

@oblau

oblau commented Jun 23, 2026

Copy link
Copy Markdown
Member Author

/verified by oblau

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jun 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@oblau: This PR has been marked as verified by oblau.

Details

In response to this:

/verified by oblau

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

@oblau: 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.

@yanirq

yanirq commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

/approve

@openshift-ci

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: oblau, Tal-or, yanirq

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 Jun 24, 2026
@openshift-merge-bot openshift-merge-bot Bot merged commit 545cada into openshift:main Jun 24, 2026
20 checks passed
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@oblau: Jira Issue Verification Checks: Jira Issue OCPBUGS-91745
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-91745 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Details

In response to this:

BeforeAll set kernelPageSize=4k without clearing hugepages (512M default
on arm CI cluster), causing the admission webhook to reject the
incompatible combination on aarch64.

  • Declarative baseline in BeforeAll: set kernelPageSize=4k, clear
    hugepages, disable RT; apply only if spec differs (DeepEqual guard)
  • Simplify AfterAll revert with same DeepEqual guard (drop JSON marshal)
  • Fix Expect(err) ordering after GetByNodeLabels
  • Extract 3-step update pattern into ApplyProfileAndWait helper (cosmetic)
  • Remove unused imports (encoding/json, poolname) and poolName variable

Summary by CodeRabbit

  • Tests
  • Improved ARM/aarch64 kernelPageSize end-to-end coverage by standardizing baseline preparation and making the test skip non-ARM nodes.
  • Refined performance profile rollout handling to apply updates only when the target spec differs, using a shared “apply and wait” flow to ensure tuning readiness/completion.
  • Simplified update/revert behavior and the kernel page size validation flow to apply each change, wait for tuning, then verify the observed setting.

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 openshift-eng/jira-lifecycle-plugin repository.

@oblau

oblau commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

/cherry pick release-4.22

@oblau

oblau commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

/cherry-pick release-4.22

@openshift-cherrypick-robot

Copy link
Copy Markdown

@oblau: new pull request created: #1554

Details

In response to this:

/cherry-pick release-4.22

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.

@openshift-merge-robot

Copy link
Copy Markdown
Contributor

Fix included in release 5.0.0-0.nightly-2026-06-25-122140

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. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants