Ticket #4973: Make consumption policies and matchlist caching work together

Consumption policies and matchlist caching don't work well together in the negotiator. When a partitionable slot ad with a consumption policy is matched to a job, it is removed (or is not added) to the matchlist cache. Thus, the pslot ad is only matched to a single job of a schedd's resource request, instead of to multiple jobs.
[Append remarks]

Remarks:

2015-Apr-29 15:22:53 by bbockelm:
Per phone call -

Brian


2015-May-28 17:11:05 by tannenba:
Brian, I don't think [44903] does quite the right thing. Recall that the MatchList is sorted according to all the various negotiator and job rank expressions. When you put the modified pslot back into the MatchList, it should be inserted into the proper place (ie insertion sort). The way things stand now, if any rank expressions refer to attributes that are modified when a pslot is split, things will break. For instance, think about a policy where rank expressions refer to the Cpus attribute of the pslot (eg a best-fit type policy like jobad Rank=RequestedCpus-Cpus).


2015-May-28 19:31:08 by bbockelm:
Ah, good catch!

I was worried about the approach but couldn't construct a clear counter-example.

I wanted to avoid re-sorting the match list, but that appears unavoidable. If I add a sort in, can you see other potential problems?


2015-May-29 08:58:55 by bbockelm:
Pushed a fix to re-sort the match list.

This patch was tested by setting up a personal HTCondor instance with 4 partitionable slots, each containing 4 cores, and NEGOTIATOR_PRE_JOB_RANK=Cpus (breadth-first-filling). A cluster of 8 jobs was submitted; with this patch, each p-slot received two matches (instead of 2 p-slots receiving 4 matches).

I additionally used the same setup with NEGOTIATOR_PRE_JOB_RANK=-Cpus to validate that depth-first-filling also works.


2015-Jun-12 10:50:59 by jfrey:
Code Review

[Append remarks]

Properties:

Type: enhance           Last Change: 2015-Jun-16 11:37
Status: resolved          Created: 2015-Apr-01 16:07
Fixed Version: v080307           Broken Version:  
Priority:          Subsystem: DaemonsCM 
Assigned To: jfrey           Derived From: #4490
Creator: jfrey  Rust:  
Customer Group: cms  Visibility: public 
Notify: bbockelm@cse.unl.edu, tannenba@cs.wisc.edu  Due Date:  

Related Check-ins:

2015-Jun-29 12:40   Check-in [45172]: edit 8.3.7 version history item #4973 (By Karen Miller )
2015-Jun-16 11:36   Check-in [45063]: Docs for consumption policy working with match list cache. #4973 (By Jaime Frey )
2015-Jun-15 12:03   Check-in [45048]: More MatchList caching with pslots and consumption policy changes. #4973 Simplify code to re-insert pslot into MatchList. (By Jaime Frey )
2015-May-29 08:53   Check-in [44914]: Re-sort match list after re-adding p-slot. #4973 When using consumption policies, we re-add the smaller p-slot back into the match list. With this commit, we re-sort the match list (using insertion sort). [...] (By Brian Bockelman )
2015-May-28 11:21   Check-in [44903]: Add modified slot back to match list when using CP. #4973 Previously, when a slot was sent to a schedd, it was removed from the MatchList -- this means a p-slot will be ignored until the match list is recomputed (typically, when a new auto-cluster is considered). [...] (By Brian Bockelman )