I have just installed maui 3.2.6p16 and i have still have the same
problem. I could apply the patch without any problems ;-)

My question is will the patch be applied, changed or rejected? See explanation below

Regards and Thanks

-------- Original Message --------
Subject:        [Mauiusers] Patch for nodeaccespolicy SINGLEJOB and MAXPS for
SMPmachines
Date:   Mon, 14 Feb 2005 17:45:06 +0100
From:   Bas van der Vlies <[EMAIL PROTECTED]>
To:     Maui Users <[email protected]>



At our side we run one job per nodes and have an MAXPS setting of 600
hours and max walltime 120 hours. Our nodes have 2 processors. When the
user submits
an job for eg:
    1) qsub -I -lnodes=60:ppn=1 -lwalltime=10:00:00 ( will run )
    2) qsub -I -lnodes=60:ppn=2 -lwalltime=10:00:00 ( wil not run MAXPS
                                                      violation)

Now when job 1 runs is allocates the whole node and maui sees that it
oocupies 4 task ( 2 nodes and each node two cpu's = 4 tasks). So the
used tme will becalculated as 60 * 2 * 10 = 1200 hours. What is far more
then allowed!

The next example will only run one job instead of 2:
    qsub -I -lnodes=30:ppn=1 -lwalltime=10:00:00 ( will run )
    qsub -I -lnodes=30:ppn=1 -lwalltime=10:00:00 ( will not  run MAXPS
                                                   violation )

I have an patch that checks if NODEACCESSPOLICY SINGLEJOB is set. If so
then it forgets the cpu's per node.

--- PATCH attached --

--
--
********************************************************************
*                                                                  *
*  Bas van der Vlies                     e-mail: [EMAIL PROTECTED]      *
*  SARA - Academic Computing Services    phone:  +31 20 592 8012   *
*  Kruislaan 415                         fax:    +31 20 6683167    *
*  1098 SJ Amsterdam                                               *
*                                                                  *
********************************************************************



--
--
********************************************************************
*                                                                  *
*  Bas van der Vlies                     e-mail: [EMAIL PROTECTED]      *
*  SARA - Academic Computing Services    phone:  +31 20 592 8012   *
*  Kruislaan 415                         fax:    +31 20 6683167    *
*  1098 SJ Amsterdam                                               *
*                                                                  *
********************************************************************
Index: src/moab/MStats.c
===================================================================
--- src/moab/MStats.c	(revision 2)
+++ src/moab/MStats.c	(working copy)
@@ -913,8 +913,20 @@
      called from:         MQueueAddAJob()
   */
 
-  TotalProcs = MJobGetProcCount(J);
 
+  /* 
+   * HvB  Calculation fix for SINGLEJOB nodes
+  */ 
+  RQ = J->Req[0];
+  if ( RQ->NAccessPolicy == mnacSingleJob )
+    {
+    TotalProcs = J->NodesRequested;
+    }
+  else
+    {
+    TotalProcs = MJobGetProcCount(J);
+    }
+
   if (TotalProcs == 0)
     {
     DBG(3,fSTAT) DPrint("INFO:     no tasks associated with job '%s' (no statistics available)\n",
@@ -929,7 +941,14 @@
     (double)MSched.Interval / 100.0,
     (double)MSched.Time - J->StartTime);
 
-  pesdedicated = PE * interval;
+  if ( RQ->NAccessPolicy == mnacSingleJob )
+    {
+    pesdedicated = TotalProcs * interval;
+    }
+  else
+    {
+    pesdedicated = PE * interval;
+    }
 
   for (rqindex = 0;J->Req[rqindex] != NULL;rqindex++)
     { 
@@ -947,10 +966,10 @@
       psremaining = TotalProcs * (J->StartTime + J->WCLimit - MSched.Time);
     else
       psremaining = 0;
- 
+
     if ((J->StartTime != MSched.Time) && (J->CTime != MSched.Time))
       { 
-      psdedicated = interval * MJobGetProcCount(J);
+      psdedicated = interval * TotalProcs;
 
       for (nindex = 0;nindex < MAX_MNODE_PER_JOB;nindex++)
         {
Index: src/moab/MPolicy.c
===================================================================
--- src/moab/MPolicy.c	(revision 2)
+++ src/moab/MPolicy.c	(working copy)
@@ -1518,6 +1518,11 @@
 
   double PE;
 
+  /*
+   * HvB
+  */
+  mreq_t *RQ;
+
   const char *FName = "MPolicyAdjustUsage";
 
   DBG(4,fSCHED) DPrint("%s(%s,%s,%s,%s,%s,%s,%d,%s)\n",
@@ -1553,8 +1558,18 @@
     PConsumed[mptMaxJob]  = 1;    
     PConsumed[mptMaxProc] = MJobGetProcCount(J);
     PConsumed[mptMaxNode] = J->Request.NC;
-    PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
 
+    /*
+     *  HvB Calculation fix for NODEACCESSPOLICY SINGLEJOB
+    */
+    RQ = J->Req[0];
+    if ( RQ->NAccessPolicy == mnacSingleJob )
+      {
+      PConsumed[mptMaxPS]   = J->NodesRequested * PConsumed[mptMaxWC];
+      }
+    else
+      PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
+
     MJobGetPE(J,&MPar[0],&PE);
 
     PConsumed[mptMaxPE] = (int)PE;
@@ -1571,7 +1586,17 @@
     PConsumed[mptMaxNode] = R->NodeCount;
     PConsumed[mptMaxWC]   = R->EndTime - R->StartTime;
     PConsumed[mptMaxPE]   = R->AllocPC;
-    PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];       
+
+    /*
+     *  HvB Calculation fix for NODEACCESSPOLICY SINGLEJOB
+    */
+    RQ = J->Req[0];
+    if ( RQ->NAccessPolicy == mnacSingleJob )
+      {
+      PConsumed[mptMaxPS]   = J->NodesRequested * PConsumed[mptMaxWC];
+      }
+    else
+      PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
     }
   else
     {
Index: src/moab/MJob.c
===================================================================
--- src/moab/MJob.c	(revision 2)
+++ src/moab/MJob.c	(working copy)
@@ -2639,6 +2639,11 @@
 
   double PE;
 
+  /*
+   * HvB
+  */
+  mreq_t *RQ;
+
   /* Modes:  active, system, queue */
 
   const char *FName = "MJobCheckLimits";
@@ -2670,8 +2675,20 @@
   JUsage[mptMaxProc] = MJobGetProcCount(J);
   JUsage[mptMaxNode] = J->Request.NC;
   JUsage[mptMaxWC]   = J->WCLimit;
-  JUsage[mptMaxPS]   = JUsage[mptMaxProc] * JUsage[mptMaxWC];
 
+  /* 
+   * HvB Calculation fix for NODEACCESSPOLICY SINGLEJOB  
+  */
+  RQ = J->Req[0];
+  if ( RQ->NAccessPolicy == mnacSingleJob )
+    {
+    JUsage[mptMaxPS] = J->NodesRequested * JUsage[mptMaxWC];
+    }
+  else
+    {
+    JUsage[mptMaxPS] = JUsage[mptMaxProc] * JUsage[mptMaxWC];
+    }
+
   MJobGetPE(J,&MPar[0],&PE);      
 
   JUsage[mptMaxPE] = (int)PE;

_______________________________________________
mauiusers mailing list
[email protected]
http://www.supercluster.org/mailman/listinfo/mauiusers

Reply via email to