Using and Administering

How Does LoadLeveler Schedule Jobs to Run on Machines?

When a user submits a job, LoadLeveler examines the job command file to determine what resources the job will need. LoadLeveler determines which machine, or group of machines, is best suited to provide these resources, then LoadLeveler dispatches the job to the appropriate machine(s). To aid this process, LoadLeveler uses queues. A job queue is a list of jobs that are waiting to be processed. When a user submits a job to LoadLeveler, the job is entered into an internal database-which resides on one of the machines in the LoadLeveler cluster-until it is ready to be dispatched to run on another machine, as shown in Figure 3.

Figure 3. Job Queues

View figure.

Once LoadLeveler examines a job to determine its required resources, the job is dispatched to a machine to be processed. Arrows 2 and 3 indicate that the job can be dispatched to either one machine, or-in the case of parallel jobs-to multiple machines. Once the job reaches the executing machine, the job runs.

Jobs do not necessarily get dispatched to machines in the cluster on a first-come, first-serve basis. Instead, LoadLeveler examines the requirements and characteristics of the job and the availability of machines, and then determines the best time for the job to be dispatched.

LoadLeveler also uses job classes to schedule jobs to run on machines. A job class is a classification to which a job can belong. For example, short running jobs may belong to a job class called short_jobs. Similarly, jobs that are only allowed to run on the weekends may belong to a class called weekend. The system administrator can define these job classes and select the users that are authorized to submit jobs of these classes. For more information on job classes, see Step 3: Specify Class Stanzas.

You can specify which types of jobs will run on a machine by specifying the type(s) of job classes the machine will support. For more information, see Step 1: Specify Machine Stanzas.

LoadLeveler also examines a job's priority in order to determine when to schedule the job on a machine. A priority of a job is used to determine its position among a list of all jobs waiting to be dispatched. For more information on job priority, see Setting and Changing the Priority of a Job.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]