xenial (5) sge_queue_conf.5.gz

Provided by: gridengine-common_6.2u5-7.4_all bug

NAME

       queue_conf - Sun Grid Engine queue configuration file format

DESCRIPTION

       This  manual page describes the format of the template file for the cluster queue configuration.  Via the
       -aq and -mq options of the qconf(1) command, you can add cluster queues and modify the  configuration  of
       any  queue  in  the  cluster.  Any  of  these  change operations can be rejected, as a result of a failed
       integrity verification.

       The queue configuration parameters take as values strings, integer decimal numbers or boolean,  time  and
       memory  specifiers  (see  time_specifier and memory_specifier in sge_types(5)) as well as comma separated
       lists.

       Note, Sun Grid Engine allows backslashes (\)  be  used  to  escape  newline  (\newline)  characters.  The
       backslash and the newline are replaced with a space (" ") character before any interpretation.

FORMAT

       The following list of parameters specifies the queue configuration file content:

   qname
       The  name of the cluster queue as defined for queue_name in sge_types(1).  As template default "template"
       is used.

   hostlist
       A list of host identifiers as defined for host_identifier in sge_types(1).  For each host Sun Grid Engine
       maintains a queue instance for running jobs on that particular host. Large amounts of hosts can easily be
       managed by using host groups rather than by single host names.  As list separators white-spaces  and  ","
       can be used.  (template default: NONE).

       If  more  than  one  host  is specified it can be desirable to specify divergences with the further below
       parameter settings for certain hosts.  These divergences  can  be  expressed  using  the  enhanced  queue
       configuration specifier syntax. This syntax builds upon the regular parameter specifier syntax separately
       for each parameter:

       "["host_identifier=<parameters_specifier_syntax>"]" [,"["host_identifier=<parameters_specifier_syntax>"]"
       ]

       note,  even  in  the enhanced queue configuration specifier syntax an entry without brackets denoting the
       default setting is required and used for all queue instances where no divergences are specified.   Tuples
       with  a  host group host_identifier override the default setting. Tuples with a host name host_identifier
       override both the default and the host group setting.

       Note that also with the enhanced queue configuration specifier syntax a default setting is always  needed
       for  each  configuration  attribute;  otherwise  the  queue  configuration gets rejected. Ambiguous queue
       configurations with more than one attribute setting for a particular host are  rejected.   Configurations
       containing override values for hosts not enlisted under 'hostname' are accepted but are indicated by -sds
       of qconf(1).  The cluster queue should  contain  an  unambiguous  specification  for  each  configuration
       attribute  of  each  queue  instance  specified  under  hostname  in  the  queue configuration. Ambiguous
       configurations with more than one attribute setting resulting from overlapping host groups are  indicated
       by  -explain  c  of  qstat(1)  and  cause  the  queue instance with ambiguous configurations to enter the
       c(onfiguration ambiguous) state.

   seq_no
       In conjunction with the hosts load situation at a time this parameter specifies this queue's position  in
       the  scheduling  order  within  the suitable queues for a job to be dispatched under consideration of the
       queue_sort_method (see sched_conf(5) ).

       Regardless of the queue_sort_method setting, qstat(1) reports queue information in the order  defined  by
       the  value  of  the  seq_no.  Set  this  parameter  to a monotonically increasing sequence. (type number;
       template default: 0).

   load_thresholds
       load_thresholds is a list of load thresholds. Already if one of the thresholds  is  exceeded  no  further
       jobs  will  be  scheduled  to  the  queues  and  qmon(1) will signal an overload condition for this node.
       Arbitrary load values being defined in the "host" and "global" complexes (see complex(5) for details) can
       be used.

       The  syntax  is that of a comma separated list with each list element consisting of the complex_name (see
       sge_types(5)) of a load value, an equal sign and the  threshold  value  being  intended  to  trigger  the
       overload situation (e.g. load_avg=1.75,users_logged_in=5).

       Note:  Load  values  as  well  as  consumable  resources may be scaled differently for different hosts if
       specified in the corresponding execution host definitions (refer to host_conf(5) for  more  information).
       Load thresholds are compared against the scaled load and consumable values.

   suspend_thresholds
       A  list  of  load thresholds with the same semantics as that of the load_thresholds parameter (see above)
       except that exceeding one of the denoted thresholds initiates suspension of one of multiple jobs  in  the
       queue.   See the nsuspend parameter below for details on the number of jobs which are suspended. There is
       an important relationship between the uspend_threshold and the cheduler_interval. If you have for example
       a  suspend threshold on the np_load_avg, and the load exceeds the threshold, this does not have immediate
       effect. Jobs continue running until the next scheduling run, where the scheduler  detects  the  threshold
       has been exceeded and sends an order to qmaster to suspend the job. The same applies for unsuspending.

   nsuspend
       The  number  of jobs which are suspended/enabled per time interval if at least one of the load thresholds
       in the suspend_thresholds list is exceeded or if no suspend_threshold is violated  anymore  respectively.
       Nsuspend jobs are suspended in each time interval until no suspend_thresholds are exceeded anymore or all
       jobs in the queue are suspended. Jobs are enabled in the corresponding way if the suspend_thresholds  are
       no  longer  exceeded.   The  time  interval  in  which  the  suspensions  of the jobs occur is defined in
       suspend_interval below.

   suspend_interval
       The time interval in which further nsuspend jobs are suspended if  one  of  the  suspend_thresholds  (see
       above  for  both)  is  exceeded  by the current load on the host on which the queue is located.  The time
       interval is also used when enabling the jobs.  The syntax is that of a time_specifier in sge_types(5).

   priority
       The priority parameter specifies the nice(2) value at which jobs in this queue will be run. The  type  is
       number and the default is zero (which means no nice value is set explicitly). Negative values (up to -20)
       correspond to a higher scheduling priority, positive values (up to +20) correspond to a lower  scheduling
       priority.

       Note, the value of priority has no effect, if Sun Grid Engine adjusts priorities dynamically to implement
       ticket-based entitlement policy goals. Dynamic priority adjustment is switched  off  by  default  due  to
       sge_conf(5) reprioritize being set to false.

   min_cpu_interval
       The  time  between  two automatic checkpoints in case of transparently checkpointing jobs. The maximum of
       the time requested by the user via qsub(1) and the time defined by the queue  configuration  is  used  as
       checkpoint  interval.  Since checkpoint files may be considerably large and thus writing them to the file
       system may become expensive, users and administrators are  advised  to  choose  sufficiently  large  time
       intervals.  min_cpu_interval  is of type time and the default is 5 minutes (which usually is suitable for
       test purposes only).  The syntax is that of a time_specifier in sge_types(5).

   processors
       A set of processors in case of a multiprocessor execution host can be defined to which the jobs executing
       in  this  queue  are  bound. The value type of this parameter is a range description like that of the -pe
       option of qsub(1) (e.g. 1-4,8,10) denoting the processor numbers for the  processor  group  to  be  used.
       Obviously  the  interpretation of these values relies on operating system specifics and is thus performed
       inside sge_execd(8) running on the queue host. Therefore, the parsing of the parameter has to be provided
       by the execution daemon and the parameter is only passed through sge_qmaster(8) as a string.

       Currently,  support  is  only  provided  for  multiprocessor machines running Solaris, SGI multiprocessor
       machines running IRIX 6.2 and Digital UNIX multiprocessor machines.  In the case of Solaris the processor
       set  must  already  exist,  when  this processors parameter is configured. So the processor set has to be
       created manually.  In the case of Digital UNIX only one job per processor set is allowed  to  execute  at
       the same time, i.e.  slots (see above) should be set to 1 for this queue.

   qtype
       The type of queue. Currently batch, interactive or a combination in a comma separated list or NONE.

       The  formerly  supported  types  parallel  and checkpointing are not allowed anymore. A queue instance is
       implicitly of type parallel/checkpointing if there is a parallel environment or a checkpointing interface
       specified for this queue instance in pe_list/ckpt_list.  Formerly possible settings e.g.

       qtype   PARALLEL

       could be transferred into

       qtype   NONE
       pe_list pe_name

       (type string; default: batch interactive).

   pe_list
       The  list  of  administrator-defined parallel environment (see sge_pe(5)) names to be associated with the
       queue. The default is NONE.

   ckpt_list
       The list of administrator-defined checkpointing interface names (see ckpt_name  in  sge_types(1))  to  be
       associated with the queue. The default is NONE.

   rerun
       Defines a default behavior for jobs which are aborted by system crashes or manual "violent" (via kill(1))
       shutdown of the complete Sun Grid Engine system (including the sge_shepherd(8)  of  the  jobs  and  their
       process  hierarchy)  on  the  queue host. As soon as sge_execd(8) is restarted and detects that a job has
       been aborted for such reasons it can be restarted  if  the  jobs  are  restartable.  A  job  may  not  be
       restartable,  for  example,  if  it  updates  databases  (first reads then writes to the same record of a
       database/file) because the abortion of the job may have left the database in an  inconsistent  state.  If
       the  owner  of  a  job  wants to overrule the default behavior for the jobs in the queue the -r option of
       qsub(1) can be used.

       The type of this parameter is boolean, thus either TRUE or FALSE can be specified. The default is  FALSE,
       i.e. do not restart jobs automatically.

   slots
       The maximum number of concurrently executing jobs allowed in the queue.  Type is number, valid values are
       0 to 9999999.

   tmpdir
       The tmpdir parameter specifies the absolute path to the base of the temporary directory filesystem.  When
       sge_execd(8)  launches a job, it creates a uniquely-named directory in this filesystem for the purpose of
       holding scratch files during job execution. At job  completion,  this  directory  and  its  contents  are
       removed  automatically. The environment variables TMPDIR and TMP are set to the path of each jobs scratch
       directory (type string; default: /tmp).

   shell
       If either posix_compliant  or  script_from_stdin  is  specified  as  the  shell_start_mode  parameter  in
       sge_conf(5)  the shell parameter specifies the executable path of the command interpreter (e.g.  sh(1) or
       csh(1)) to be used to process the job scripts executed in the queue.  The  definition  of  shell  can  be
       overruled by the job owner via the qsub(1) -S option.

       The type of the parameter is string. The default is /bin/csh.

   shell_start_mode
       This  parameter defines the mechanisms which are used to actually invoke the job scripts on the execution
       hosts. The following values are recognized:

       unix_behavior
              If a user starts a job shell script under UNIX interactively by invoking it just with  the  script
              name  the  operating system's executable loader uses the information provided in a comment such as
              `#!/bin/csh' in the first line of the script to detect  which  command  interpreter  to  start  to
              interpret  the  script.  This  mechanism  is  used  by  Sun  Grid  Engine  when  starting  jobs if
              unix_behavior is defined as shell_start_mode.

       posix_compliant
              POSIX does not consider first script line comments such a `#!/bin/csh' as being  significant.  The
              POSIX  standard for batch queuing systems (P1003.2d) therefore requires a compliant queuing system
              to ignore such lines but to use user specified or configured default command interpreters instead.
              Thus,  if  shell_start_mode  is set to posix_compliant Sun Grid Engine will either use the command
              interpreter indicated by the -S option of the qsub(1) command or the shell parameter of the  queue
              to be used (see above).

       script_from_stdin
              Setting  the shell_start_mode parameter either to posix_compliant or unix_behavior requires you to
              set the umask in use for sge_execd(8) such that every user has  read  access  to  the  active_jobs
              directory  in  the  spool directory of the corresponding execution daemon. In case you have prolog
              and epilog scripts configured, they also need to be readable by any user who may execute jobs.
              If this  violates  your  site's  security  policies  you  may  want  to  set  shell_start_mode  to
              script_from_stdin.  This will force Sun Grid Engine to open the job script as well as the epilogue
              and prologue scripts for reading into STDIN as root (if sge_execd(8) was started as  root)  before
              changing  to  the  job  owner's user account.  The script is then fed into the STDIN stream of the
              command interpreter indicated by the -S option of the qsub(1) command or the  shell  parameter  of
              the queue to be used (see above).
              Thus  setting  shell_start_mode  to script_from_stdin also implies posix_compliant behavior. Note,
              however, that feeding scripts into the STDIN stream of a command interpreter may cause trouble  if
              commands  like rsh(1) are invoked inside a job script as they also process the STDIN stream of the
              command interpreter. These problems can usually be resolved by redirecting the  STDIN  channel  of
              those  commands  to  come  from  /dev/null  (e.g.  rsh host date < /dev/null). Note also, that any
              command-line options associated with the job are passed to the executing  shell.  The  shell  will
              only forward them to the job if they are not recognized as valid shell options.

       The default for shell_start_mode is posix_compliant.  Note, though, that the shell_start_mode can only be
       used for batch jobs submitted by qsub(1) and can't be used for interactive  jobs  submitted  by  qrsh(1),
       qsh(1), qlogin(1).

   prolog
       The  executable  path of a shell script that is started before execution of Sun Grid Engine jobs with the
       same environment setting as that for the Sun Grid Engine jobs  to  be  started  afterwards.  An  optional
       prefix  "user@"  specifies  the user under which this procedure is to be started. The procedures standard
       output and the error output stream are written to the same file used also for  the  standard  output  and
       error output of each job.  This procedure is intended as a means for the Sun Grid Engine administrator to
       automate the execution of general site specific tasks like the preparation of temporary file systems with
       the  need  for the same context information as the job. This queue configuration entry overwrites cluster
       global or execution host specific prolog definitions (see sge_conf(5)).

       The default for prolog is the special value NONE, which prevents from execution  of  a  prologue  script.
       The   special  variables  for  constituting a command line are the same like in prolog definitions of the
       cluster configuration (see sge_conf(5)).

       Exit codes for the prolog attribute can be interpreted based on the following exit values:
              0: Success
              99: Reschedule job
              100: Put job in error state
              Anything else: Put queue in error state

   epilog
       The executable path of a shell script that is started after execution of Sun Grid Engine  jobs  with  the
       same  environment  setting  as  that  for  the Sun Grid Engine jobs that has just completed.  An optional
       prefix "user@" specifies the user under which this procedure is to be started.  The  procedures  standard
       output  and  the  error  output stream are written to the same file used also for the standard output and
       error output of each job. This procedure is intended as a means for the Sun Grid Engine administrator  to
       automate the execution of general site specific tasks like the cleaning up of temporary file systems with
       the need for the same context information as the job. This queue configuration entry  overwrites  cluster
       global or execution host specific epilog definitions (see sge_conf(5)).

       The  default  for  epilog  is the special value NONE, which prevents from execution of a epilogue script.
       The  special variables for constituting a command line are the same like in  prolog  definitions  of  the
       cluster configuration (see sge_conf(5)).

       Exit codes for the epilog attribute can be interpreted based on the following exit values:
              0: Success
              99: Reschedule job
              100: Put job in error state
              Anything else: Put queue in error state

   starter_method
       The specified executable path will be used as a job starter facility responsible for starting batch jobs.
       The executable path will be executed instead of the configured shell to start the job. The job  arguments
       will  be  passed  as  arguments  to the job starter. The following environment variables are used to pass
       information to the job starter concerning the shell environment which  was  configured  or  requested  to
       start the job.

       SGE_STARTER_SHELL_PATH
              The name of the requested shell to start the job

       SGE_STARTER_SHELL_START_MODE
              The configured shell_start_mode

       SGE_STARTER_USE_LOGIN_SHELL
              Set  to  "true"  if  the  shell  is  supposed  to  be  used  as a login shell (see login_shells in
              sge_conf(5))

       The starter_method will not be invoked for qsh, qlogin or qrsh acting as rlogin.

   suspend_method
   resume_method
   terminate_method
       These parameters can be used for overwriting the default method used by Sun Grid Engine  for  suspension,
       release  of  a  suspension  and  for  termination of a job. Per default, the signals SIGSTOP, SIGCONT and
       SIGKILL are delivered to the job to perform these actions. However, for some  applications  this  is  not
       appropriate.

       If no executable path is given, Sun Grid Engine takes the specified parameter entries as the signal to be
       delivered instead of the default signal. A signal must be either a positive number or a signal name  with
       "SIG" as prefix and the signal name as printed by kill -l (e.g.  SIGTERM).

       If  an  executable  path  is  given  (it  must be an absolute path starting with a "/") then this command
       together with its arguments is started by  Sun  Grid  Engine  to  perform  the  appropriate  action.  The
       following special variables are expanded at runtime and can be used (besides any other strings which have
       to be interpreted by the procedures) to constitute a command line:

       $host  The name of the host on which the procedure is started.

       $job_owner
              The user name of the job owner.

       $job_id
              Sun Grid Engine's unique job identification number.

       $job_name
              The name of the job.

       $queue The name of the queue.

       $job_pid
              The pid of the job.

   notify
       The time waited between delivery of SIGUSR1/SIGUSR2 notification signals and suspend/kill signals if  job
       was submitted with the qsub(1) -notify option.

   owner_list
       The  owner_list  enlists comma separated the login(1) user names (see user_name in sge_types(1)) of those
       users who are authorized to disable and suspend this queue through qmod(1) (Sun Grid Engine operators and
       managers  can  do  this  by  default).  It  is  customary  to  set  this  field for queues on interactive
       workstations where the computing resources are shared between interactive sessions and  Sun  Grid  Engine
       jobs, allowing the workstation owner to have priority access.  (default: NONE).

   user_lists
       The  user_lists  parameter  contains  a comma separated list of Sun Grid Engine user access list names as
       described in access_list(5).  Each user contained in at least one of the enlisted access lists has access
       to  the  queue.  If  the  user_lists parameter is set to NONE (the default) any user has access being not
       explicitly excluded via the xuser_lists parameter described below.  If a user is  contained  both  in  an
       access list enlisted in xuser_lists and user_lists the user is denied access to the queue.

   xuser_lists
       The  xuser_lists  parameter  contains a comma separated list of Sun Grid Engine user access list names as
       described in access_list(5).  Each user contained in at least one of the enlisted  access  lists  is  not
       allowed  to  access  the  queue.  If  the xuser_lists parameter is set to NONE (the default) any user has
       access.  If a user is contained both in an access list enlisted in xuser_lists and user_lists the user is
       denied access to the queue.

   projects
       The  projects parameter contains a comma separated list of Sun Grid Engine projects (see project(5)) that
       have access to the queue. Any project not in this list are denied access to the queue.  If  set  to  NONE
       (the  default),  any  project  has  access  that is not specifically excluded via the xprojects parameter
       described below. If a project is in both the projects and xprojects parameters,  the  project  is  denied
       access to the queue.

   xprojects
       The xprojects parameter contains a comma separated list of Sun Grid Engine projects (see project(5)) that
       are denied access to the queue. If set to NONE (the default), no projects are denied  access  other  than
       those  denied  access  based  on  the  projects  parameter  described above.  If a project is in both the
       projects and xprojects parameters, the project is denied access to the queue.

   subordinate_list
       There are two different types of subordination:

       1. Queuewise subordination

       A list of  Sun  Grid  Engine  queue  names  as  defined  for  queue_name  in  sge_types(1).   Subordinate
       relationships  are  in  effect  only between queue instances residing at the same host.  The relationship
       does not apply and is ignored when jobs are running in queue instances on other hosts.   Queue  instances
       residing  on  the  same  host  will  be suspended when a specified count of jobs is running in this queue
       instance.  The list specification is the same as  that  of  the  load_thresholds  parameter  above,  e.g.
       low_pri_q=5,small_q.  The  numbers  denote  the  job  slots  of  the  queue that have to be filled in the
       superordinated queue to trigger the suspension of the subordinated queue.  If  no  value  is  assigned  a
       suspension is triggered if all slots of the queue are filled.

       On  nodes  which  host more than one queue, you might wish to accord better service to certain classes of
       jobs (e.g., queues that are dedicated to parallel  processing  might  need  priority  over  low  priority
       production queues; default: NONE).

       2. Slotwise preemption

       The  slotwise  preemption provides a means to ensure that high priority jobs get the resources they need,
       while at the same time low priority jobs on the same host are not unnecessarily preempted, maximizing the
       host  utilization.  The slotwise preemption is designed to provide different preemption actions, but with
       the current implementation only suspension is provided.  This means there is a subordination relationship
       defined  between queues similar to the queuewise subordination, but if the suspend threshold is exceeded,
       not the whole subordinated queue is suspended, there are  only  single  tasks  running  in  single  slots
       suspended.

       Like  with  queuewise  subordination,  the  subordination  relationships are in effect only between queue
       instances residing at the same host. The relationship does not apply and is ignored when jobs  and  tasks
       are running in queue instances on other hosts.

       The syntax is:

       slots=<threshold>(<queue_list>)

       where
       <threshold> =a positive integer number
       <queue_list>=<queue_def>[,<queue_list>]
       <queue_def> =<queue>[:<seq_no>][:<action>]
       <queue>     =a Sun Grid Engine queue name as defined for
                    queue_name in sge_types(1).
       <seq_no>    =sequence number among all subordinated queues
                    of the same depth in the tree. The higher the
                    sequence number, the lower is the priority of
                    the queue.
                    Default is 0, which is the highest priority.
       <action>    =the action to be taken if the threshold is
                    exceeded. Supported is:
                    "sr": Suspend the task with the shortest run
                          time.
                    "lr": Suspend the task with the longest run
                          time.
                    Default is "sr".

       Some examples of possible configurations and their functionalities:

       a) The simplest configuration

       subordinate_list   slots=2(B.q)

       which  means  the  queue  "B.q"  is  subordinated to the current queue (let's call it "A.q"), the suspend
       threshold for all tasks running in "A.q" and "B.q" on the current host is two,  the  sequence  number  of
       "B.q"  is  "0"  and  the  action  is  "suspend  task  with  shortest  run time first". This subordination
       relationship looks like this:

             A.q
              |
             B.q

       This could be a typical configuration for a host with a dual core CPU. This  subordination  configuration
       ensures  that tasks that are scheduled to "A.q" always get a CPU core for themselves, while jobs in "B.q"
       are not preempted as long as there are no jobs running in "A.q".

       If there is no task running in "A.q", two tasks are running in "B.q" and  a  new  task  is  scheduled  to
       "A.q", the sum of tasks running in "A.q" and "B.q" is three. Three is greater than two, this triggers the
       defined action. This causes the task with the shortest run time in the subordinated  queue  "B.q"  to  be
       suspended.  After  suspension,  there is one task running in "A.q", on task running in "B.q" and one task
       suspended in "B.q".

       b) A simple tree

       subordinate_list   slots=2(B.q:1, C.q:2)

       This defines a small tree that looks like this:

             A.q
            /   \
          B.q   C.q

       A use case for this configuration could be a host with a dual core CPU and queue "B.q" and "C.q" for jobs
       with  different requirements, e.g. "B.q" for interactive jobs, "C.q" for batch jobs.  Again, the tasks in
       "A.q" always get a CPU core, while tasks in "B.q" and "C.q"  are  suspended  only  if  the  threshold  of
       running  tasks is exceeded.  Here the sequence number among the queues of the same depth comes into play.
       Tasks scheduled to "B.q" can't directly trigger the suspension of tasks in "C.q", but if there is a  task
       to be suspended, first "C.q" will be searched for a suitable task.

       If  there  is one task running in "A.q", one in "C.q" and a new task is scheduled to "B.q", the threshold
       of "2" in "A.q", "B.q" and "C.q" is exceeded. This triggers the suspension of one task in either "B.q" or
       "C.q".  The  sequence  number  gives  "B.q"  a higher priority than "C.q", therefore the task in "C.q" is
       suspended. After suspension, there is one task running in "A.q", one task running in "B.q" and  one  task
       suspended in "C.q".

       c) More than two levels

       Configuration of A.q: subordinate_list   slots=2(B.q)
       Configuration of B.q: subordinate_list   slots=2(C.q)

       looks like this:

             A.q
              |
             B.q
              |
             C.q

       These  are  three  queues with high, medium and low priority.  If a task is scheduled to "C.q", first the
       subtree consisting of "B.q" and "C.q" is checked, the number of tasks running there is  counted.  If  the
       threshold  which  is  defined in "B.q" is exceeded, the job in "C.q" is suspended. Then the whole tree is
       checked, if the number of tasks running in "A.q", "B.q" and "C.q" exceeds the threshold defined in  "A.q"
       the task in "C.q" is suspended. This means, the effective threshold of any subtree is not higher than the
       threshold of the root node of the tree.  If in this example a task is scheduled to "A.q", immediately the
       number of tasks running in "A.q", "B.q" and "C.q" is checked against the threshold defined in "A.q".

       d) Any tree

              A.q
             /   \
           B.q   C.q
          /     /   \
        D.q    E.q  F.q
                       \
                        G.q

       The  computation  of  the  tasks that are to be (un)suspended always starts at the queue instance that is
       modified, i.e. a task is scheduled to, a task ends at, the configuration is modified, a manual  or  other
       automatic  (un)suspend  is  issued,  except  when  it is a leaf node, like "D.q", "E.q" and "G.q" in this
       example. Then the computation starts at its parent queue instance (like "B.q", "C.q"  or  "F.q"  in  this
       example).  From there first all running tasks in the whole subtree of this queue instance are counted. If
       the sum exceeds the threshold configured in the subordinate_list, in this subtree a task is  searched  to
       be  suspended. Then the algorithm proceeds to the parent of this queue instance, counts all running tasks
       in the whole subtree below the parent and checks if the number exceeds the threshold  configured  at  the
       parent's  subordinate_list.  If  so,  it  searches  for  a task to suspend in the whole subtree below the
       parent. And so on, until it did this computation for the root node of the tree.

   complex_values
       complex_values defines quotas for resource attributes managed via this queue. The syntax is the  same  as
       for  load_thresholds  (see  above).  The  quotas are related to the resource consumption of all jobs in a
       queue in the case of consumable resources (see complex(5) for details on consumable  resources)  or  they
       are  interpreted  on  a  per  queue slot (see slots above) basis in the case of non-consumable resources.
       Consumable resource attributes are commonly used to manage free memory,  free  disk  space  or  available
       floating  software  licenses  while  non-consumable attributes usually define distinctive characteristics
       like type of hardware installed.

       For consumable resource attributes an available resource amount is determined by subtracting the  current
       resource consumption of all running jobs in the queue from the quota in the complex_values list. Jobs can
       only be dispatched to a queue if no resource requests  exceed  any  corresponding  resource  availability
       obtained by this scheme. The quota definition in the complex_values list is automatically replaced by the
       current load value reported for this attribute, if load  is  monitored  for  this  resource  and  if  the
       reported  load  value  is  more  stringent  than  the  quota. This effectively avoids oversubscription of
       resources.

       Note: Load values replacing the quota specifications may have become more  stringent  because  they  have
       been  scaled  (see host_conf(5)) and/or load adjusted (see sched_conf(5)).  The -F option of qstat(1) and
       the load display in the qmon(1) queue control dialog (activated by clicking on a  queue  icon  while  the
       "Shift"  key  is pressed) provide detailed information on the actual availability of consumable resources
       and on the origin of the values taken into account currently.

       Note also: The resource consumption of running jobs (used for the availability calculation)  as  well  as
       the  resource  requests  of  the  jobs  waiting to be dispatched either may be derived from explicit user
       requests during job submission (see the -l option to qsub(1)) or from a "default" value configured for an
       attribute  by  the  administrator (see complex(5)).  The -r option to qstat(1) can be used for retrieving
       full detail on the actual resource requests of all jobs in the system.

       For non-consumable resources Sun Grid Engine simply  compares  the  job's  attribute  requests  with  the
       corresponding  specification  in  complex_values  taking  the  relation operator of the complex attribute
       definition into account (see complex(5)).  If the result of  the  comparison  is  "true",  the  queue  is
       suitable  for  the  job with respect to the particular attribute. For parallel jobs each queue slot to be
       occupied by a parallel task is meant to provide the same resource attribute value.

       Note: Only numeric complex attributes can be  defined  as  consumable  resources  and  hence  non-numeric
       attributes are always handled on a per queue slot basis.

       The default value for this parameter is NONE, i.e. no administrator defined resource attribute quotas are
       associated with the queue.

   calendar
       specifies the calendar to be valid for this queue or contains NONE (the default). A calendar defines  the
       availability  of  a  queue  depending on time of day, week and year. Please refer to calendar_conf(5) for
       details on the Sun Grid Engine calendar facility.

       Note: Jobs can request queues with a certain calendar model via a "-l c=<cal_name>" option to qsub(1).

   initial_state
       defines an initial state for the queue either when adding the queue to the system for the first  time  or
       on start-up of the sge_execd(8) on the host on which the queue resides. Possible values are:

       default   The queue is enabled when adding the queue or is reset to the previous status when sge_execd(8)
                 comes up (this corresponds to the behavior in earlier Sun Grid Engine releases  not  supporting
                 initial_state).

       enabled   The  queue  is  enabled  in  either case. This is equivalent to a manual and explicit 'qmod -e'
                 command (see qmod(1)).

       disabled  The queue is disable in either case. This is equivalent to a  manual  and  explicit  'qmod  -d'
                 command (see qmod(1)).

