RANK = stringListMember(TARGET.User,MY.MachineOwners) {endcode} -Since RANK is an arbitrary ClassAd expression, you can customize the policy in a number of ways. For example, there could be a group with second priority on the machines. Or you could specify that some types of jobs (identified by some other ClassAd attribute in the job) have higher priorities than others. You just need to write the expression so that it produces a higher number for higher priority jobs. +Since RANK is an arbitrary {quote: ClassAd} expression, you can customize the policy in a number of ways. For example, there could be a group with second priority on the machines. Or you could specify that some types of jobs (identified by some other {quote: ClassAd} attribute in the job) have higher priorities than others. You just need to write the expression so that it produces a higher number for higher priority jobs. The down side of RANK is that it involves preemption. RANK only comes into play -when there is an existing job on a machine and the negotiator is considering whether a new job should preempt it. You can control how quickly the preemption happens in order for the new job to replace the lower priority job using MaxJobRetirementTime as described in {wiki: HowToDisablePreemption How to disable preemption}. By default, the preemption will happen immediately. This is most appropriate in Condor pools where groups own specific machines and want guaranteed access to them whenever they need them. +when there is an existing job on a machine and the negotiator is considering whether a new job should preempt it. You can control how quickly the preemption happens in order for the new job to replace the lower priority job using {quote: MaxJobRetirementTime} as described in {wiki: HowToDisablePreemption How to disable preemption}. By default, the preemption will happen immediately. This is most appropriate in Condor pools where groups own specific machines and want guaranteed access to them whenever they need them. Given a choice of two machines to run a job on, it is a good idea to steer jobs towards machines that rank them higher so they stand less of a chance of being preempted in the future. Here is an example configuration that preferentially runs jobs where they are most highly ranked and secondarily prefers to run jobs on idle machines rather than claimed machines: