Author Topic: configuring host.processors  (Read 4013 times)

bijuramavfx

  • Sr. Member
  • ****
  • Posts: 40
configuring host.processors
« on: August 02, 2012, 04:22:41 PM »
Hi there:

Setting host.processors is a bit confusing, since there are three places one can set them - one in the job file, workers config file and then you have application application parameter to set the number of threads to use. Could someone explain it clearly the best way to use them. For example I would like to set Nuke render to use only 4 cores on every worker ..?

Thanks and much appreciated.

/Biju

bijuramavfx

  • Sr. Member
  • ****
  • Posts: 40
Re: configuring host.processors
« Reply #1 on: August 02, 2012, 06:28:43 PM »
Hi there:

Here is what I understand  - If I set the job reservation to host.processors=4 (in the job), each subjob will reserve 4 worker slots, and an 8-slot worker will run 2 subjobs at the same time.

I am trying to figure out if its possilbe to restrict the number of jobs to one in a 8-slot worker with host.processors=4 ..?


Thanks
/Biju

bijuramavfx

  • Sr. Member
  • ****
  • Posts: 40
Re: configuring host.processors
« Reply #2 on: August 02, 2012, 08:30:54 PM »
Hi here:

What does this mean..

host.processors=4, global_host.nuke=1 ..?

Cheers
/Biju

dmeyer

  • Sr. Member
  • ****
  • Posts: 40
Re: configuring host.processors
« Reply #3 on: August 09, 2012, 11:45:13 PM »
Hi there:

Here is what I understand  - If I set the job reservation to host.processors=4 (in the job), each subjob will reserve 4 worker slots, and an 8-slot worker will run 2 subjobs at the same time.

I am trying to figure out if its possilbe to restrict the number of jobs to one in a 8-slot worker with host.processors=4 ..?


Thanks
/Biju

host.processors=4+    will do this, but really, if you want to force each physical worker to only accept one task at a given time, you would use   host.processors=1+

Whether or not a given task will only use 4 threads is application specific and is defined either in the application file or in the specific application's submit parameters.  Qube itself does not control the OS thread scheduler.

BrianK

  • Hero Member
  • *****
  • Posts: 107
Re: configuring host.processors
« Reply #4 on: August 14, 2012, 03:07:46 PM »
Hi here:

What does this mean..

host.processors=4, global_host.nuke=1 ..?
The short version:
Each subjob process will reserve four job slots and one global_host resource called "nuke".  A host.processor reservation reserves the given number of job slots on a machine per subjob.  This global_host reservation reserves the given number of "nuke" resources per machine per subjob - meaning that multiple subjobs on the same machine only reserve a single global_host resource.


The long version:
To add to dmeyer's correct response above, this reservation can be broken down into two parts:

host.processors=4 - This will reserve 4 job slots for every instance of this job that's running on the farm.  By default, a worker has a job slot count that is equal to the number of processing units seen by the OS.  So on a dual, quad-core with hyperthreading enabled, the OS will see 2*4*2=16 "processors" which will make Qube assign 16 job slots to the worker.  In this case, 4 instances of this job could run on this machine at once (therefore rendering 4 frames in parallel through 4 subjob processes).  On a farm with 10 of these render nodes, you could potentially have 40 instances of this job running at once time.

global_host.nuke=1 - This assumes a global_host resource called "nuke" has been created on the supervisor (through supervisor_global_resources - see section 8.5 in the Administration manual http://pipelinefx.com/docs/).  Assuming that is true, this reservation will tell Qube that every instance of this job will use 1 of the "nuke" global_host resources.  Nuke's licensing model is one that allows nuke to run multiple instances on a single machine while only consuming a single license. A global_host resource is only counted once per node, regardless of the number of instances running on that node, so even if you were to run 4 instances of nuke on a machine, Qube will only reserve a single "nuke" global_host resource.   

To put it together, let's assume you have a 10 node farm, with each node having dual-quad core processors with hyperthreading enabled (therefore each node has 16 job slots), and you've set the supervisor to have global_host.nuke=2 in the global resources.
If you then submit a job with the reservation of:

host.processors=4, global_host.nuke=1

You are telling Qube that every instance of this job will reserve 4 job slots and 1 "nuke" global_host resource.  Being that you only have 2 "nuke" global resources, only 2 machines can run this job (or any other job with the same reservation) at any one time.  Being that you reserve 4 job slots for every instance, each machine can run 4 instances of this job (4*4 = 16).  In this case, then, the maximum number of instances that can run on this farm of 10 machines is 8 - 4 on one machine and 4 on another. 

bijuramavfx

  • Sr. Member
  • ****
  • Posts: 40
Re: configuring host.processors
« Reply #5 on: August 20, 2012, 08:44:58 PM »
Now if I want to run one one job on a worker using all the slots (all the cores) will host.processors=1+ do it ..?

thanks
/Biju

dmeyer

  • Sr. Member
  • ****
  • Posts: 40
Re: configuring host.processors
« Reply #6 on: August 20, 2012, 09:01:33 PM »
Now if I want to run one one job on a worker using all the slots (all the cores) will host.processors=1+ do it ..?

thanks
/Biju

yes.