Hi Carsten,
maybe this thread gives you some idea what's going on: https://www-auth.cs.wisc.edu/lists/htcondor-users/2026-March/msg00079.shtml
To my knowledge, when using partitionable slots (which you seem to use given the slot1_1 naming), the preemption mechanism does not respect any of the retiring time, .. knobs. Static slots allow for a whoole lot more tuning..
My work-around for giving a group priority access to a node is the following:
EP:
> MaxJobRetirementTime = 0
> START = Target.MaxJobRetirementTime == 0 || AcctGroup =?=
"prio_group"
Negotiator:
> # My == Machine, Target == Job
> PREEMPTION_REQUIREMENTS = My.Machine =?=
"special_node.hpc.uni-saarland.de" && Target.AcctGroup =?=
"prio_group" && !regexp("prio_group\..+@",
My.AccountingGroup) && (time() -
Target.EnteredCurrentStatus) >= 3600
> PREEMPTION_RANK = ifThenElse(isUndefined(RemoteUserPrio), 0,
(RemoteUserPrio * 1000000)) -
ifThenElse(isUndefined(TotalJobRunTime), 0, TotalJobRunTime) -
CPUs - 24*GPUs
I.e. only start jobs on the "special_node" that explicitly say
they are fine with being killed without warning
(MaxJobRetirementTime = 0).
On the negotiator, preempt only non-priority jobs & only after
the job had more than 1hr since entering the running state.
So every job gets a guaranteed min-runtime before being
interrupted.. but they still have to checkpoint proactively, not
only on SIGTERM/SIGHUP.
Best,
- Joachim
Joachim Meyer
HPC-Koordination & Support
Universität des Saarlandes FR Informatik | HPC
Postanschrift: Postfach 15 11 50 | 66041 Saarbrücken
Besucheranschrift: Campus E1 3 | Raum 4.03 66123 Saarbrücken
T: +49 681 302-57522 jme...@cs.uni-saarland.de www.uni-saarland.de