Preemption is enabled by default in Nomad 0.9. Operators can use the [scheduler config][/api/operator.html#update-scheduler-configuration] API endpoint to disable preemption.
If a job `webapp` with priority `75` needs placement on the above node, only allocations from `batch-analytics` and `email-marketing` are considered
eligible to be preempted because they are of a lower priority. Allocations from the `cache` job will never be preempted because its priority value `70`
is lesser than the required delta of `10`.
Allocations are selected starting from the lowest priority, and scored according
to how closely they fit the job's required capacity. For example, if the `75` priority job needs 1GB disk and 2GB memory, Nomad will preempt
allocations `a1`, `a2` and `a4` to satisfy those requirements.
# Preemption Visibility
Operators can use the [allocation API](/api/allocations.html#read-allocation) to get visibility into whether an allocation has been preempted.
Preempted allocations will have their DesiredStatus set to “evict”. The `Allocation` object in the API also has two additional fields related to
preemption.
- PreemptedAllocs - This field is set on an allocation that caused preemption. It contains the allocation ids of allocations
that were preempted to place this allocation. In the above example, allocations created for the job `webapp` will have the values
`a1`, `a2` and `a4` set.
- PreemptedByAllocID - This field is set on allocations that were preempted by the scheduler. It contains the allocation ID of the allocation
that preempted it. In the above example, allocations `a1`, `a2` and `a4` will have this field set to the ID of the allocation from the job `webapp`.
# Integration with Nomad plan
`nomad plan` allows operators to dry run the scheduler. If the scheduler determines that
preemption is necessary to place the job, it shows additional information in the CLI output for