Since we have labels on nodes, so we need to track resource usage by labels, includes
- AM resource (to enforce max-am-resource-by-label after
- Used resource (includes AM resource usage)
- Reserved resource
- Pending resource
Benefits to have such a common class are:
- Reuse lots of code in different places (Queue/App/User), better maintainability and readability.
- Can make fine-grained locking (e.g. accessing used resource in a queue doesn't need lock a queue)