On 11/25/06, Jason Stowe <jstowe@xxxxxxxxxxxxxxxxxx> wrote:
Mark, The startd's RANK statement is preemptive by nature, so this policy will always preempt jobs based upon that preference. The PREEMPTION_RANK and PREEMPTION_REQUIREMENTS expressions are only valid on the negotiator, and as you have them set they will remove user priority preemption.
AS Jason nicely explains - machine based RANK always triggers preemption (I think this is a real pain since I want exactly what you describe to happen) I went to far to investigate hacking around this myself (with the intention of providing any such hack back to the group) Sadly a cursory examination of how startd based RANK is handled inside the negotiation shows this is a real pain. Realistically I would say that if you want any kind of complex scheduling you should try an play within the 'preferred' mechanisms of user or group priority. If you need specific machines to go outside this then they need to 1) Advertise this fact somehow in a standard way so that those users not willing to take the chance they will be kicked don't let their jobs run there. 2) Consider whether you can balance your consumer and providers needs with something along the lines of "I (machine owner) can handle X wait for getting my hardware and the other users are happy that they will always get a minimum of X time to run" (where X should definitely be > tens of minutes and preferably hours or more. You can then use machine RANK but provide a retirement time of X so that everyone is sufficiently happy and your throughput is preserved with only minor latency. 2 is preferable (though people need to be aware of it as jobs must be written to indicate they desire retirement time) but obviously requires you (the provider) to take a latency hit on your own jobs. Since you indicated you were happy about this to start with then you should be fine. Previous messages to this list (search for JOB_RETIREMENT) indicate several ways to or handle this in reasonable fashion with various tweaks. All this requires a late 6.7 version or better farm. Matt