As we are enabling fine grained resource management in 1.10, we can have various resource scheduling strategies. Such strategies generally should make the following three decisions.
- When to launch new / release existing TMs? (How many TMs)
- What and how many resources should TMs be started with?
- How to allocate between slot requests and TM resources?
We may want to make above decisions differently in different scenarios (active/reactive mode, perjob/session mode, etc.). Therefore, we propose to make the scheduling strategies pluggable.
We propose to make the following changes:
- Make SlotManager an interface, and implements it differently for different strategies strategies.
- Modify ResourceManager-SlotManager interfaces to cover all the three decisions mentioned above in SlotManager. In particular, SlotManager needs to allocate TM resources instead of slot resources from ResourceActions.