AURORA-1158 makes the preemptor asynchronous and helps scheduling loop performance, it loses some preemption efficiency due to adapting the original algorithm to work asynchronously:
- Preemptor repeatedly searches for preemption slots with the same ClusterState increasing the probability of victim collisions.
- Slave/offer/resource mappings are redundantly recomputed for every pending task slot search.
- Pending tasks are repeatedly sized up against every slave (as opposed to the other way around) making internal loop optimizations more expensive (i.e. pending task count is expected to be << slave count under normal conditions).