-
Notifications
You must be signed in to change notification settings - Fork 118
Tao mod #828
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
Tao mod #828
Conversation
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: vitus133 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
|
||
| // If the user supplies extra machine pools, we ingest them here | ||
| for _, pool := range mcPools { | ||
| if err := genBootstrapWorkloadPinningManifests(partitioningMode, outputDir, pool.Name); err != nil { |
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.
not really sure why this is needed.
Would not be enough to handle kernel arguments?
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.
Right, other mcps are not needed. Remained from another try...
Will remove
| continue | ||
| } | ||
|
|
||
| profileName := mainSection.Key("include").String() |
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.
do we need to read included tuned profiles? I thought tuned would do that.
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.
The idea is to render performanceProfile and Tuned patch (both part of the DU profile). For example:
apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
name: performance-patch
namespace: openshift-cluster-node-tuning-operator
spec:
profile:
- data: |
[main]
summary=Configuration changes profile inherited from performance created tuned
include=openshift-node-performance-openshift-node-performance-profile
[bootloader]
cmdline_crash=nohz_full=4-47
[sysctl]
kernel.timer_migration=1
[scheduler]
group.ice-ptp=0:f:10:*:ice-ptp.*
[service]
service.stalld=start,enable
service.chronyd=stop,disable
name: performance-patch
recommend:
- machineConfigLabels:
machineconfiguration.openshift.io/role: master
priority: 19
profile: performance-patch
---
apiVersion: performance.openshift.io/v2
kind: PerformanceProfile
metadata:
name: openshift-node-performance-profile
spec:
additionalKernelArgs:
- rcupdate.rcu_normal_after_boot=0
- efi=runtime
- vfio_pci.enable_sriov=1
- vfio_pci.disable_idle_d3=1
- module_blacklist=irdma
cpu:
isolated: 4-47
reserved: 0-3
hugepages:
defaultHugepagesSize: 1G
pages:
- count: 32
size: 1G
machineConfigPoolSelector:
pools.operator.machineconfiguration.openshift.io/master: ""
nodeSelector:
node-role.kubernetes.io/master: ""
numa:
topologyPolicy: restricted
realTimeKernel:
enabled: true
workloadHints:
highPowerConsumption: false
perPodPowerManagement: false
realTime: true
I'm not sure how to do that with Tuned - do we need to extract this patch to some file before invoking the Tuned?
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.
In my understanding the target is to create a MachineConfig to apply kernerl boot arguments.
To get those arguments we need to run tuned with the tuned.conf file generated by the PerformanceProfile and then read the /etc/tuned/bootcmdline file.
So, as far as I see it, we could use PerformanceProfile as "main" input and use NewNodePerformance function to get the tuned from there, as the PerformanceProfile controller does.
Other inputs should be the MachineConfigPools for the SNO ( we already have them cause they are used in the previous step of the installer, the one for the PerformanceProfile render command here
All those inputs will be in one folder (INPUT_DIR)
With all that in place tuned will be run and will generate the /etc/tuned/bootcmdline file that could be read using getBootCmdline function
Here the challenge is to mount all the system folders tuned needs to work properly from the host machine but without letting tuned to modify them. I am working with overlayfs and podman-run to get that.
With all that in place we just need to create the MachineConfig object and write the manifest to a folder which should be mounted from the host machine so it can be read after the container finish its execution.
This is just my understanding of the task, so maybe @MarSik or @yanirq can correct me.
A (WIP) implementation of this is #844
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.
You probably need to read all extra Tuned objects too. Customers can use those to override pieces of our default one (https://access.redhat.com/solutions/5532341).
But the rest sounds right to me:
Prepare the (RHEL level) tuned profiles, give them to tuned, run the oneshot mode (in isolation somehow), collect the boot args, generate MC compatible with what NTO would do at Day 2.
|
@vitus133: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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/test-infra repository. I understand the commands that are listed here. |
|
PR needs rebase. DetailsInstructions 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/test-infra repository. |
|
not relevant anymore |
Draft for Tuned performance rendering