Skip to content
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

Configurable tolerations #194

Open
jennydaman opened this issue Jan 31, 2022 · 8 comments
Open

Configurable tolerations #194

jennydaman opened this issue Jan 31, 2022 · 8 comments
Labels

Comments

@jennydaman
Copy link
Collaborator

GPU nodes are tainted with PreferNoSchedule. They can still be scheduled to if a pod specs its containers with resoureces.limits['nvidia.com/gpu'] = 1, but it would be better if pman can be configured to conditionally set tolerations on jobs.

https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/

p.s. Per-compute env config is starting to get unwieldy such as with swarm and kubernetes, how can we manage this more concisely?

@qxprakash
Copy link

qxprakash commented Apr 20, 2022

@jennydaman so you want pman to set toleration on pods instead of adding them in pod-definition.yml .. I hope I am getting this correct..

@jennydaman jennydaman assigned qxprakash and unassigned qxprakash Apr 26, 2022
@jennydaman
Copy link
Collaborator Author

To rephrase my question in the p.s.:

pman is supposed to be a common interface over kubernetes, swarm, SLURM, ... so scheduler-specific configuration is antithetical to its intention.

@jennydaman
Copy link
Collaborator Author

@Prakashh21 what/where is pod-definition.yml?

@qxprakash
Copy link

I used pod-definition.yml just as a reference name , yes what I meant was scheduler specific configuration in setting tolerations , here we want pman to set tolerations on pods right?

@qxprakash
Copy link

  • Q1) why did we set taints on GPU nodes (probably to not schedule just any pod on the GPU node but to schedule only those pods which perform graphically intensive operations and require GPU prowess )
  • Q2) so it seems like we are not setting any toleration on pods as of now , just passing the spec resources.limits['nvidia.com/gpu'] = 1 schedules the pod on the tainted GPU node
  • Q3) what we want.. is to set toleration on pod through pman in the job description itself?
    @jennydaman am I getting this... ?

@jennydaman
Copy link
Collaborator Author

I still don't understand what you mean by pod-definition.yml but moving on...

  • Q1) yes*
  • Q2) yes
  • Q3) I think so?

Closely related issue: being able to configure pman with a set of affinity labels. Using tolerations and affinities, we can deploy multiple pman instances which correspond to different configurations, e.g. one pman will prefer low-CPU, high-memory, another pman will prefer high CPU, high memory, ...

*GPU-intensive does not necessarily mean graphically intensive, e.g. machine learning

@qxprakash
Copy link

@jennydaman pod-definition.yml is the configuration/manifests/specification of the pods which are to be scheduled on the cluster nodes , tolerations are set on pods defined in their manifests that is what I was saying , and pod-defination.yml was the example name of the manifests , I hope I was clear..

@qxprakash
Copy link

qxprakash commented Apr 27, 2022

I still don't understand what you mean by pod-definition.yml but moving on...

  • Q1) yes*
  • Q2) yes
  • Q3) I think so?

Closely related issue: being able to configure pman with a set of affinity labels. Using tolerations and affinities, we can deploy multiple pman instances which correspond to different configurations, e.g. one pman will prefer low-CPU, high-memory, another pman will prefer high CPU, high memory, ...

*GPU-intensive does not necessarily mean graphically intensive, e.g. machine learning

so what you're saying is , we'll have multiple instances of pman , each would prefer to schedule pods on different set of nodes (catering to different types of work loads) through set tolerations and affinities , this sounds cool , but tell me this if we have multiple instances of pman then how would pfcon know to which pman instance it should send the job description...? will this be defined in the job description it self ... or....... ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants