wrench::ServerlessScheduler

class ServerlessScheduler

Abstract base class for scheduling in a serverless compute service.

Subclassed by wrench::FCFSServerlessScheduler, wrench::RandomServerlessScheduler, wrench::WorkloadBalancingServerlessScheduler

Public Functions

virtual std::shared_ptr<ServerlessSchedulingDecisions> schedule(const std::vector<std::shared_ptr<Invocation>> &schedulable_invocations, const std::shared_ptr<ServerlessStateOfTheSystem> &state) = 0

Given the list of schedulable invocations and the current system state, decide:

  • which images to copy to compute nodes

  • which images to load into memory at compute nodes

  • which invocations to start at compute nodes

Note that the disk and RAM at each compute host is managed using LRU, and so the scheduler doesn’t have full control (which would likely be intractable anyway). But that means that when asking from the system state questions like “how much RAM is available at that node?” is not clear-cut: the answer may be 0 but one can perhaps use the node because some memory content will be evicted due to the LRU behavior…

As a result of the above, the scheduling decisions returned by this method may not all be feasible, and the same invocations could be passed to the method over and over….

Parameters:
  • schedulable_invocations – A list of invocations whose images reside on the head node

  • state – The current system state

Returns:

A SchedulingDecisions object