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.
Remarks:
2015-Apr-29 15:22:53 by bbockelm:
Per phone call -
- This is likely a regression - can be backported to stable.
- Given timelines, most likely target is 8.5.0.
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
- Consumption policies, matchlist caching, and pslot preemption can't all be used together. Each pslot will only have one preempting claim handed out per cached match list. This can be considered future work.
- Your sorting code in insert_candidate() is overly complex. You only need one loop to move entries up in the list until the space for the new entry is in the right spot.
- Using size_t in insert_candidate() is only adding extra casts.
Properties:
Type: |
enhance |
|
Last Change: |
2015-Jun-16 11:37 |
Status: |
resolved |
|
Created: |
2015-Apr-01 16:07 |
Fixed Version: |
v080307 |
|
Broken Version: |
|
Priority: |
3 |
|
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 ) |