File BatchScheduler.h

Defines

DO_NOT_MIGRATE
DO_NOT_MIGRATE_DECISION
NOT_ENOUGH_SLOTS
NOT_ENOUGH_SLOTS_DECISION
MUST_FREEZE
MUST_FREEZE_DECISION
MUST_EVICT_IP
namespace faabric
namespace batch_scheduler

Typedefs

typedef std::pair<std::shared_ptr<BatchExecuteRequest>, std::shared_ptr<SchedulingDecision>> InFlightPair
typedef std::map<int32_t, InFlightPair> InFlightReqs
typedef std::shared_ptr<HostState> Host
typedef std::map<std::string, Host> HostMap

Enums

enum DecisionType

Values:

enumerator NO_DECISION_TYPE
enumerator NEW
enumerator DIST_CHANGE
enumerator SCALE_CHANGE
class BatchScheduler

Subclassed by faabric::batch_scheduler::BinPackScheduler, faabric::batch_scheduler::CompactScheduler, faabric::batch_scheduler::SpotScheduler

Public Functions

virtual std::shared_ptr<SchedulingDecision> makeSchedulingDecision(HostMap &hostMap, const InFlightReqs &inFlightReqs, std::shared_ptr<faabric::BatchExecuteRequest> req) = 0

Public Static Functions

static DecisionType getDecisionType(const InFlightReqs &inFlightReqs, std::shared_ptr<faabric::BatchExecuteRequest> req)

Protected Functions

virtual bool isFirstDecisionBetter(std::shared_ptr<SchedulingDecision> decisionA, std::shared_ptr<SchedulingDecision> decisionB) = 0
virtual std::vector<Host> getSortedHosts(HostMap &hostMap, const InFlightReqs &inFlightReqs, std::shared_ptr<faabric::BatchExecuteRequest> req, const DecisionType &decisionType) = 0

Protected Static Functions

static inline int numSlots(const Host &host)
static inline int numUsedSlots(const Host &host)
static inline int numSlotsAvailable(const Host &host)
static inline void claimSlots(Host &host, int numSlotsToClaim)
static inline void freeSlots(Host &host, int numSlotsToFree)
static inline std::string getIp(const Host &host)
struct HostState

Public Functions

inline HostState(const std::string &ipIn, int slotsIn, int usedSlotsIn)

Public Members

std::string ip
int slots
int usedSlots