The enclosed patch addresses two separate issues:

1.  Generic Consumable Floating Resources do not work properly when
    a job also requests the `mem' resource.

2.  Typos found in the initialization of the RQ data structure in the
    MPBSJobAdjustResources subroutine.

Generic Consumable Floating Resources Issue Description
-------------------------------------------------------

We configured maui to have a Generic Consumable Floating Resource

NODECFG[GLOBAL] GRES=hsimplus:1

We then attempted to request this resource, see following example, the job was
promptly submitted and the hsimplus resource was allocated.

% qsub -l software=hsimplus test_job

However, when we also requested a particular memory size, see following example,
the job would never get submitted due to lack of memory resource of the GLOBAL 
node.

% qsub -l software=hsimplus,mem=2G test_job
--- /export/home/tomr/maui-3.2.6p19.orig/src/moab/MPBSI.c       2007-03-28 
15:05:39.000000000 -0500
+++ /export/home/tomr/src/rpm/SOURCES/maui-3.2.6p19/src/moab/MPBSI.c    
2007-06-26 11:35:14.000000000 -0500
@@ -4249,7 +4249,7 @@
 
     /* adjust 'per task limits */
 
-    if (MaxJobMem > 0)
+    if ((MaxJobMem > 0) && (RQ->DRes.Procs))
       {
       /* set job wide dedicated resources */
 
@@ -4261,7 +4261,7 @@
       RQ->URes.Mem /= RQ->TaskCount;
       }
 
-    if (MaxJobSwap > 0)
+    if ((MaxJobSwap > 0) && (RQ->DRes.Procs))
       {
       /* set both dedicated resources AND node requirements */
 
@@ -6034,10 +6034,11 @@
 
     if (TA != NULL)
       {
-      if (TA->JobMemLimit > 0)
+       if ((TA->JobMemLimit > 0) && (RQ->DRes.Procs)) {
         RQ->DRes.Mem = MAX(RQ->DRes.Mem,TA->JobMemLimit / RQ->TaskCount);
+       }
 
-      if (TA->JobSwapLimit > 0)
+       if ((TA->JobSwapLimit > 0) && (RQ->DRes.Procs))
         RQ->DRes.Swap = MAX(RQ->DRes.Swap,TA->JobSwapLimit / RQ->TaskCount);
       }  /* END if (TA != NULL) */
  
@@ -6054,9 +6055,9 @@
 
         RQ->RequiredMemory = J->Req[0]->RequiredMemory;
         RQ->MemCmp         = J->Req[0]->MemCmp;
-        RQ->RequiredSwap   = J->Req[0]->RequiredMemory;
+        RQ->RequiredSwap   = J->Req[0]->RequiredSwap;
         RQ->SwapCmp        = J->Req[0]->SwapCmp;
-        RQ->RequiredDisk   = J->Req[0]->RequiredMemory;
+        RQ->RequiredDisk   = J->Req[0]->RequiredDisk;
         RQ->DiskCmp        = J->Req[0]->DiskCmp;
         }
  
_______________________________________________
mauiusers mailing list
[email protected]
http://www.supercluster.org/mailman/listinfo/mauiusers

Reply via email to