Package: carbon-aware-scheduler
CASA Carbon-aware scheduler for Unix jobsReport Bug·Request Feature·ContributeAbout Carbon Aware SchedulerCarbon Aware Scheduler (CAS) is a command line tool that takes CO2 into account when scheduling jobs. Given a job, this tool will find the best time to run this job based on a model ofcarbon intensityof the power grid. The amount of CO2 emitted per kWh (the aforementioned carbon intensity) often varies greatly during the day, so smart scheduling can reduce CO2 emissions. The model is based on heuristics and it's currently only available for the Netherlands. The tool is a wrapper around thecronandattools for scheduling Unix commands.This tool can help you:Schedule non-urgent jobs at a later time during the daySave CO2 and visualize total CO2 savedEasily manage yourcronandatjobs(back to top)Built WithThis project was built inPython. Its main dependencies are:python-crontabcroniternumpypandaspyinquirerThe project also importsrequests, but we do not actually use it in live code in the project. This is due to us not getting access to theElectricityMap APIin time for this project.(back to top)Getting StartedHere are the instructions on getting started with our tool. Whether you want to use this tool to become more environmentally-friendly or simply contribute to a tool that changes the world, you can find the instructions here.InstallationIf you simply want to use the app and benefit from the carbon aware-scheduling, simply run:pipinstallcarbon-aware-schedulerImportantly, this project doesnotsupport Python 3.10 at this time due toa bug.ContributingIn order to contribute to this project,Fork the repo using the web interface or using theghCLI:ghrepoforkhttps://github.com/abel-vs/carbon-scheduler--cloneInstall the requirementspipinstall-rrequirements.txtMake some commits!Open aPull Request(back to top)UsageSome useful commands:Scheduling a one-off job$ cas myjob.py --repeat @dailyScheduling a repeating job$ cas myjob.py --at 202204052230Listing all the scheduled jobs, repeating and one-off jobs$ cas --listCancelling a repeating job given the index$ cas --cancel-repeating 42Cancelling a one-off job given the index$ cas --cancel-one 42(back to top)RoadmapSchedule jobsGiven estimate of duration and deadlineTaking into account carbon intensity of the gridList jobsCombined view of all jobs: one-off and repeatingRemove jobs given id of taskImplement offline model based on energymap's historical data on energy mixLocation set to NL onlyUse time of the dayUse day of the weekUse week/month/season of the yearOutput saved CO2For current sessionFor all sessionsRun parallel jobs"Full of batteries basement" flag -> don't use energy data for schedulingImplement online/live modelBased on forecasting marginal carbon intensityGUI for non-technical usersWindows platform supportExtensive testingConsider machine workloadSee theopen issuesfor a full list of proposed features (and known issues).(back to top)ContactWander Siemers -wandersiemers@me.comAbel Van Steenweghen -Abel.van.steenweghen@gmail.comFlorentin-Ionut Arsene -arsene.florentin.ionut@gmail.com(back to top)AcknowledgmentsLuís Cruz - Assistant Professor at Delft University of Technology(back to top)LicenseDistributed under the MIT License. SeeLICENSE.txtfor more information.(back to top)