Currently, we have Resource Aware Scheduler (
STORM-894) in nimbus, which can allocate different types of resource (CPU, onheap-memory, offheap-memory) to the workers assigned to each topology's tasks.
However, such resources are not visible to the supervisor, therefore, supervisor will still launch workers with fixed amount of heap size memory (e.g., -Xmx=768M).
Therefore, we need a whole set of schemes that allow nimbus to put different types of resources to each worker slot, then push the resources with assignment to ZooKeepers; also, at the supervisor side, such resources in each worker slot should be used by supervisor for launching a worker's JVM (initially, the JVM heap size).
This scheme can be used not only by RAS scheduler (STORM-893), but also by any customized scheduler for conducting mem/cpu/network resource specified-scheduling.
In the future, the resources of memory, CPU and network can also be used by supervisor to launch a worker in a resource-segregated container, such as a CGroup or Docker, with isolated Memory/CPU/Network resources.