Skip to content

CNF-20633: Enable nohz_full and skew_tick by default - #1564

Open
MarSik wants to merge 1 commit into
openshift:mainfrom
MarSik:5-nohz-full
Open

CNF-20633: Enable nohz_full and skew_tick by default#1564
MarSik wants to merge 1 commit into
openshift:mainfrom
MarSik:5-nohz-full

Conversation

@MarSik

@MarSik MarSik commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

The nohz_full kernel arg makes sure no tick interrupts arrive to cpus with just a single schedulable process.
That is something we really want.

All the conditions from https://github.com/torvalds/linux/blob/5097cbc/Documentation/timers/no_hz.rst#omit-scheduling-clock-ticks-for-cpus-with-only-one-runnable-task are satisfied as well:

  • There are reserved cpus with tick enabled
  • The tuning sets rcu_nocbs

The kernel command line parameter skew_tick helps to smooth jitter on moderate to large systems with latency-sensitive applications running and this matches exactly our use case.

There is also a cleanup of the Intel overrides block that only made sure the kernel arguments stay in the same order. I renamed two tuned variables to the reboot protection is not going to matter and 5.0 major version is a good opportunity to get rid of this.

Summary by CodeRabbit

  • Improvements
    • Refined kernel boot parameters by separating CPU nohz_full partitioning and tick-skew settings.
    • Simplified real-time boot parameter composition and Intel x86 bootloader configuration.
  • Bug Fixes
    • Updated generated tuned profiles and rendered outputs to reflect the revised boot parameters.
  • Tests
    • Updated controller tests and end-to-end rendering expectations for the new configuration.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 16, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

@MarSik: This pull request references CNF-20633 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "5.0.0" version, but no target version was set.

Details

In response to this:

The nohz_full kernel arg makes sure no tick interrupts arrive to cpus with just a single schedulable process.
That is something we really want.

All the conditions from https://github.com/torvalds/linux/blob/5097cbc/Documentation/timers/no_hz.rst#omit-scheduling-clock-ticks-for-cpus-with-only-one-runnable-task are satisfied as well:

  • There are reserved cpus with tick enabled
  • The tuning sets rcu_nocbs

The kernel command line parameter skew_tick helps to smooth jitter on moderate to large systems with latency-sensitive applications running and this matches exactly our use case.

There is also a cleanup of the Intel overrides block that only made sure the kernel arguments stay in the same order. I renamed two tuned variables to the reboot protection is not going to matter and 5.0 major version is a good opportunity to get rid of this.

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.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: e4ab75dd-06ed-4158-b2c7-8012000f7b93

📥 Commits

Reviewing files that changed from the base of the PR and between 9b6ae1e and d0734d2.

📒 Files selected for processing (12)
  • assets/performanceprofile/tuned/openshift-node-performance
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86
  • pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/arm/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/cpuFrequency/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/pp-norps/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/no-ref/manual_tuned.yaml
💤 Files with no reviewable changes (1)
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86
🚧 Files skipped from review as they are similar to previous changes (11)
  • assets/performanceprofile/tuned/openshift-node-performance
  • test/e2e/performanceprofile/testdata/render-expected-output/default/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/arm/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/pp-norps/manual_tuned.yaml
  • pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
  • test/e2e/performanceprofile/testdata/render-expected-output/no-ref/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/cpuFrequency/manual_tuned.yaml

Walkthrough

The tuned profiles separate nohz_full and skew_tick into CPU command-line fragments, simplify realtime settings, remove Intel placeholder assignments, and update rendered outputs and controller tests.

Changes

Kernel cmdline restructuring

Layer / File(s) Summary
Source profile cmdline wiring
assets/performanceprofile/tuned/openshift-node-performance, assets/performanceprofile/tuned/openshift-node-performance-intel-x86
Adds CPU-specific nohz_full and skew_tick fragments, limits realtime common settings to rcutree.kthread_prio=11, and removes Intel placeholder assignments.
Rendered profile expectations
test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/..., test/e2e/performanceprofile/testdata/render-expected-output/default/...
Updates bootstrap and manual profile outputs with the revised cmdline composition, hugepage formatting, and direct Intel settings.
Controller test expectations
pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
Updates constants and assertions for the CPU partition and tuning cmdline keys and revised realtime behavior.

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