RESOURCE LIMITS

       The  first  two resource limit parameters, s_rt and h_rt, are implemented by Sun Grid Engine. They define
       the "real time" or also called "elapsed" or "wall clock" time having passed since the start of  the  job.
       If  h_rt  is  exceeded by a job running in the queue, it is aborted via the SIGKILL signal (see kill(1)).
       If s_rt is exceeded, the job is first "warned" via the SIGUSR1 signal (which can be caught  by  the  job)
       and  finally aborted after the notification time defined in the queue configuration parameter notify (see
       above) has passed. In cases when s_rt is used in combination with job notification it might be  necessary
       to  configure  a  signal  other  than  SIGUSR1  using  the  NOTIFY_KILL and NOTIFY_SUSP execd_params (see
       sge_conf(5)) so that the jobs' signal-catching mechanism can "differ" the cases and react accordingly.

       The resource limit parameters s_cpu and h_cpu are implemented by Sun Grid Engine as  a  job  limit.  They
       impose  a limit on the amount of combined CPU time consumed by all the processes in the job.  If h_cpu is
       exceeded by a job running in the queue, it is aborted via a SIGKILL signal (see kill(1)).   If  s_cpu  is
       exceeded, the job is sent a SIGXCPU signal which can be caught by the job.  If you wish to allow a job to
       be "warned" so it can exit gracefully before it is killed then you should set the s_cpu limit to a  lower
       value  than  h_cpu.   For parallel processes, the limit is applied per slot which means that the limit is
       multiplied by the number of slots being used by the job before being applied.

       The resource limit parameters s_vmem and h_vmem are implemented by Sun Grid Engine as a job limit.   They
       impose  a  limit  on  the  amount of combined virtual memory consumed by all the processes in the job. If
       h_vmem is exceeded by a job running in the queue, it is aborted via a SIGKILL signal (see  kill(1)).   If
       s_vmem  is  exceeded,  the  job  is sent a SIGXCPU signal which can be caught by the job.  If you wish to
       allow a job to be "warned" so it can exit gracefully before it is killed then you should set  the  s_vmem
       limit  to  a  lower value than h_vmem.  For parallel processes, the limit is applied per slot which means
       that the limit is multiplied by the number of slots being used by the job before being applied.

       The remaining parameters in the queue configuration template specify  per  job  soft  and  hard  resource
       limits  as  implemented  by  the  setrlimit(2)  system call. See this manual page on your system for more
       information.  By default, each limit field is set to infinity (which means RLIM_INFINITY as described  in
       the  setrlimit(2) manual page). The value type for the CPU-time limits s_cpu and h_cpu is time. The value
       type for the other limits is memory.  Note: Not all systems support setrlimit(2).

       Note also: s_vmem and h_vmem (virtual memory) are only available on systems supporting  RLIMIT_VMEM  (see
       setrlimit(2) on your operating system).

       The  UNICOS  operating  system  supplied by SGI/Cray does not support the setrlimit(2) system call, using
       their own resource limit-setting system call instead.  For UNICOS systems only,  the  following  meanings
       apply:

       s_cpu     The per-process CPU time limit in seconds.

       s_core    The per-process maximum core file size in bytes.

       s_data    The per-process maximum memory limit in bytes.

       s_vmem    The same as s_data (if both are set the minimum is used).

       h_cpu     The per-job CPU time limit in seconds.

       h_data    The per-job maximum memory limit in bytes.

       h_vmem    The same as h_data (if both are set the minimum is used).

       h_fsize   The total number of disk blocks that this job can create.

SEE ALSO

       sge_intro(1),  sge_types(1),  csh(1),  qconf(1), qmon(1), qrestart(1), qstat(1), qsub(1), sh(1), nice(2),
       setrlimit(2), access_list(5), calendar_conf(5),  sge_conf(5),  complex(5),  host_conf(5),  sched_conf(5),
       sge_execd(8), sge_qmaster(8), sge_shepherd(8).

       See sge_intro(1) for a full statement of rights and permissions.