I'm trying to use PREEMPTION_RANK to control which jobs get preempted in my cluster. Specifically, I'd like to use the job priority, so that, all other things being equal, jobs with lower priority are preempted first.
I've put the following the negotiator machine's condor_config file:
PREEMPTION_RANK = -TARGET.JobPrio
…but it doesn't seem to have any effect.
My test setup:
- 3 slots, all identical, running on one machine
- User A submits 3 jobs, each with a different priority (0, 1, or 2). User A's jobs are have a machine rank of 0.
- User B then submits a job with a higher machine rank, so that preemption would occur.
- Regardless of the order and priority of user A's jobs, it's always the last submitted job that's being preempted.
- I've also tried adding a new ClassAd attribute, and using it in PREEMPTION_RANK in a similar manner, but to no avail.
BTW, I've managed to use PREEMPTION_RANK to preempt the shortest running job, using:
PREEMPTION_RANK = -TotalJobRunTime
…so I know that the mechanism works.
- Can I use PREEMPTION_RANK the way I described above?
- Is there a way to diagnose the way the condor negotiator matches jobs to slots? Specifically, I'd like to know the Match List sort order, and the PREEMPTION_RANK given to each running job.
Any help would be greatly appreciated.