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

Re: [HTCondor-users] RunBenchmark variable



On 24/08/2020 17:49, Todd Tannenbaum wrote:
On 8/24/2020 10:22 AM, Xavier OUVRARD wrote:
Dear Greg,
thank you very much, I better understand this line that was particularly different in the config file I had; I am too new to HtCondor to know about the history. Additional question: what happens if the benchmark has never been run (I have it on some of the machines, with a shared config, HT Condor to latest 8.8.10 on every machines, with Centos 7. The upgrade has been finished already more than a week ago. Also some machines don't have Mips and Kflos settled when viewing condor_status, which make them ranked at the bottom, because we were using a rule for the post_rank that was: (RemoteOwner =?= UNDEFINED) * ( round(Mips / 500.0) / 2.0 + ( TotalSlots-SlotID ) + 0.8/TotalSlots - $(JOBS_AFTER) )

I have moved to a POST_JOB_RANK defined as follow:
Â(RemoteOwner =?= UNDEFINED) * round(Memory * (1.0 - TotalAvg * 1.0/ TotalSlots) + (TotalSlots - SlotID))
in order to solve the lack of Mips value.

HI Xavier,

If configure HTCondor to not run benchmarks, then machine attributes like MIPS and KFLOPS will be Undefined.

One suggestion to handle issues like the above in HTCondor v8.8+ is to use the handy "?:" operator. A classad expression like the following:

ÂÂ X ?: Y

says "if attribute X is defined, then return the value of X, else if X is undefined return the value of Y".

It is a nice shorthand for the following:

ÂÂ ifThenElse(X is UNDEFINED,Y,X)

So if you wished you could provide a "default" guess of 23k (or whatever) for machines were benchmarks are disabled in the above clause like so:

(RemoteOwner =?= UNDEFINED) * ( round( (Mips ?: 23000) / 500.0) / 2.0 + ( TotalSlots-SlotID ) + 0.8/TotalSlots - $(JOBS_AFTER) )

Hope the above helps
Todd


Dear Todd,

thank you very much; definitively it helps; the problem is to handle the guess in this case; I will also to checkout why the benchmark is not handled on some machines, while all the machines have the same configuration and there is space for running benchmark as these machines are not all nodes occupied (maybe half the slots are occupied, so I should at least have the values of Mips for the corresponding slots ?).

BenchmarkTimer = (CurrentTime - LastBenchmark)
RunBenchmarks = (ÂÂ ( (LastBenchmark == 0 ) || ($(BenchmarkTimer) >= (4 * $(HOUR))) ) && (TotalLoadAvg <= 0.05 ) )

Best,

Xavier