Resource requirements

Application-level resource requirements can be simple (one requirement for all slots) or compound (different requirements for specified numbers of slots). When resource requirements are set at the application-level as well as the job-level or queue-level, the requirements are combined in different ways depending on whether they are simple or compound.

Simple job-level, application-level, and queue-level resource requirements are merged in the following manner:
  • If resource requirements are not defined at the application level, simple job-level and simple queue-level resource requirements are merged.

  • When simple application-level resource requirements are defined, simple job-level requirements usually take precedence. Specifically:

    Section

    Simple resource requirement multi-level behavior

    select

    All levels satisfied

    same

    All levels combined

    order

    span

    cu

    Job-level section overwrites application-level section, which overwrites queue-level section (if a given level is present)

    rusage

    All levels merge

    If conflicts occur the job-level section overwrites the application-level section, which overwrites the queue-level section.

    affinity

    Job-level section overwrites application-level section, which overwrites queue-level section (if a given level is present)

Compound application-level resource requirements are merged in the following manner:

  • When a compound resource requirement is set at the application level, it will be ignored if any job-level resource requirements (simple or compound) are defined.

  • In the event no job-level resource requirements are set, the compound application-level requirements interact with queue-level resource requirement strings in the following ways:

    • If no queue-level resource requirement is defined or a compound queue-level resource requirement is defined, the compound application-level requirement is used.

    • If a simple queue-level requirement is defined, the application-level and queue-level requirements combine as follows:

      Section

      Compound application and simple queue behavior

      select

      Both levels satisfied; queue requirement applies to all compound terms

      same

      Queue level ignored

      order

      span

      Application-level section overwrites queue-level section (if a given level is present); queue requirement (if used) applies to all compound terms

      rusage

      • Both levels merge

      • Queue requirement if a job-based resource is applied to the first compound term, otherwise applies to all compound terms

      • If conflicts occur the application-level section overwrites the queue-level section.

      For example: if the application-level requirement is num1*{rusage[R1]} + num2*{rusage[R2]} and the queue-level requirement is rusage[RQ] where RQ is a job resource, the merged requirement is num1*{rusage[merge(R1,RQ)]} + num2*{rusage[R2]}

      affinity

      Job-level section overwrites application-level section, which overwrites queue-level section (if a given level is present)

For internal load indices and duration, jobs are rejected if they specify resource reservation requirements at the job level or application level that exceed the requirements specified in the queue.

If RES_REQ is defined at the queue level and there are no load thresholds that are defined, the pending reasons for each individual load index will not be displayed by bjobs.

When LSF_STRICT_RESREQ=Y is configured in lsf.conf, resource requirement strings in select sections must conform to a more strict syntax. The strict resource requirement syntax only applies to the select section. It does not apply to the other resource requirement sections (order, rusage, same, span, or cu). When LSF_STRICT_RESREQ=Y in lsf.conf, LSF rejects resource requirement strings where an rusage section contains a non-consumable resource.

When the parameter RESRSV_LIMIT in lsb.queues is set, the merged application-level and job-level rusage consumable resource requirements must satisfy any limits set by RESRSV_LIMIT, or the job will be rejected.