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

Low priority services #532

Open
lithorus opened this issue Jan 25, 2022 · 6 comments
Open

Low priority services #532

lithorus opened this issue Jan 25, 2022 · 6 comments

Comments

@lithorus
Copy link
Member

Issue :
We have render nodes that have dual purposes, depending on the time of day and need. Specifically we have nodes that in the day time are dedicated to Nuke renders, but after work hours (or whenever people stop submitting jobs) it needs to fall back to doing CG renders.

Current solution :
Either have them stay dedicated or have a service that enables/disables the service at specific times of the day.

Proposed solution :
The proposal is to have "Low Priority" services than can be ejected and disabled with a specific command to the render node. Then after the render node have been idle for a certain period, they will automatically be enabled again.

Other render managers have the ability to abort jobs which are not a specific service type, but constantly aborting jobs can create incomplete renders. If we also disable the services after the jobs are aborted we can make this a minimum.

@timurhai
Copy link
Member

Hi!
I see. We have the same issue. And now we enable/disable services "by hands" too.
It is a big issue. For now service is just a sting (and services description is a list of strings).
To handle this issue, service should be a class, with such fields as name, priority at least.
Plus time_disabled, disable_period and may be more.

( This implementation needs much time. )

@lithorus
Copy link
Member Author

I'm happy to help with it. Probably needs more discussion on how to implement it.

One way of solving is to have a way ejecting task based on a service name filter. If it's regex it can both be used for exclusion or inclusion. Combined with the create job event it can achieve the same thing with custom event scripts, but not as clean.

@timurhai
Copy link
Member

To add pool operation to eject tasks by service, where we can pass a regex is not so big deal.
May be we can create some secondary services list on pool. To automate process.

Yes, this issue needs more thinking.

@lithorus
Copy link
Member Author

So similar to disabled services on pool/render we could have a list for low priority?

@timurhai
Copy link
Member

timurhai commented Jan 31, 2022

Yes.
But probably just std::list<std::string> will not be enougth, it should be some structue/class with a service name and some time(seconds) fields such as time_disabled, disable_timeout and may be plus some others (behaviour flags).

@timurhai
Copy link
Member

timurhai commented Feb 1, 2022

But if we create a list of low priority services classes, there will be 3 lists: common services, disabled services and new low priority services classes.
Maybe better replace a common services std::list<std::string> property with this new list of classes.
That class can have disabled flag, and we can get rid of disabled services list and have just one service list.
Maybe it will be a more simple and plain solution?

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

No branches or pull requests

2 participants