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

[HTCondor-users] Enforce waiting for preferred specific machines without evicting running jobs



Dear all,

we want to enforce HTCondor to prefer specific machines and if necessary wait for it to become free.

Therefore, we are setting the job's requirement to something like the following requirement:

ÂÂÂ Requirements = ( machine == "machine1" ) || ( machine == "machine2" )

And since one of the machines is more suitable than the other one, we use the following rank.

ÂÂÂ Rank = ( machine == "machine1" ) * 60 + ( machine == "machine2" ) * 40

When we submit just a few jobs using such configurations, we get the expected behavior. We enforce to use either machine1 or machine2. If both machines are available, the preferred machine1 is taken. If machine1 is already running a job, the job is matched to machine2.

But when more jobs are submitted than slots are available, the rank expression causes evictions of already running jobs, since a running job can have a lower ranking than a queued one.

Is is possible to use ranking only for a best matching without preemption?

We tried to achieve such a behavior using an additional rank expression defined by the worker node, which boosts running jobs.

 Rank = ( Target.RemoteHost =?= MY.NAME) * 1000

But it seems that the rank is not updated for already running jobs during the negotiation cycle. So this solution is currently not working.

So how can we prefer specific machines and enforce waiting without evicting already running jobs? Is there a better way than using ranking and requirements?

Thanks,

Christoph