Suggested reviewers: swatisehgal

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Test Structure And Quality ⚠️ Warning Changed Ginkgo assertions in tuned_test.go lack meaningful failure messages, including the new cmdline key checks; no cluster waits or resource cleanup issues were found. Add diagnostic messages to the changed Expect assertions, especially section lookup errors and each bootloader key/value assertion.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary change: enabling nohz_full and skew_tick by default.
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 PR changes no Ginkgo title lines. The only changed test file uses literal, static Describe/Context/When/It titles with no runtime values, names, IPs, timestamps, or generated identifiers.
Microshift Test Compatibility ✅ Passed The PR adds no Ginkgo e2e test source. Its e2e changes are YAML fixtures, and the only changed Go test is an existing unit test.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The patch adds no new Ginkgo e2e tests. It only updates an existing controller unit test and YAML fixtures; no SNO-incompatible cluster assumptions are introduced.
Topology-Aware Scheduling Compatibility ✅ Passed The diff changes TuneD kernel cmdline assets, rendered fixtures, and unit-test assertions only; it adds no deployment scheduling constraints or topology assumptions.
Ote Binary Stdout Contract ✅ Passed This PR changes only YAML configuration files and a unit test file. The test file modifies constants and assertions; print() calls are inside a test helper function invoked from It() blocks, not in...
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR adds no new Ginkgo e2e tests. It only updates assertions in an existing unit test, with no IPv4 assumptions or external connectivity.
No-Weak-Crypto ✅ Passed The PR changes only Tuned cmdline configuration, rendered fixtures, and test constants; added lines contain no weak algorithms, crypto code, or secret/token comparisons.
Container-Privileges ✅ Passed The PR adds no privilege-related fields. Changed YAML objects are kind Tuned, and scans found no privileged, host namespace, SYS_ADMIN, root, or privilege-escalation settings.
No-Sensitive-Data-In-Logs ✅ Passed PR modifies tuned configuration and test files. Pre-existing print() statements output non-sensitive INI configuration objects. No new logging with passwords, tokens, API keys, PII, or customer dat...
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

level=error msg="Running error: context loading failed: failed to load packages: failed to load packages: failed to load with go/packages: err: exit status 1: stderr: go: inconsistent vendoring in :\n\tgithub.com/RHsyseng/operator-utils@v1.4.13: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/coreos/go-systemd@v0.0.0-20191104093116-d3cd4ed1dbcf: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/coreos/ignition@v0.35.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/coreos/ignition/v2@v2.26.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/docker/go-units@v0.5.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/go-logr/stdr@v1.2.2: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/google/go-cmp@v0.7.0

... [truncated 19340 characters] ...

is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/legacy-cloud-providers: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/metrics: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/mount-utils: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/pod-security-admission: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/sample-apiserver: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tgithub.com/onsi/ginkgo/v2: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\n\tTo ignore the vendor directory, use -mod=readonly or -mod=mod.\n\tTo sync the vendor directory, run:\n\t\tgo mod vendor\n"


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 Tal-or and swatisehgal July 16, 2026 11:52
@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: MarSik

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 Jul 16, 2026

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
assets/performanceprofile/tuned/openshift-node-performance (1)

151-165: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Update the unit tests for the renamed cmdline fragments.

pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go still expects cmdline_realtime_nohzfull and +skew_tick=1 rcutree.kthread_prio=11. Update it to assert cmdline_cpu_part_nohzfull, cmdline_cpu_tuning, and the reduced realtime value; otherwise the existing test fails.

🤖 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 `@assets/performanceprofile/tuned/openshift-node-performance` around lines 151
- 165, Update the expectations in the tuned profile tests to use
cmdline_cpu_part_nohzfull and cmdline_cpu_tuning instead of the old
cmdline_realtime_nohzfull fragment, and expect the realtime value to contain
only rcutree.kthread_prio=11 rather than the combined skew_tick string.
🤖 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.

Outside diff comments:
In `@assets/performanceprofile/tuned/openshift-node-performance`:
- Around line 151-165: Update the expectations in the tuned profile tests to use
cmdline_cpu_part_nohzfull and cmdline_cpu_tuning instead of the old
cmdline_realtime_nohzfull fragment, and expect the realtime value to contain
only rcutree.kthread_prio=11 rather than the combined skew_tick string.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 75aa5368-8021-4585-b71b-3375c4b622ba

📥 Commits

Reviewing files that changed from the base of the PR and between 19b0d74 and ba43491.

📒 Files selected for processing (11)
  • assets/performanceprofile/tuned/openshift-node-performance
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/arm/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/cpuFrequency/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/pp-norps/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/no-ref/manual_tuned.yaml
💤 Files with no reviewable changes (1)
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86

@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)
pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go (1)

189-189: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove leftover realtime assertions for nohz_full.

Since nohz_full has been moved to the base CPU configuration and is applied unconditionally regardless of the RealTime hint, these assertions are no longer accurate in the context of realtime toggling tests.

  • pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go#L189-L189: delete this line. The cmdline_realtime_nohzfull key is obsolete and no longer generated.
  • pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go#L208-L208: delete this line. Checking cmdline_cpu_part_nohzfull here is conceptually misleading and redundant, as its presence is properly verified in the base worker tests (lines 125 and 161).
