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 *
* *
********************************************************************
------------------------------------------------------------------------
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