diff --git a/src/algo/carbone.hpp b/src/algo/carbone.hpp new file mode 100644 index 0000000000000000000000000000000000000000..006a71d36822a027e6c22191b069eb5d24bc9d5f --- /dev/null +++ b/src/algo/carbone.hpp @@ -0,0 +1,32 @@ +#ifndef CARBONE_HPP +#define CARBONE_HPP +#pragma once + +#include <list> +#include "../isalgorithm.hpp" +#include "../json_workload.hpp" +#include "../locality.hpp" +#include "../schedule.hpp" +#include "isalgorithm.hpp" + +class CarboneAlgorithm : public ISchedulingAlgorithm { +public: + CarboneAlgorithm(Workload * workload, SchedulingDecision * decision, Queue * queue, ResourceSelector * selector, double rjms_delay, rapidjson::Document * variant_options); + virtual ~CarboneAlgorithm(); + + virtual void on_simulation_start(double date, const rapidjson::Value & batsim_config); + virtual void on_simulation_end(double date); + void make_decisions(double date, SortableJobOrder::UpdateInformation *update_info, SortableJobOrder::CompareInformation *compare_info) override; + void updateCarbonFootprint(int dcA, int dcB, int dcC); + +private: + int select_datacenter_with_lowest_carbon_footprint(); + int carbonFootprintDcA; + int carbonFootprintDcB; + int carbonFootprintDcC; +protected: + Schedule _schedule; + bool _debug = false; +}; + +#endif // CARBONE_HPP