deis

How does deis scheduler work?


I'm looking at the documentation of deis and I'm not sure how the scheduler works.

Essentially I want to deploy small apps. My idea is to have different size of apps based on memory (64M, 128M, 256M and 512M).

Then I would have a cluster of small machines (1 CPU, ~3GB) and I want to deploy/undeploy any number of apps, where most of them will only have one instance.

So in this case I need a scheduler that looks at the free memory on each node and deploy the app to the node with more resources available (in this case memory based).

For example, if I have 2GB available for apps I could have the following balancing:

Node1: App1 (256M), App2 (256M), App3 (512M) => Total 1.5 GB
Node2: App4 (512M), App5 (128M), App6 (128M), App7 (256M), App8 (512M), App9 (256M) => Total  1.75 GB

Then if I need to deploy an app that will consume 512M, the scheduler should deploy the app in Node1.

So I wanted to understand if deis could be userful for this scenario.


Solution

  • Under the hood, Deis uses fleet as a scheduler. Currently fleet awards a job to whichever machine in the cluster responds first, and has no understanding of machine load. Smarter scheduling is a priority of the fleet project, and as it improves, Deis improves.