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

[Condor-users] Understanding how the machine RANK expression works

I'm still slightly confused by how RANK set on a machine's ClassAd
works. If I have three users: A, B and C. And I want a machine to prefer
the jobs of User A over B or C, I set RANK like this:

RANK = (Target.Owner =?= "A") * 100000

What I don't see is how this could ever have an effect. In the
negotiator, if A has lower user priority than B or C, A negotiates
first. But if B or C have the lower user priority they negotiate first.
If this is the only free machine available, and B sorts first, does B
get the machine? Even though A would have preferred it? When B
negotiates it appears to be done without the knowledge of what A could
want to run.

Does RANK only work if there is more than one available machine for B's
job to run on? In that case the job would get assigned to the machine
where it RANK'ed higher, right? What I had two avaialble machine's to
run B's one job and they had:

Machine 1:
	RANK = 0

Machine 2:
	RANK = (Target.Owner =?= "A") * 100000

They rank the same. So which one does B's job choose? Ideally it should
take M1 because M2 ranks higher for another user, but as far as I can
tell the other user's desire to want M2 over M1 is not taken into
consideration when B negotiates.

Have I got this right?

- Ian