We are encountering a scheduling problem in our HTCondor pool. We have marked certain slots with SlotPurpose="dedicated"
and expect that jobs should always be matched to these dedicated slots first, using shared slots only when no dedicated slots are free. In practice, however, we observe that jobs are sometimes scheduled on shared slots even when idle dedicated slots exist.Â
Expected vs. Observed:
Our intended behavior is that idle dedicated slots get claimed
preferentially. In other words, the negotiator should sort matching
slots so that any slot with SlotPurpose == "dedicated"
has the highest priority, regardless of other factors. Only if all dedicated slots are busy would a job be placed on a shared slot. Instead, we see jobs being assigned to shared slots while dedicated slots remain idle. This suggests that our NEGOTIATOR_PRE_JOB_RANK
_expression_ is not having the intended effect on slot ordering.
Configuration (relevant excerpts): We have set up custom attributes and ranking logic as followsÂ
SlotPurpose
attribute to each slot:SlotPurpose
attribute appears in the slot ClassAds.NEGOTIATOR_PRE_JOB_RANK usage: We assumed this is the right mechanism for slot prioritization. Are there alternative approaches?Â
Any advice on why our NEGOTIATOR_PRE_JOB_RANK
setup isnât working, or suggestions for alternate configurations to
enforce dedicated-slot usage, would be greatly appreciated. Thank you
for your help.
Sincerely,
Ritik Raj