On 01/16/2017 10:02 AM, John Hearns wrote:
The concept at the moment is to run the Renderpal server, which is a Windows
application and it can detect the Linux render clients via a 'heartbeat'
mechanism.
I would spawn the Linux clients as needed via slurm.
Sounds reasonable.
Thinking out loud, I could use slurm to run render clients on all compute nodes
in the cluster, then use job preemption to kill the jobs when other compute jobs
need the nodes. I guess that very much risks 'live' Renderpal jobs being killed
off.
This works well, but slurm doesn't understand swap. So it worked for me in
testing, until I used it in production and couldn't figure out why jobs wouldn't
suspend. For that reason I had to use CR_CPU instead of CR_CPU_MEM to tell
slurm to only manage CPUs and not CPUs + ram.
Seems kinda weird to allow suspend, but not swap. Ram is pretty expensive to
waste on suspended processes. So I can't mix high memory/low cpu jobs and low
memory/high CPU jobs and efficiently utilize nodes.
> The script will have to block until the job completes I think - else the
> RenderPal server will report it has finished.
> Is it possible to block and wait till an sbatch has finished?
> Or shoudl I be thinking on using srun here?
Jobs could depend on other jobs, so that could work. Your jobs could do
something like touch ~/job/finished/$SLURM_JOBID. But I do think the easiest
would be srun.