enable NODEALLOCMAXPS (patch from Bas van der Vlies)

git-svn-id: svn://opensvn.adaptivecomputing.com/maui/trunk@71 3f5042e3-fb1d-0410-be18-d6ca2573e517
This commit is contained in:
wightman 2006-11-17 16:44:51 +00:00
parent f07c10a297
commit 639302b96d
8 changed files with 50 additions and 6 deletions

View File

@ -765,7 +765,8 @@ enum {
pOLDAFSWeight,
pOLDDirectSpecWeight,
pOLDBankServer,
pOLDRMServer
pOLDRMServer,
pNAMaxPS
};
#endif /* __M_COMMON_H__ */

View File

@ -2191,6 +2191,7 @@ typedef struct {
char PartitionFeatureHeader[MAX_MNAME];
int PartitionFeatureIsVisible; /* (boolean) */
int InitialLoad;
int NodeAllocMaxPS;
mgcred_t *DefaultU;
mgcred_t *DefaultG;

View File

@ -1580,6 +1580,7 @@ int MCfgSetVal(
case pProcSpeedFeatureHeader:
case pNodeTypeFeatureHeader:
case pPartitionFeatureHeader:
case pNAMaxPS:
case pNAPolicy:
case pSchedMode:
case pClientTimeout:

View File

@ -1432,6 +1432,7 @@ const mcfg_t MCfg[] = {
{ "MINADMINSTIME", mcoAdminMinSTime, mdfString, mxoSched, NULL },
{ "MINDISPATCHTIME", pMinDispatchTime, mdfString, mxoSched, NULL },
{ "NODEACCESSPOLICY", pNAPolicy, mdfString, mxoSched, NULL },
{ "NODEALLOCMAXPS", pNAMaxPS, mdfString, mxoSched, NULL },
{ "NODEALLOCATIONPOLICY", pNodeAllocationPolicy, mdfString, mxoPar, NULL },
{ "NODECAP", pRNodeCap, mdfInt, mxoPar, NULL },
{ "NODECPUOVERCOMMITFACTOR", pNodeCPUOverCommitFactor, mdfDouble, mxoSched, NULL },

View File

@ -2682,7 +2682,16 @@ int MJobCheckLimits(
JUsage[mptMaxProc] = MJobGetProcCount(J);
JUsage[mptMaxNode] = J->Request.NC;
JUsage[mptMaxWC] = J->WCLimit;
JUsage[mptMaxPS] = JUsage[mptMaxProc] * JUsage[mptMaxWC];
if ((J->Req[0]->NAccessPolicy == mnacSingleJob) &&
(MSched.NodeAllocMaxPS == TRUE))
{
JUsage[mptMaxPS] = J->NodesRequested * JUsage[mptMaxWC];
}
else
{
JUsage[mptMaxPS] = JUsage[mptMaxProc] * JUsage[mptMaxWC];
}
MJobGetPE(J,&MPar[0],&PE);

View File

@ -1538,7 +1538,16 @@ int MPolicyAdjustUsage(
PConsumed[mptMaxJob] = 1;
PConsumed[mptMaxProc] = MJobGetProcCount(J);
PConsumed[mptMaxNode] = J->Request.NC;
PConsumed[mptMaxPS] = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
if ((J->Req[0]->NAccessPolicy == mnacSingleJob) &&
(MSched.NodeAllocMaxPS == TRUE))
{
PConsumed[mptMaxPS] = J->NodesRequested * PConsumed[mptMaxWC];
}
else
{
PConsumed[mptMaxPS] = PConsumed[mptMaxProc] * PConsumed[mptMaxWC];
}
MJobGetPE(J,&MPar[0],&PE);

View File

@ -5464,6 +5464,12 @@ int MSchedProcessOConfig(
break;
case pNAMaxPS:
S->NodeAllocMaxPS = MUBoolFromString(SVal,FALSE);
break;
case pSchedMode:
S->Mode = MUGetIndex(SVal,MSchedMode,FALSE,S->Mode);

View File

@ -898,7 +898,15 @@ int MStatUpdateActiveJobUsage(
called from: MQueueAddAJob()
*/
TotalProcs = MJobGetProcCount(J);
if ((J->Req[0]->NAccessPolicy == mnacSingleJob) &&
(MSched.NodeAllocMaxPS == TRUE))
{
TotalProcs = J->NodesRequested;
}
else
{
TotalProcs = MJobGetProcCount(J);
}
if (TotalProcs == 0)
{
@ -914,7 +922,15 @@ int MStatUpdateActiveJobUsage(
(double)MSched.Interval / 100.0,
(double)MSched.Time - J->StartTime);
pesdedicated = PE * interval;
if ((RQ->NAccessPolicy == mnacSingleJob) &&
(MSched.NodeAllocMaxPS == TRUE))
{
pesdedicated = TotalProcs * interval;
}
else
{
pesdedicated = PE * interval;
}
for (rqindex = 0;J->Req[rqindex] != NULL;rqindex++)
{
@ -935,7 +951,7 @@ int MStatUpdateActiveJobUsage(
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++)
{