[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [HTCondor-users] Usage of JobStart or ActivationTimer in startd RANK expression?

Hi Carsten,

I think with 8.9.2 there comes a builtin runtime feature. If you put 


In the submit file the requirement string of the job will be altered to: 

<snip>TARGET.Runtime >= RequestRuntime<snip> 

You then need to put a valid runtime value in the host classadds of course. You probably will want to make that value remote-changeable and reboot-safe by the usual means. 

At the same time once you got that value in the hostclassadd you can tweak yout negotiator to rank using 'Runtime' ....

If you use an earlier version of HTC you can implement the same thing using the start expression of course and take over the 'official' version later ... 

stay safe & healthy ! 


Christoph Beyer
DESY Hamburg

Notkestr. 85
Building 02b, Room 009
22607 Hamburg

mail: christoph.beyer@xxxxxxx

----- UrsprÃngliche Mail -----
Von: "Carsten Aulbert" <carsten.aulbert@xxxxxxxxxx>
An: "htcondor-users" <htcondor-users@xxxxxxxxxxx>
Gesendet: Dienstag, 31. MÃrz 2020 09:22:16
Betreff: [HTCondor-users] Usage of JobStart or ActivationTimer in startd	RANK expression?

Hi all,

we are currently trying to implement quite a number of changes to our
pool (and since we are pretty much stuck at the moment, I will probably
a lengthy email with a plea for ideas/help soon).

Apart from trying to get preemption going based priorities and other
factors (hence using the negotiator for that), we would like to enable
interactive jobs to be preferred on our nodes and we think, the best way
would be to use the startds' RANK expression here.

We make all resources of a node available as a large partitionable slot
and set the machine attribute "MinRunTimeHours" to define how long we
allow a user batch job to run before we may kill it. Just to be sure
that's readily available, we propagate it via STARTD_ATTRS as well.

Thus to allow an interactive job to enter, we simply tried something like

RANK = MY.MinRuntimeHours * 3600 > (time() - JobStart)

(or using ($(ActivationTimer) directly, but this does not work as
JobStart evaluates to UNDEFINED and hence $(ActivationTimer) evaluates to 0.

Interestingly, $(ActivityTimer) does yield a reasonable value.

Any idea, why this could be the case?

Cheers and thanks a lot in advance



03/31/20 07:21:22 Classad debug: [0.00095ms] MY --> CLASSAD
03/31/20 07:21:22 Classad debug: 2 --> 2
03/31/20 07:21:22 Classad debug: [0.04601ms] MY.MinRuntimeHours --> 2
03/31/20 07:21:22 Classad debug: [0.00191ms] JobStart --> UNDEFINED
03/31/20 07:21:22 Classad debug: [0.02503ms] ifThenElse(JobStart isnt
undefined,(time() - JobStart),0) --> 0
03/31/20 07:21:22 Classad debug: [0.12302ms] 1.000000000000000E+00 *
(MY.MinRuntimeHours * 60 > (ifThenElse(JobStart isnt undefined,(time() -
JobStart),0))) -
-> 1
Dr. Carsten Aulbert, Max Planck Institute for Gravitational Physics,
CallinstraÃe 38, 30167 Hannover, Germany
Phone: +49 511 762 17185

HTCondor-users mailing list
To unsubscribe, send a message to htcondor-users-request@xxxxxxxxxxx with a
subject: Unsubscribe
You can also unsubscribe by visiting

The archives can be found at: