Closed sabbir-47 closed 7 months ago
@sabbir-47: This pull request references CNF-11099 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 story to target the "4.16.0" version, but no target version was set.
Hi @sabbir-47. Thanks for your PR.
I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test
on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test
label.
I understand the commands that are listed here.
@sabbir-47: This pull request references CNF-11099 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 story to target the "4.16.0" version, but no target version was set.
/assign @MarSik @yanirq @jmencak @bartwensley
I am a bit worried about the assumptions here, because it is a backwards incompatible change.
The majority of Telco RAN DU deployments will be on the Ice Lake or newer generation hardware.
I still see many reports and labs where older generations are in use.
Also I seem to remember we disabled p-states and c-states for the most sensitive real time cases in the past as the power management features were introducing latency. Is that fixed on Ice Lake and newer cpus?
Switching the knob is fine, but lets make sure all the pieces fit together for all cases and old deployments we support here.
Maybe we should just use the cpu matching tuned provides and limit this to new enough cpus? I wonder if https://github.com/redhat-performance/tuned/commit/8d9cd00387426ed0cf220f920be4f9e185f61e12 lets us do what we need or some other functionality should be introduced.
I am a bit worried about the assumptions here, because it is a backwards incompatible change.
The majority of Telco RAN DU deployments will be on the Ice Lake or newer generation hardware.
I still see many reports and labs where older generations are in use.
Yes in many places, we still use older servers.
Also I seem to remember we disabled p-states and c-states for the most sensitive real time cases in the past as the power management features were introducing latency. Is that fixed on Ice Lake and newer cpus?
According to @joemario:
It was common practice to disable pstate for latency sensitive application, since it introduced jitters around RHEL-7.4. In recent years, the jitter issues in the intel_pstate driver has been fixed and observed good latency results with it enabled.
Switching the knob is fine, but lets make sure all the pieces fit together for all cases and old deployments we support here.
Maybe we should just use the cpu matching tuned provides and limit this to new enough cpus? I wonder if redhat-performance/tuned@8d9cd00 lets us do what we need or some other functionality should be introduced.
Do we have a way to understand the processors generation from /proc/cpuinfo
or lscpu
or other places. My understanding is cascade lake, ice lake, sapphire rapids - these terms are used as marketing purposes. Please let me know if there is a way to distinguish between processors generation.
Adding @bartwensley for more information.
@sabbir-47: This pull request references CNF-11099 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 story to target the "4.16.0" version, but no target version was set.
Good questions @MarSik - I'll try to summarize:
Also I seem to remember we disabled p-states and c-states for the most sensitive real time cases in the past as the power management features were introducing latency. Is that fixed on Ice Lake and newer cpus?
The latency issues have been fixed on Intel processors of the Ice Lake and newer generations. The recommendation from Intel is to use intel_pstate=active
on these generations.
Maybe we should just use the cpu matching tuned provides and limit this to new enough cpus? I wonder if redhat-performance/tuned@8d9cd00 lets us do what we need or some other functionality should be introduced.
My understanding is that there is no reliable way of determining the processor generation at runtime, so I do not believe this is an option. The above change only looks at /dev/cpuinfo which only contains the model number, which would require an unmaintainable regex to match all current and future Intel processor model names.
The proposed change would only be an issue for a user that:
In that case, the user would be required to override the intel_pstate to set it to disabled as described in the PR description above. This would have to be done as part of new deployments or when upgrading to the version of the NTO that contains this change. We would want to add a release note for this.
The alternative is to withdraw this PR and require all users running latency sensitive applications on Ice Lake (or newer) processors to override the intel_pstate to set it to active.
Given that the Ice Lake generation was launched in 2019 and that most users will be using these processors to run low latency applications, I would prefer to make this change to the default intel_pstate configuration, but I agree this could be a backwards incompatible change in some cases and would require the user to make a configuration change.
We need consensus here before making this change.
/cc @browsell
/ok-to-test
@sabbir-47: This pull request references CNF-11099 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 story to target the "4.16.0" version, but no target version was set.
/retest
@sabbir-47 The rendering (e2e-no-cluster) tests are deterministic (offline), retest is not likely to help there.
@MarSik Actually i fixed that test with my last commit, it seemed to pass now! I needed to rebase to get newer changes.
/test e2e-gcp-pao
If this change is important to OCP for newer Intel cpus, would it make sense to make the change in TuneD? Non-OCP environments would be able to benefit as well if it were in TuneD.
/test e2e-gcp-pao-workloadhints
/retest
/hold needs TuneD FDP 24.C release first
/unhold
@MarSik Should we run the tests once again just to be sure? wdyt?
/retest
/lgtm
@MarSik @yanirq @jmencak @bartwensley can the PR get the approval since the tuned 24.C FDP release happened 2 days back?
/approve
/retest-required
Remaining retests: 0 against base HEAD dd2698c43517191d17dc5c4ac842e6d4dc3aab32 and 2 for PR HEAD 00f59db17d0de8351198d2b1eb91f50b95848986 in total
@sabbir-47: all tests passed!
Full PR test history. Your PR dashboard.
@MarSik @yanirq @jmencak @bartwensley all tests passed. Kindly consider reviewing it.
[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: jmencak, MarSik, sabbir-47
The full list of commands accepted by this bot can be found here.
The pull request process is described here
What?
Set CPUFreq driver mode based on hardware generation which will set intel_pstate=active for IceLake and newer processors while it will disable the pstate for older generation of processors.
Why?
We have One RAN customer who wants the intel pstate to be active as default. RFE link
How?
We introduced a function in tuned which returns appropriate CPUFreq driver mode based on hardware generation. Then we invoke the function in the custom tuned profile for Openshift in the NTO operator. We still keep pstate to active for HardwareTuning case,because user may want to tune cpu frequencies in older generation processors.
It will update the
assets/performanceprofile/tuned/openshift-node-performance
and render the profile with appropriate intel_pstatePerformance impact on the system
We internally ran KPI tests, i.e. oslat, cyclicTest, cpu utilization and RFC2544 to identify if activating pstate in IceLake and Sapphire Rapids processor servers cause any performance variance. We found no indication of performance degradation.
Can it be overridden by user?
User can always override this kernel configuration with tuned, for example if they want to disable intel_pstate:
/cc @MarSik @yanirq @jmencak @bartwensley