"LSF does not support reporting both host-based pending reason and main pending reason (about license)."
Let me provide a portion of the bsub statement from our case to exemplify the customer's dilemma.
bsub -R "rusage[mem=3000.00:duration=1m,md_rdcbase_lsi_g=1.00:duration=1m||md_rdcbase_lsi_l=1.00]" sleep 100
In the following bsub statement, the job submission should be completed when either conditions of the OR statments is satisfied.
Condition 1: mem=3000.00:duration=1m,md_rdcbase_lsi_g=1.00:duration=1m
Condition 2: md_rdcbase_lsi_l=1.00
However, the customer is confused because when the job is submitted and pends, bjobs -l <JOB_ID> shows the following message:
Job's requirements for resource reservation not satisfied (Resource: md_rdcbase_lsi_l);
$ bhosts -s md_rdcbase_lsi_g md_rdcbase_lsi_l
RESOURCE TOTAL RESERVED LOCATION
md_rdcbase_lsi_g 10.0 0.0 ALL
md_rdcbase_lsi_l 0.0 10.0 ALL
Based on the customer's original job submission, if either resources are available, the job should run. However, in reality, they are not only experiencing a lack of the latter resource (Condition 2), but they also have insufficient amounts of memory available for the job. So conclusively both Condition 1 and Condition 2 were not met.
"At that time, the pending reason is always for the last condition that is not satisfied. This is current LSF behaviour." Thus, only the following pending reason "Job requirements for reserving resources (md_rdcbase_lsi_l) not satisfied". is displayed to the user. For that reason, the customers were confused since they know that md_rdcbase_lsi_g is available for use. Since this was the case, customers perceived this to be an LSF scheduling issue.
So far we considered the following bsub option where Memory reservation is included for both resources:
bsub -R "rusage[mem=3000.00:duration=1m,md_rdcbase_lsi_g=1.00:duration=1m||mem=3000.00:duration=1m,md_rdcbase_lsi_l=1.00]" sleep 100
"but for pending reason about license,
License is a cluster-based resource. It is used by the whole cluster. If a license is not enough for a job, job cannot start even if many servers have enough memory. So job pending reason is for license if license is enough. Then LSF does not check memory resource.
Memory is a host-based resource. It is used by individual servers. A server does not have enough memory for the job, but other servers might have enough memory.
That's to say, when scheduling a job, LSF checks license first for the job. If license is enough, LSF continues to check memory. If license is not enough, mark pending reason to license related reason.
For the customer's job, the first condition includes memory and license requirements. When the first condition is not satisfied, LSF checks the second condition. If the second condition is not satisfied, the pending reason is for the second condition. This is LSF design behaviour."
In conclusion, the customer still cannot perceive the lack of memory to complete their jobs since they can only see the pending reason for insufficient number of licenses available. As this is the case, a drastic need for a logic to show pending reason for Condition 2 of the bsub rusage OR statement is evident to prevent further confusion for LSF users.
Thank you for taking the time to provide your ideas to IBM. We truly value our relationship with you and appreciate your willingness to share details about your experience, your recommendations, and ideas.
IBM has evaluated the request and has determined that it cannot be implemented at this time, has been open an extended time without gaining community support or does not align with our current strategy or roadmap. If you would prefer that IBM re-evaluate this decision, please open a new Idea.