10 #ifndef WRENCH_CONSERVATIVEBACKFILLINGBATCHSCHEDULER_H
11 #define WRENCH_CONSERVATIVEBACKFILLINGBATCHSCHEDULER_H
13 #include "wrench/services/compute/batch/BatchComputeService.h"
14 #include "wrench/services/compute/batch/batch_schedulers/homegrown/HomegrownBatchScheduler.h"
15 #include <wrench/services/compute/batch/batch_schedulers/homegrown/conservative_bf/NodeAvailabilityTimeLine.h>
26 class ConservativeBackfillingBatchScheduler :
public HomegrownBatchScheduler {
30 explicit ConservativeBackfillingBatchScheduler(BatchComputeService *cs);
32 void processQueuedJobs()
override;
34 void processJobSubmission(std::shared_ptr<BatchJob> batch_job)
override;
35 void processJobFailure(std::shared_ptr<BatchJob> batch_job)
override;
36 void processJobCompletion(std::shared_ptr<BatchJob> batch_job)
override;
37 void processJobTermination(std::shared_ptr<BatchJob> batch_job)
override;
39 void compactSchedule();
41 std::map <std::string, std::tuple<unsigned long, double>> scheduleOnHosts(
unsigned long,
unsigned long,
double)
override;
43 std::map<std::string, double>
44 getStartTimeEstimates(std::set <std::tuple<std::string, unsigned long, unsigned long, double>> set_of_jobs)
override;
48 std::unique_ptr<NodeAvailabilityTimeLine> schedule;
59 #endif //WRENCH_CONSERVATIVEBACKFILLINGBATCHSCHEDULER_H