-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OCPBUGS-28647: tuned: distinguish deferred updates #1129
OCPBUGS-28647: tuned: distinguish deferred updates #1129
Conversation
@ffromani: This pull request references Jira Issue OCPBUGS-28647, which is valid. 3 validation(s) were run on this bug
Requesting review from QA contact: The bug has been updated to refer to the pull request using the external bug tracker. In response to 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. |
/cc @MarSik @bartwensley |
6d75a91
to
5d4af08
Compare
/cc @jmencak |
/retest |
Thank you for the PR! I'll try to understand the code and the motivation tomorrow. Some initial thoughts.
Do you mean "only if profile is updated"? Also, which profile?
IIUC, s/NOT trigger the recommended profile/NOT cause a switch to a different TuneD profile/ ?
Edit: I take this back, I was thinking about the old implementation. Also, the code uses "never" DeferMode, should we document this in the PR description and the commit? |
thanks @jmencak , I will clarify the commit message indeed. |
5d4af08
to
aef0cf0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First pass done, just a couple of nits. Changes make sense to me.
aef0cf0
to
0f41473
Compare
After some manual testing I see one potential issue with
Questions:
|
yes, it's a bug.
I guess yes |
/retest |
b24c4f2
to
e9952ee
Compare
Infra issues |
Thank you for the fix, Francesco. I can confirm the issue is no longer present. |
a46d8ea
to
ddacbff
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the changes. I went through the code (mostly thinking about the semantics) one last time. It is tricky to assess all the corner cases, but the changes look good to me. I've also done some basic testing.
The only gray zone I found so far was when switching to a different profile using
"always" annotation and then updating it with a profile with "update"
deferred annotation. We do not define the behaviour in this case, so I
guess the current behaviour (to wait for a reboot) is fine.
I tried to make the commit message a bit more consistent and clearer.
Here is what I propose:
--- old 2024-08-13 13:38:14.916800476 +0200
+++ new 2024-08-13 13:55:13.104238181 +0200
@@ -1,6 +1,6 @@
To fully support the usecase described in OCPBUGS-28647 and fix
the issue, we need to further distinguish between first-time
-profile change and (in-place) profile change. This is required to
+profile change and in-place profile update. This is required to
better support a GitOps flow.
The key distinction is if the recommended profile changes or not,
@@ -11,17 +11,17 @@
Thus:
- first-time profile change is a change which triggers a change
of the recommended profile.
-- (in-place) profile update is a change which does NOT cause a
- switch to a different TuneD profile. This usually, but not
- exclusively, involve changes of the sysctls.
+- in-place profile update is a change which does NOT cause a
+ switch to a TuneD profile with a different name. This involves
+ changes to only the contents of the currently used profile.
We change the way the annotation is used. We now require a value,
which can be either
- always: every Tuned object annotated this way will have its
- application deferred
+ application deferred.
- update: every Tuned object annotated this way will be processed
as usual (and as it wasn't annotated) if it's a first-time profile
- change, but its (in-place) updates will be deferred.
+ change, but its in-place updates will be deferred.
- a new internal value "never" is also added to be used internally
to mean the deferred feature is disabled entirely.
User can use this value but it will explicitly disable the feature
It would be nice if others, especially @MarSik / @yanirq could chime in from a higher level whether the changes in this PR are sufficient for what is needed from deferred updates.
ddacbff
to
3baf4ec
Compare
/hold |
Thank you for the changes. |
To fully support the usecase described in OCPBUGS-28647 and fix the issue, we need to further distinguish between first-time profile change and in-place profile change. This is required to better support a GitOps flow. The key distinction is if the recommended profile changes or not, and there's a desire to defer application of changes only when a profile is updated (e.g. sysctl modified), not the first time it is applied. Thus: - first-time profile change is a change which triggers a change of the recommended profile. - in-place profile update is a change which does NOT cause a switch to a TuneD profile with a different name. This involves changes to only the contents of the currently used profile. We change the way the annotation is used. We now require a value, which can be either - always: every Tuned object annotated this way will have its application deferred. - update: every Tuned object annotated this way will be processed as usual (and as it wasn't annotated) if it's a first-time profile change, but its in-place updates will be deferred. - a new internal value "never" is also added to be used internally to mean the deferred feature is disabled entirely. User can use this value but it will explicitly disable the feature (which is disabled already by default), thus is redundant and not recommended. Signed-off-by: Francesco Romani <[email protected]>
now that we have the more powerful ginkgo labels, we can stop using tags for newer tests. Signed-off-by: Francesco Romani <[email protected]>
3baf4ec
to
c94303e
Compare
thanks, fixed |
/lgtm |
@ffromani: all tests passed! Full PR test history. Your PR dashboard. 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
I like it.
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ffromani, MarSik The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/unhold |
@ffromani: Jira Issue OCPBUGS-28647: All pull requests linked via external trackers have merged:
Jira Issue OCPBUGS-28647 has been moved to the MODIFIED state. In response to 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. |
[ART PR BUILD NOTIFIER] Distgit: cluster-node-tuning-operator |
/cherry-pick release-4.17 |
@yanirq: new pull request created: #1138 In response to 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 kubernetes-sigs/prow repository. |
* OCPBUGS-28647: tuned: distinguish deferred updates To fully support the usecase described in OCPBUGS-28647 and fix the issue, we need to further distinguish between first-time profile change and in-place profile change. This is required to better support a GitOps flow. The key distinction is if the recommended profile changes or not, and there's a desire to defer application of changes only when a profile is updated (e.g. sysctl modified), not the first time it is applied. Thus: - first-time profile change is a change which triggers a change of the recommended profile. - in-place profile update is a change which does NOT cause a switch to a TuneD profile with a different name. This involves changes to only the contents of the currently used profile. We change the way the annotation is used. We now require a value, which can be either - always: every Tuned object annotated this way will have its application deferred. - update: every Tuned object annotated this way will be processed as usual (and as it wasn't annotated) if it's a first-time profile change, but its in-place updates will be deferred. - a new internal value "never" is also added to be used internally to mean the deferred feature is disabled entirely. User can use this value but it will explicitly disable the feature (which is disabled already by default), thus is redundant and not recommended. Signed-off-by: Francesco Romani <[email protected]> * e2e: drop tags, use labels now that we have the more powerful ginkgo labels, we can stop using tags for newer tests. Signed-off-by: Francesco Romani <[email protected]> --------- Signed-off-by: Francesco Romani <[email protected]>
) * OCPBUGS-28647: tuned: distinguish deferred updates (#1129) * OCPBUGS-28647: tuned: distinguish deferred updates To fully support the usecase described in OCPBUGS-28647 and fix the issue, we need to further distinguish between first-time profile change and in-place profile change. This is required to better support a GitOps flow. The key distinction is if the recommended profile changes or not, and there's a desire to defer application of changes only when a profile is updated (e.g. sysctl modified), not the first time it is applied. Thus: - first-time profile change is a change which triggers a change of the recommended profile. - in-place profile update is a change which does NOT cause a switch to a TuneD profile with a different name. This involves changes to only the contents of the currently used profile. We change the way the annotation is used. We now require a value, which can be either - always: every Tuned object annotated this way will have its application deferred. - update: every Tuned object annotated this way will be processed as usual (and as it wasn't annotated) if it's a first-time profile change, but its in-place updates will be deferred. - a new internal value "never" is also added to be used internally to mean the deferred feature is disabled entirely. User can use this value but it will explicitly disable the feature (which is disabled already by default), thus is redundant and not recommended. Signed-off-by: Francesco Romani <[email protected]> * e2e: drop tags, use labels now that we have the more powerful ginkgo labels, we can stop using tags for newer tests. Signed-off-by: Francesco Romani <[email protected]> --------- Signed-off-by: Francesco Romani <[email protected]> * OCPBUGS-38795: Fix defer status during recommended profile change (#1142) * OCPBUGS-38795: Fix defer status during recommended profile change Process recommended profile change even when the profile itself has not changed itself. The internal profile fingerprint tracking was not updated during recommended profile update with no internal changes. * Add e2e test for defer=update * NO-JIRA: deferred updates: fix in-place update handling on reboot (#1162) * log: make sure to have high verbosity in tests Signed-off-by: Francesco Romani <[email protected]> * e2e: deferred: stricter testing add stricter check for the node condition when validating OCPBUGS-38795 Signed-off-by: Francesco Romani <[email protected]> * deferred: tuned: fix reload trigger when inplace update There are conditions on which we should not set the reload flag. This avoid regression in the test "Profile deferred when applied should trigger changes when applied fist, then deferred when edited, if tuned restart should be kept deferred" Signed-off-by: Francesco Romani <[email protected]> * deferred: tuned: clarify comments and logs document better the logic about processing edits Signed-off-by: Francesco Romani <[email protected]> --------- Signed-off-by: Francesco Romani <[email protected]> * Omit unbackported logging support --------- Signed-off-by: Francesco Romani <[email protected]> Co-authored-by: Francesco Romani <[email protected]> Co-authored-by: Martin Sivák <[email protected]>
To fully support the usecase described in OCPBUGS-28647 and fix
the issue, we need to further distinguish between first-time
profile change and (in-place) profile change. This is required to
better support a GitOps flow.
The key distinction is if the recommended profile changes or not,
and there's a desire to defer application of changes only when a
profile is updated (e.g. sysctl modified), not the first time it
is applied.
Thus:
We change the way the annotation is used. We now require a value,
which can be either