Package: leafsim
LEAFLEAF is a simulator for analytical modeling of energy consumption in cloud, fog, or edge computing environments.
It enables the modeling of simple tasks running on a single node as well as complex application graphs in distributed, heterogeneous, and resource-constrained infrastructures.
LEAF is based onSimPyfor discrete-event simulation andNetworkXfor modeling infrastructure or application graphs.Please have a look at outexamplesand visit the officialdocumentationfor more information on this project.This Python implementation was ported from theoriginal Java protoype.
All future development will take place in this repository.⚙️ InstallationYou can install thelatest releaseof LEAF viapip:$ pip install leafsimAlternatively, you can also clone the repository (including all examples) and set up your environment via:$ pip install -e .🚀 Getting startedLEAF usesSimPyfor process-based discrete-event simulation and adheres to their API.
To understand how to develop scenarios in LEAF, it makes sense to familiarize yourself with SimPy first.importsimpyfromleaf.applicationimportTaskfromleaf.infrastructureimportNodefromleaf.powerimportPowerModelNode,PowerMeter# Processes modify the model during the simulationdefplace_task_after_2_seconds(env,node,task):"""Waits for 2 seconds and places a task on a node."""yieldenv.timeout(2)task.allocate(node)node=Node("node1",cu=100,power_model=PowerModelNode(max_power=30,static_power=10))task=Task(cu=100)power_meter=PowerMeter(node,callback=lambdam:print(f"{env.now}: Node consumes{int(m)}W"))env=simpy.Environment()# register our task placement processenv.process(place_task_after_2_seconds(env,node,task))# register power metering process (provided by LEAF)env.process(power_meter.run(env))env.run(until=5)Which will result in the output:0: Node consumes 10W
1: Node consumes 10W
2: Node consumes 30W
3: Node consumes 30W
4: Node consumes 30WFor other examples, please refer to theexamples folder.🍃 What can I do with LEAF?LEAF enables high-level simulation of computing scenarios, where experiments are easy to create and easy to analyze.
Besides allowing research on scheduling and placement algorithms on resource-constrained environments, LEAF puts a special focus on:Dynamic networks: Simulate mobile nodes which can join or leave the network during the simulation.Power consumption modeling: Model the power usage of individual compute nodes, network traffic, and applications.Energy-aware algorithms: Implement dynamically adapting task placement strategies, routing policies, and other energy-saving mechanisms.Scalability: Model the execution of thousands of compute nodes and applications in magnitudes faster than real time.Please visit the officialdocumentationfor more information and examples on this project.📖 PublicationsIf you use LEAF in your research, please cite our paper:Philipp Wiesner and Lauritz Thamsen. "LEAF: Simulating Large Energy-Aware Fog Computing Environments" In the Proceedings of the 20215th IEEE International Conference on Fog and Edge Computing (ICFEC). IEEE. 2021[arXiv preprint][video]Bibtex:@inproceedings{WiesnerThamsen_LEAF_2021,
  author={Wiesner, Philipp and Thamsen, Lauritz},
  booktitle={2021 IEEE 5th International Conference on Fog and Edge Computing (ICFEC)}, 
  title={{LEAF}: Simulating Large Energy-Aware Fog Computing Environments}, 
  year={2021},
  pages={29-36},
  doi={10.1109/ICFEC51620.2021.00012}
}💚 Projects using LEAFPhilipp Wiesner, Ilja Behnke, Dominik Scheinert,  Kordian Gontarska, and Lauritz Thamsen. "Let's Wait Awhile: How Temporal Workload Shifting Can Reduce Carbon Emissions in the Cloud" In the Proceedings of the22nd International Middleware Conference. ACM. 2021 [code]Liam Brugger. "An Evaluation of Carbon-Aware Load Shifting Techniques"Bachelor Thesis. 2021 [code]