You are viewing an old version of this page. View the current version.

    Compare with Current View Page History

    « Previous Version 12 Next »

    This section describes the basic Qube! components, and then gives a brief overview of what happens when you submit a job.

    Qube! Components

    There are three main components to Qube!:

    1. The Worker, which is a program that runs on every computer (also called a "host") on which you want to execute your jobs.
    2. The Supervisor, which runs on a dedicated machine, and keeps track of everything. It decides when a job runs, and which jobs run on which Workers.
    3. The Client refers to a number of interfaces that let you run actions from the command line, stand-alone GUI, and in-application submission GUIs (e.g. from Maya, 3ds Max, Nuke, etc.). Along with the commandline and GUI, there are also APIs (application programming interfaces) for Python, Perl, and C++ that provide the means to create custom actions.
      1. QubeWranglerView : (WxPython) (6.4+) WranglerView   is the newly renamed Qube! GUI. This UI is aimed at advanced users, Render Wranglers and Admins.
      2. QubeArtistView : (PyQt) ArtistView GUI is designed to be a more artist-centric view of Qube! that delivers fast feedback on your rendering pipeline.
      3. QubeMobileView : (Python) Qube! MobileView is a light-weight webserver that serves up mobile-enhanced web pages from any machine in your facility. Note: Touch devices required for interaction . 
      4. QubeLocker : (PyQt) QBLocker gives artists the ability to control how much of their workstation is available to the render farm and shows which jobs are running on their workstation at any time.

    Jobs and other Terminology

    A Job is what's submitted by a client to the Supervisor. It's a small bundle of information that includes all the information the Worker will need to execute the job - what program(s) to run, where the source files are, who's running it, how many CPUs it wants, what OS it can run under, etc. When a job is submitted to the Supervisor, it's assigned a unique jobID, that is incremented by the supervisor with each job, (e.g jobID 12345 would be assigned to the job that's submitted immediately after jobID 12344.)

    When a job gets spread over multiple Workers, we say that each worker is running an Instance - even if a job is only run on one machine, that machine is running the single Instance.

    Instances (or Job Processes) are numbered 0 through n, where n is the number of processes that the job can run at the same time. Therefore if you want to have the farm render 10 frames at a time, the number of Instances for that job should be 10. Note: Instances were called Subjobs in Qube! before version 6.4.

    Icon

    The "Job CPUs" field specifies the number of Instances for a given job – it does not denote the actual number of processor cores to use when rendering.

    Agenda items (or Frames) refers to the granular list of items to be processed. Let's look at a simple example:
    Job 12345 wants to render 4 frames (numbered 100-103) on two workers.
    One way that might work out would be like this:

    1. The (4) agenda items are: frame 100, frame 101, frame 102, and frame 103.
    2. Instance 12345.0 renders frames 100 and 102 (agenda items 1 and 3)
    3. Instance 12345.1 renders frames 101 and 103 (agenda items 2 and 4)

    There are a lot of variations that can occur here, but the important thing to remember is the distinction between Instances and Agenda Items - Agenda Items (also commonly referred to as frames when rendering) are the granular list of things the job wants to accomplish, while Instances designate the number of machines the job is run on. (The simplest example is where the number of Instances equals the number of Agenda Items, but sometimes that's not the most efficient way to do things)

    Assigning a Job

    The Job Slots (or Process Slots) for a Worker determine how many processes a given Worker can run at a given time. The Job Slots have no direct relation to the number of processor cores on a given machine. It is often desirable when using a multithreaded renderer like Maya to have the Worker run 1 instance (or process) at a time. That process will in turn utilize all processor cores for the rendering. If wanting to run many single-threaded processes that require little resources, one may want to set the Worker to have 4 or 8 Job Slots available. 

    Every job in Qube! is assigned a numeric priority. Priority 1 is higher than priority 100. This is similar to 1st place, 2nd place, 3rd place, etc. The default priority assigned to a job is 9999. The priority is used to help determine when and where (on which Worker) a job will run. But there is more to it than that.

    Clustering

    Qube! has the concept of clusters. A cluster is a group of machines that is given a name. Clusters have a hierarchy, so that if a job cannot be run in one cluster, it may be able to run in a parent cluster. The most common example of this is show/sequence/shot. If the appropriate resources are not available in the "shot" cluster, the job may be assigned to the "sequence" cluster.

    Reservations

    Restrictions

    Job States

    See Also

    How to use clustering for workers
    How clustering affects priority and worker selection for jobs
    worker_cluster 
    supervisor_default_cluster
    client_cluster

     

    • No labels