Here is the new modified maxps pattch:
 NODEALLOCMAXPS.patch


--
--
********************************************************************
*                                                                  *
*  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: include/msched-common.h
===================================================================
--- include/msched-common.h	(revision 1)
+++ include/msched-common.h	(working copy)
@@ -872,7 +872,8 @@
   pOLDAFSWeight,
   pOLDDirectSpecWeight,
   pOLDBankServer,
-  pOLDRMServer
+  pOLDRMServer,
+  pNAMaxps		/* HvB */
   };
 
 #endif /* __M_COMMON_H__ */
Index: include/msched.h
===================================================================
--- include/msched.h	(revision 1)
+++ include/msched.h	(working copy)
@@ -2360,6 +2360,9 @@
   mnode_t *ComputeN[MAX_MNODE];
 
   int (*HTTPProcessF)(msocket_t *,char *);
+
+  /* HvB */
+  int   NodeAllocMaxps;	 /* (config boolean) */
   } msched_t;
 
 
Index: src/moab/MConst.c
===================================================================
--- src/moab/MConst.c	(revision 1)
+++ src/moab/MConst.c	(working copy)
@@ -1540,6 +1540,7 @@
   { "MINADMINSTIME",            mcoAdminMinSTime,             mdfString,  mxoSched, NULL },
   { "MINDISPATCHTIME",          pMinDispatchTime,             mdfString,  mxoSched, NULL },
   { "NODEACCESSPOLICY",         pNAPolicy,                    mdfString,  mxoSched, NULL },
+  { "NODEALLOCMAXPS",           pNAMaxps,                     mdfString,     mxoSched, NULL }, /* HvB */
   { "NODEALLOCATIONPOLICY",     pNodeAllocationPolicy,        mdfString,  mxoPar,   NULL },
   { "NODECAP",                  pRNodeCap,                    mdfInt,     mxoPar,   NULL },
   { "NODECPUOVERCOMMITFACTOR",  pNodeCPUOverCommitFactor,     mdfDouble,  mxoSched, NULL }, 
Index: src/moab/MStats.c
===================================================================
--- src/moab/MStats.c	(revision 1)
+++ src/moab/MStats.c	(working copy)
@@ -1006,8 +1006,21 @@
      called from:         MQueueAddAJob()
   */
 
-  TotalProcs = MJobGetProcCount(J);
 
+  /* 
+   * HvB  Calculation fix for SINGLEJOB nodes
+  RQ = J->Req[0];
+  if ( RQ->NAccessPolicy == mnacSingleJob )
+  */ 
+  if ( MSched.NodeAllocMaxps == TRUE )
+    {
+    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",
@@ -1022,7 +1035,18 @@
     (double)MSched.Interval / 100.0,
     (double)MSched.Time - J->StartTime);
 
-  pesdedicated = PE * interval;
+  /*
+   * HvB
+  if ( RQ->NAccessPolicy == mnacSingleJob )
+  */
+  if ( MSched.NodeAllocMaxps == TRUE )
+    {
+    pesdedicated = TotalProcs * interval;
+    }
+  else
+    {
+    pesdedicated = PE * interval;
+    }
 
   for (rqindex = 0;J->Req[rqindex] != NULL;rqindex++)
     { 
@@ -1040,10 +1064,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/MSched.c
===================================================================
--- src/moab/MSched.c	(revision 1)
+++ src/moab/MSched.c	(working copy)
@@ -5969,6 +5969,16 @@
 
       break;
 
+    /* HvB */
+    case pNAMaxps:
+      if (MUBoolFromString(SVal,TRUE) == TRUE)
+      	S->NodeAllocMaxps = TRUE;
+      else
+        S->NodeAllocMaxps = FALSE;
+
+      break;
+
+
     default:
 
       /* not handled */
Index: src/moab/MPolicy.c
===================================================================
--- src/moab/MPolicy.c	(revision 1)
+++ src/moab/MPolicy.c	(working copy)
@@ -1611,6 +1611,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",
@@ -1646,8 +1651,19 @@
     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 )
+    */
+    if ( MSched.NodeAllocMaxps == TRUE )
+      {
+      PConsumed[mptMaxPS]   = J->NodesRequested * PConsumed[mptMaxWC];
+      }
+    else
+      PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
+
     MJobGetPE(J,&MPar[0],&PE);
 
     PConsumed[mptMaxPE] = (int)PE;
@@ -1664,7 +1680,18 @@
     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 )
+    */
+    if ( MSched.NodeAllocMaxps == TRUE )
+      {
+      PConsumed[mptMaxPS]   = J->NodesRequested * PConsumed[mptMaxWC];
+      }
+    else
+      PConsumed[mptMaxPS]   = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
     }
   else
     {
Index: src/moab/MConfig.c
===================================================================
--- src/moab/MConfig.c	(revision 1)
+++ src/moab/MConfig.c	(working copy)
@@ -1778,6 +1778,7 @@
     case pPlotMaxNode:
     case pPlotNodeScale:
     case pNodeUntrackedProcFactor:
+    case pNAMaxps:	/* HvB */
 
       MSchedProcessOConfig(&MSched,PIndex,val,valf,valp,valpa,IndexName);
       
Index: src/moab/MJob.c
===================================================================
--- src/moab/MJob.c	(revision 1)
+++ src/moab/MJob.c	(working copy)
@@ -2759,6 +2759,11 @@
 
   double PE;
 
+  /*
+   * HvB
+  */
+  mreq_t *RQ;
+
   /* Modes:  active, system, queue */
 
   const char *FName = "MJobCheckLimits";
@@ -2790,8 +2795,21 @@
   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 )
+  */
+  if ( MSched.NodeAllocMaxps == TRUE )
+    {
+    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