[Moabusers] soft policy violation scheduling

Michael Santos msantos at stsci.edu
Tue Jul 10 16:27:06 MDT 2007


Hi,

	According to section 8.2.2 of the Moab Admin guide, when scheduling  
jobs Moab first considers jobs that meet soft policy constraints, and  
then those that meet hard policy constraints.  My reading is that  
even if a job that violates soft policy constraints has a higher  
priority than a job that doesn't violate any constraints, the job  
that doesn't violate any constraints gets scheduled first.

	What I would really like would be to disable this feature, and have  
jobs scheduled based only on priority (assuming they meet hard policy  
constraints).  I would like to use SPVIOLATIONWEIGHT to penalize the  
priority of jobs that violate soft policy constraints.  The result  
should be that sometimes jobs that violate soft policy constraints  
get scheduled ahead of those that do not, depending on the interplay  
between other priority components and the value of SPVIOLATIONWEIGHT.

	I would greatly appreciate any suggestions on how I might accomplish  
this.  If you are interested in a concrete example, I have included  
one below.  We are running
moab server version 5.0.0p4 (snap NA) (rev. 6448M)

	I have a related simple question: how do I specify a finite soft  
limit, infinite hard limit combination?  I settled on, e.g.,  
MAXPROC=24,-1, after trying MAXPROC=24,0 with unexpected results.  I  
couldn't find any documentation on this.

	Thank you.

Best regards,
Michael Santos
Space Telescope Science Institute

Concrete example:

moab.cfg (relevant part):

QUEUETIMEWEIGHT     10

CREDWEIGHT              1
QOSCFG[normal]        PRIORITY=0
QOSCFG[special]        PRIORITY=100000 MAXPROC=1,-1

SERVICEWEIGHT           1
SPVIOLATIONWEIGHT       -100000

Situation:

2 proc cluster.  A QoS: special job is running indefinitely on proc  
1.  Proc 2 is running a job that finishes.  There are two queued 1- 
processor jobs.  They are

Job A: QoS: special, queuetime: 10 min
Job B: QoS: normal, queuetime: 1 min

If Job A were also QoS normal, Job A would execute now.  But since  
Job A violates QoS special's soft policy processor limit, it is  
blocked, and Job B executes.  This is despite the fact that, as I  
understand it, the priorities are:

Priority(A) = 100 (queuetime) + 100000 (QoS) + -100000 (SP violation)  
= 100
Priority(B) = 10 (queuetime)

Here's what I would like: As long as QoS special isn't saturating its  
resource limits, I want its jobs at the top of the priority list.   
But if QoS special is saturating its resource limits, I want its jobs  
to be prioritized based on their times in queue, not automatically  
shoved to the bottom of the priority list.  A job submitted to QoS  
special should never execute later than it would have had it been  
submitted to QoS normal instead.

Any advice on how to implement this would be greatly appreciated.



More information about the moabusers mailing list