♻️ Proposed fix
@@ -186,7 +186,6 @@
 
 				bootLoaderSection, err := tunedData.GetSection("bootloader")
 				Expect(err).ToNot(HaveOccurred())
-				Expect(bootLoaderSection.Key("cmdline_realtime_nohzfull").String()).ToNot(Equal(cmdlineCPUPartNohzfull))
 				Expect(bootLoaderSection.Key("cmdline_realtime_nosoftlookup").String()).ToNot(Equal(cmdlineRealtimeNosoftlookup))
 				Expect(bootLoaderSection.Key("cmdline_realtime_common").String()).ToNot(Equal(cmdlineRealtimeCommon))
 			})
@@ -205,7 +204,6 @@
 				Expect(sysctl.Key("kernel.sched_rt_runtime_us").String()).To(Equal("-1"))
 				bootLoader, err := tunedData.GetSection("bootloader")
 				Expect(err).ToNot(HaveOccurred())
-				Expect(bootLoader.Key("cmdline_cpu_part_nohzfull").String()).To(Equal(cmdlineCPUPartNohzfull))
 				Expect(bootLoader.Key("cmdline_realtime_nosoftlookup").String()).To(Equal(cmdlineRealtimeNosoftlookup))
 				Expect(bootLoader.Key("cmdline_realtime_common").String()).To(Equal(cmdlineRealtimeCommon))
 			})
🤖 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
`@pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go`
at line 189, Remove the obsolete realtime nohz_full assertions from the tuned
tests: delete the assertion at
pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
lines 189-189 for cmdline_realtime_nohzfull and the assertion at lines 208-208
for cmdline_cpu_part_nohzfull; retain verification through the existing base
worker tests.
🤖 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
`@pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go`:
- Line 189: Remove the obsolete realtime nohz_full assertions from the tuned
tests: delete the assertion at
pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
lines 189-189 for cmdline_realtime_nohzfull and the assertion at lines 208-208
for cmdline_cpu_part_nohzfull; retain verification through the existing base
worker tests.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: b2c01976-3e2c-40c9-9dfa-247cd89db669

📥 Commits

Reviewing files that changed from the base of the PR and between ba43491 and 59f9ce4.

📒 Files selected for processing (12)
  • assets/performanceprofile/tuned/openshift-node-performance
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86
  • pkg/performanceprofile/controller/performanceprofile/components/tuned/tuned_test.go
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/arm/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/cpuFrequency/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/pp-norps/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/no-ref/manual_tuned.yaml
💤 Files with no reviewable changes (1)
  • assets/performanceprofile/tuned/openshift-node-performance-intel-x86
🚧 Files skipped from review as they are similar to previous changes (9)
  • test/e2e/performanceprofile/testdata/render-expected-output/default/pp-norps/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-master_tuned.yaml
  • assets/performanceprofile/tuned/openshift-node-performance
  • test/e2e/performanceprofile/testdata/render-expected-output/no-ref/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/no-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/arm/manual_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-master_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/bootstrap/extra-mcp/openshift-bootstrap-worker_tuned.yaml
  • test/e2e/performanceprofile/testdata/render-expected-output/default/manual_tuned.yaml

@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

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

@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 overall

left a small comment about behavioral changes which I'm not sure it's intended.

cmdline_realtime_nohzfull=+nohz_full=${isolated_cores}
cmdline_realtime_nosoftlookup=+nosoftlockup
cmdline_realtime_common=+skew_tick=1 rcutree.kthread_prio=11
cmdline_realtime_common=rcutree.kthread_prio=11

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.

we are changing the behavior here from append to overwrite (missing the + sign) is it intentional?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It make little difference, but I fixed it.

cmdlineCPUPartNohzfull = "+nohz_full=${isolated_cores}"
cmdlineRealtimeNosoftlookup = "+nosoftlockup"
cmdlineRealtimeCommon = "+skew_tick=1 rcutree.kthread_prio=11"
cmdlineRealtimeCommon = "rcutree.kthread_prio=11"

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.

ditto, from append to overwrite

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is a test of the first one. Fixed to match.

The nohz_full kernel arg makes sure no tick interrupts arrive to cpus with just a single schedulable process.
That is something we really want.

All the conditions from https://github.com/torvalds/linux/blob/5097cbc/Documentation/timers/no_hz.rst#omit-scheduling-clock-ticks-for-cpus-with-only-one-runnable-task are satisfied as well:

- There are reserved cpus with tick enabled
- The tuning sets rcu_nocbs

The kernel command line parameter skew_tick helps to smooth jitter on moderate to large systems with latency-sensitive applications running and this matches exactly our use case.

There is also a cleanup of the Intel overrides block that only made sure the kernel arguments stay in the same order. I renamed two tuned variables to the reboot protection is not going to matter and 5.0 major version is a good opportunity to get rid of this.
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-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants