AWS Thinkbox Discussion Forums

Feature request: schedule times for CPU/GPU affinity

We continue to use our older 3d workstations around the facility as junior 3d, graphics and office PCs. So we have a lot of quite fast and memory packed machines which could participate at DL render-jobs with a few cores disabled so the artist/clerk could still work. The problem is that CPU/GPU affinity can’t be set only for work-hours on workdays so we waste CPU power outside regular work-days.
A scheduler for GPU/CPU affinity would be very helpful. Or the “idle” detection could take away cpu cores from the render-job if it detects user inputs.

Also memory surveillance checking during render if the incoming job PLUS the local memory consumption < than the total ram available would be nice.
If the DL job threatens to exceed the remaining memory of the machine --> render job should be killed.

With both methods we could increase the total facility render performance by quite a bit.
We had software which set the CPU affinity of the old rendermanager which in turn inherited the affinity to the network 3dsmax process in the past. So the personal working 3dsmax processes weren’t affected. Now that Deadline Launcher and Slave make their own thing with affinities we can’t use it anymore.

a workaround would be using 2 slaves per machine: one scheduled for daytime with the affinity cut in half and one scheduled for after hours with full resource access. Wouldn’t be too hard to setup, albeit a bit cumbersome. This is how I have some of our machines setup.

But yeah, scheduled slave settings would be great for purposes like this - I would definitely use it

I’ll give that a +1 vote as well.

Would be super handy for classroom use.

Can you explain this guy a little more? ^

For awhile the Slave would always reset the CPU affinity when it started but I think we removed that since it started causing problems for some machines. Are you still seeing that, and if so, which specific version of Deadline? Turning off the affinity should have the Slave leave it be and ‘just work’. You could also port your code change to an event script since we now have a periodic event that fires every time Slaves update their status. It’d be a pretty good thing to throw up on the Github:
github.com/ThinkboxSoftware/Dea … tom/events

We set CPU affinity and priority of the old backburner “server.exe” (yes laugh, but we kept backburner by custom scripts alive for way too long). The starting 3dsmax processes inherits both.
CPU affinity and priority of the Deadline Slave / Launcher aren’t inherited to the starting 3dsmax. The slave use its own settings. CPU Priority can’t be set. Which is totally fine, I don’t need the fiddling needed for backburner any more.
BUT, it seams CPU Affinity of the child processes (3dsmax, etc.) is only set on slave restart which makes it necessary to restart the slave and kill the rendering task to actually get the settings changed.
An instant inheritance of the CPU affinity settings would be good. This possibility would also be needed for my request after CPU affinity schedule times. For instance use 8 cores less on working times, use all cores otherwise.

Hmm. I think we can do this CPU affinity change nowadays actually. The render script now runs in a process named the Sandbox. We can likely set the affinity there so it’s picked up dynamically. I’ll make a dev issue for that one first.

Update: On thinking of that, affinity can be changed dynamically on processes so it may be faster to just ask for it to update during info updates when it pulls its settings from the database.

Just wanted to reach out and see if anyone from the team or end users have made any progress on this? I’m using a cobbled together system of “halves” ie my machine has a slave that runs half the cores 24/7, and then a scheduled slave that runs the other half at night/weekends. Not ideal and not terribly flexible, but its the best I got right now.

was wondering how others are getting their scheduling working? What’s the OS & operation mode (desktop or service)?

Asking because I cannot get scheduling to work at all with Windows and launcher/slave running as services.

We’re all windows, used in desktop mode. I don’t think I have enough technical expertise to properly rollout and maintain deadline as a service, particularly because we use shared mapped network drives for all of our work, which means I would have to do some scripting to map that drive as a service blah blah blah. Its just over my head and I don’t want to deal with it right now.

Now that’s good to know - it would then appear that the scheduling feature doesn’t work with launcher / slave in service mode either. I guess scheduling is just automating the Idle Detection feature which is known as not working on Windows with services?

I guess what I need is a way to run the launcher as a service on logout and as a desktop app on login. Feature request!

Hello!

Slave Scheduling does work with with the Launcher running as a service. It’s Idle detection that does not. Also, Deadline does have a Mapped Drives feature which will automatically mount drives for you, even for the user running the service.

docs.thinkboxsoftware.com/produ … ped-drives

Regards,

Charles

I guess then there’s something I’m missing :slight_smile: All of my slaves will just sit there and ignore the scheduler. Maybe it has something to do with Windows 10 1709? I’ll keep trying. At any rate, the thread has sort of derailed from the original intent of a feature request for Affinities to be able to be scheduled so I’ll stop posting here.

Sorry I’m a bit late to the party here!

Scheduled CPU/GPU affinity isn’t on the roadmap at the moment. I can help write an event script for it though if someone’s got the need and the means to write it! I think it would just be an OnSlaveInfoUpdated (Deadline 9+) event along with setting “SlaveInfo.SlaveGpuAffinity” and “SlaveInfo.SlaveCpuAffinity”. Add some good glue and inputs for the time and filtering to only certain machine names you’d be in business. We can also throw that up on Github so folks can remix it.

As far as affinity when running as a service, that conversation is happening over here so chime in thataway:
forums.thinkboxsoftware.com/vie … 11&t=15838

For services and mapped drives, we had that problem too so we allow the Slave to map them for you:
docs.thinkboxsoftware.com/produ … ped-drives

There’s a chicken-and-egg problem there if you’re using a mapped drive or password protected UNC path there for the Repository, but a fun workaround would be to run the RCS that puts both the DB and Repo over a single TCP session. Also good for OS X that keeps unmounted that darn volume all the time!

I’m after this feature, would be great to have the same scheduling options, such as cpu/ram usage, open application timeouts etc.

Currently looking to use this for places using multiple gpu card workstations, leaving a card free during working hours then adding it back in when idle / after 6pm etc.

Privacy | Site terms | Cookie preferences