Job-level resource requirements

Each job can specify resource requirements. Job-level resource requirements override any resource requirements specified in the remote task list.

In some cases, the queue specification sets an upper or lower bound on a resource. If you attempt to exceed that bound, your job will be rejected.


To specify resource requirements for your job, use bsub -R and specify the resource requirement string as usual. You can specify multiple -R order, same, rusage, and select sections.

Within esub, you can get resource requirements using the LSB_SUB_RES_REQ variable, which merges multiple –R from the bsub command. If you want to modify the LSB_SUB_RES_REQ variable, you cannot use multiple –R format. Instead, use the && operator to merge them manually.

Merged RES_REQ rusage values from the job and application levels must be in the range of RESRSV_LIMIT (set in lsb.queues), or the job is rejected.


bsub -R "swp > 15 && hpux order[ut]" myjob


bsub -R "select[swp > 15]" -R "select[hpux] order[ut]" myjob

This runs myjob on an HP-UX host that is lightly loaded (CPU utilization) and has at least 15 MB of swap memory available.

bsub -R "select[swp > 15]" -R "select[hpux] order[r15m]"  -R "order[r15m]" -R rusage[mem=100]" 
-R "order[ut]" -R "same[type] -R "rusage[tmp=50:duration=60]" -R "same[model]" myjob

LSF merges the multiple -R options into one string and dispatches the job if all of the resource requirements can be met. By allowing multiple resource requirement strings and automatically merging them into one string, LSF simplifies the use of multiple layers of wrapper scripts.