Using and Administering

Step 2: Specify User Stanzas

The information specified in a user stanza defines the characteristics of that user. You can have one user stanza for each user but this is not necessary. If an individual user does not have their own user stanza, that user uses the defaults defined in the default user stanza.

User stanzas take the following format:

Figure 26. Format of a User Stanza

label: type = user
account = list
default_class = list
default_group = group name
default_interactive_class = class name
maxidle = number
maxjobs = number
maxqueued = number
max_node = number
max_processors = number
priority = number
total_tasks = number

You can specify the following keywords in a user stanza:

account =list
where list is a blank-delimited list of account numbers that identifies the account numbers a user may use when submitting jobs. The default is a null list.

default_class =

list

where list is a blank-delimited list of class names used for jobs which do not include a class statement in the job command file. If you specify only one default class name, this class is assigned to the job. If you specify a list of default class names, LoadLeveler searches the list to find a class which satisfies the resource limit requirements. If no class satisfies these requirements, LoadLeveler rejects the job.

Suppose a job requests a CPU limit of 10 minutes. Also, suppose the default class list is default_class = short long, where short is a class for jobs up to five minutes in length and long is a class for jobs up to one hour in length. LoadLeveler will select the long class for this job because the short class does not have sufficient resources.

If no default_class is specified in the user stanza, or if there is no user stanza at all, then jobs submitted without a class statement are assigned to the default_class that appears in the default user stanza. If you do not define a default_class, jobs are assigned to the class called No_Class.

default_group = group_name
where group_name is the default group assigned to jobs submitted by the user. If a default_group statement does not appear in the user stanza, or if there is no user stanza at all, then jobs submitted by the user without a group statement are assigned to the default_group that appears in the default user stanza. If you do not define a default_group, jobs are assigned to the group called No_Group.

If you specify default_group = Unix_Group, LoadLeveler sets the user's LoadLeveler group to his or her primary UNIX group (as defined in the /etc/passwd file).

default_interactive_class =

class_name

where class_name is the class to which an interactive job submitted by this user is assigned if the user does not specify a class using the LOADL_INTERACTIVE_CLASS environment variable. You can specify only one default interactive class name.

If you do not set a default_interactive_class value in the user stanza, or if there is no user stanza at all, then interactive jobs submitted without a class statement are assigned to the default_interactive_class that appears in the default user stanza. If you do not define a default_interactive_class, interactive jobs are assigned to the class called No_Class.

See Example 2 for more information on how LoadLeveler assigns a default interactive class to jobs.

maxidle = number
where number is the maximum number of idle jobs this user can have in queue. That is, number is the maximum number of jobs which the negotiator will consider for dispatch for the user. Jobs above this maximum are placed in the NotQueued state. This prevents individual users from dominating the number of jobs that are either running or are being considered to run. If the user stanza does not specify maxidle or if there is no user stanza at all, the maximum number of jobs that can be simultaneously in queue for the user is defined in the default stanza. If no value is found, or the limit found is -1, then no limit is placed on the number of jobs that can be simultaneously idle for the user.

For more information, see Controlling the Mix of Idle and Running Jobs.

maxjobs = number
where number is the maximum number of jobs this user can run at any time. If the user stanza does not specify maxjobs or if there is no user stanza at all, the maximum jobs that can be simultaneously run by the user is defined in the default stanza. The default is -1, which means no limit is placed on the number of jobs that can simultaneously run for the user. Regardless of this limit, there is no limit to the number of jobs a user can submit.

For more information, see Controlling the Mix of Idle and Running Jobs.

maxqueued = number
where number is the maximum number of jobs allowed in the queue for this user. This is the maximum number of jobs which can be either running or being considered to be dispatched by the negotiator for that user. Jobs above this maximum are placed in the NotQueued state. This prevents individual users from dominating the number of jobs that are either running or are being considered to run. If no maxqueued is specified in the user stanza, or if there is no user stanza, the maximum number of jobs that can simultaneously be in the queue is defined in the default stanza. The default is -1, which means that no limit is placed on the number of jobs that can simultaneously be in the job queue for that user. Regardless of this limit, there is no limit to the number of jobs a user can submit.

For more information, see Controlling the Mix of Idle and Running Jobs.

max_node = number
where number specifies the maximum number of nodes this user can request for a parallel job in a job command file using the node keyword. The default is -1, which means there is no limit. The max_node keyword will not affect the use of the min_processors and max_processors keywords in the job command file.

max_processors = number
where number specifies the maximum number of processors this user can request for a parallel job in a job command file using the min_processors and max_processors keywords. The default is -1, which means there is no limit.

priority = number
where number is a integer that specifies the priority for jobs submitted by the user. The default is 0. The number specified for priority is referenced as UserSysprio in the configuration file. UserSysprio can be used in the assignment of job priorities. If the variable UserSysprio does not appear in the SYSPRIO expression in the configuration file, the priority numbers for users specified here in the administration file have no effect. See Step 6: Prioritize the Queue Maintained by the Negotiator for more information about the UserSysprio keyword.

total_tasks = number
where number specifies the maximum number of tasks this user can request for a parallel job in a job command file using the total_tasks keyword. The default is -1, which means there is no limit.

Examples of User Stanzas

Example 1

In this example, user fred is being provided with a user stanza. His jobs will have a user priority of 100. If he does not specify a job class in his job command file, the default job class class_a will be used. In addition, he can have a maximum of 15 jobs running at the same time.

# Define user stanzas
fred:  type = user
priority = 100
default_class = class_a
maxjobs = 15

Example 2

This example explains how a default interactive class for a parallel job is set by presenting a series of user stanzas and class stanzas. This example assumes that users do not specify the LOADL_INTERACTIVE_CLASS environment variable.

default: type =user
         default_interactive_class = red
         default_class = blue 
 
carol:   type = user 
         default_class = single double 
         default_interactive_class = ijobs
 
steve:   type = user
         default_class = single double
 
ijobs:   type = class
         wall_clock_limit = 08:00:00 
 
red:     type = class
         wall_clock_limit = 30:00
 

If the user Carol submits an interactive job, the job is assigned to the default interactive class called ijobs. The job is assigned a wall clock limit of 8 hours. If the user Steve submits an interactive job, the job is assigned to the red class from the default user stanza. The job is assigned a wall clock limit of 30 minues.

Example 3

In this example, Jane's jobs have a user priority of 50, and if she does not specify a job class in her job command file the default job class small_jobs is used. This user stanza does not specify the maximum number of jobs that Jane can run at the same time so this value defaults to the value defined in the default stanza. Also, suppose Jane is a member of the primary UNIX group "staff." Jobs submitted by Jane will use the default LoadLeveler group "staff." Lastly, Jane can use three different account numbers.

# Define user stanzas
jane:  type = user
priority = 50
default_class = small_jobs
default_group = Unix_Group
account = dept10 user3 user4


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