This section explores different scenarios for how to configure your cluster. Five scenarios are presented, along with a basic idea of what configuration settings you will need to modify or what steps you will need to take for each scenario:
A uniformly owned, dedicated compute cluster, with a single front-end node for submission, and support for MPI applications.
A cluster of multiprocessor nodes.
A cluster of distributively owned nodes. Each node prefers to run jobs submitted by its owner.
Desktop submission to the cluster.
Expanding the cluster to nondedicated (desktop) computing resources.
Most of these scenarios can be combined. Each scenario builds on the previous one to add further functionality to the basic cluster configuration.
The most basic scenario involves a cluster where all resources are owned by a single entity and all compute nodes enforce the same policy for starting and stopping jobs. All compute nodes are dedicated, meaning that they will always start an idle job and they will never preempt or suspend until completion. There is a single front-end node for submitting jobs, and dedicated MPI jobs are enabled from this host.
In order to enable this basic policy, your global configuration file must contain these settings:
START = True SUSPEND = False CONTINUE = False PREEMPT = False KILL = False WANT_SUSPEND = True WANT_VACATE = True RANK = Scheduler =?= $(DedicatedScheduler) DAEMON_LIST = MASTER, STARTD
The final entry listed here specifies that the default role for nodes in your pool is execute-only. The DAEMON_LIST on your front-end node must also enable the condor_schedd. This front-end node's local configuration file will be
DAEMON_LIST = MASTER, STARTD, SCHEDD
If any node in your Condor pool is a symmetric multiprocessor machine, Condor will represent that node as multiple virtual machines (VMs), one for each CPU. By default, each VM will have a single CPU and an even share of all shared system resources, such as RAM and swap space. If this behavior satisfies your needs, you do not need to make any configuration changes for SMP nodes to work properly with Condor.
Some sites might want different behavior of their SMP nodes. For example, assume your cluster was composed of dual-processor machines with 1 gigabyte of RAM, and one of your users was submitting jobs with a memory footprint of 700 megabytes. With the default setting, all VMs in your pool would only have 500 megabytes of RAM, and your user's jobs would never run. In this case, you would want to unevenly divide RAM between the two CPUs, to give half of your VMs 750 megabytes of RAM. The other half of the VMs would be left with 250 megabytes of RAM.
There is more than one way to divide shared resources on an SMP machine with Condor, all of which are discussed in detail in the Condor Administrator's Manual. The most basic method is as follows. To divide shared resources on an SMP unevenly, you must define different virtual machine types and tell the condor_startd how many virtual machines of each type to advertise. The simplest method to define a virtual machine type is to specify what fraction of all shared resources each type should receive.
For example, if you wanted to divide a two-node machine where one CPU received one-quarter of the shared resources, and the other CPU received the other three-quarters, you would use the following settings:
VIRTUAL_MACHINE_TYPE_1 = 1/4 VIRTUAL_MACHINE_TYPE_2 = 3/4 NUM_VIRTUAL_MACHINES_TYPE_1 = 1 NUM_VIRTUAL_MACHINES_TYPE_2 = 1
If you want to divide certain resources unevenly but split the rest evenly, you can specify separate fractions for each shared resource. This is described in detail in the Condor Administrator's Manual.
Many clusters are owned by more than one entity. Two or more smaller groups might pool their resources to buy a single, larger cluster. In these situations, the group that paid for a portion of the nodes should get priority to run on those nodes.
Each resource in a Condor pool can define its own RANK expression, which specifies the kinds of jobs it would prefer to execute. If a cluster is owned by multiple entities, you can divide the cluster's nodes up into groups, based on ownership. Each node would set Rank such that jobs coming from the group that owned it would have the highest priority.
Assume there is a 60-node compute cluster at a university, shared by three departments: astronomy, math, and physics. Each department contributed the funds for 20 nodes. Each group of 20 nodes would define its own Rank expression. The astronomy department's settings, for example, would be
Rank = Department == "Astronomy"
The users from each department would also add a Department attribute to all of their job ClassAds. The administrators could configure Condor to add this attribute automatically to all job ads from each site (see the Condor Administrator's Manual for details).
If the entire cluster was idle and a physics user submitted 40 jobs, she would see all 40 of her jobs start running. If, however, a user in math submitted 60 jobs and a user in astronomy submitted 20 jobs, 20 of the physicist's jobs would be preempted, and each group would get 20 machines out of the cluster.
If all of the astronomy department's jobs completed, the astronomy nodes would go back to serving math and physics jobs. The astronomy nodes would continue to run math or physics jobs until either some astronomy jobs were submitted, or all the jobs in the system completed.
Most organizations that install a compute cluster have other workstations at their site. It is usually desirable to allow these machines to act as front-end nodes for the cluster, so users can submit their jobs from their own machines and have the applications execute on the cluster. Even if there is no shared file system between the cluster and the rest of the computers, Condor's remote system calls and file transfer functionality can enable jobs to migrate between the two and still access their data (see Section 15.2.5 for details on accessing data files).
To enable a machine to submit into your cluster, run the Condor installation program and specify that you want to setup a submit-only node. This will set the DAEMON_LIST on the new node to be
DAEMON_LIST = MASTER, SCHEDD
The installation program will also create all the directories and files needed by Condor.
Note that you can have only one node configured as the dedicated scheduler for your pool. Do not attempt to add a second submit node for MPI jobs.
One of the most powerful features in Condor is the ability to combine dedicated and opportunistic scheduling within a single system. Opportunistic scheduling involves placing jobs on nondedicated resources under the assumption that the resources might not be available for the entire duration of the jobs. Opportunistic scheduling is used for all jobs in Condor with the exception of dedicated MPI applications.
If your site has a combination of jobs and uses applications other than MPI, you should strongly consider adding all of your computing resources, even desktop workstations, to your Condor pool. With checkpointing and process migration, suspend and resume capabilities, opportunistic scheduling and matchmaking, Condor can harness the idle CPU cycles of any machine and put them to good use.
To add other computing resources to your pool, run the Condor installation program and specify that you want to configure a node that can both submit and execute jobs. The default installation sets up a node with a policy for starting, suspending, and preempting jobs based on the activity of the machine (for example, keyboard idle time and CPU load). These nodes will not run dedicated MPI jobs, but they will run jobs from any other universe, including PVM.