This package represents the DIScrete event baSed Energy Consumption simulaTor for Clouds and Federations (DISSECT-CF).
It is intended as a lightweight cloud simulator that enables easy customization and experimentation. It was designed for research purposes only so researchers could experiment with various internal cloud behavior changes without the need to actually have one or even multiple cloud infrastructures at hand.
The development of DISSECT-CF started in MTA SZTAKI in 2012, major contirbutions and design elements were incorporated at the University of Innsbruck.
When using the simulator for scientific research please cite the following paper: Gabor Kecskemeti: DISSECT-CF: A simulator to foster energy-aware scheduling in infrastructure clouds. In Simulation Modelling Practice and Theory. 2015. DOI: 10.1016/j.simpat.2015.05.009
Website: https://github.com/kecskemeti/dissect-cf
Documentation website: https://kecskemeti.github.io/dissect-cf
Archive for past (even pre-github) releases: http://users.iit.uni-miskolc.hu/~kecskemeti/DISSECT-CF
Licensing: GNU Lesser General Public License 3 and later
Optimisations on the code were done using the java profiler called jprofiler.
Prerequisites: Apache Maven 3, Java 17
After cloning, run the following in the main dir of the checkout:
mvn clean install javadoc:javadoc
This command will download all other prerequisites for compilation and testing. Then it will compile the complete sources of DISSECT-CF as well as its test classes. If the compilation is successful, then the tests are executed. In case no test fails, maven proceeds with the packaging and istallation.
The installed simulator will be located in the default maven repository's (e.g., ~/.m2/repository
) following directory:
at/ac/uibk/dps/cloud/simulator/dissect-cf/[VERSION]/dissect-cf-[VERSION].jar
Where [VERSION]
stands for the currently installed version of the simulator.
The documentation for the simulator's java API will be generated in the following subfolder of the main dir of the checkout:
target/site/apidocs
DISSECT-CF depends on the following libraries during its runtime:
Although these dependencies can be collected individually. If one installed the simulator according to description above, then except for Java 11, all dependencies are located in the local maven repository (e.g., ~/.m2/repository
).
The test cases of the simulator contain many useful examples so one can start working right away with the simulator. In the following list one can find the most essential bits to get to know the internals and the behavior of the simulator:
- Basic time and event management:
at.ac.uibk.dps.cloud.simulator.test.simple.TimedTest.singleEventFire
at.ac.uibk.dps.cloud.simulator.test.simple.TimedTest.repeatedEventFire
- Basic use of one time events:
at.ac.uibk.dps.cloud.simulator.test.simple.DeferredEventTest
- Simple physical machine management and use:
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.PMTest.constructionTest
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.PMTest.simpleTwoPhasedSmallVMRequest
- Simple IaaS construction and use:
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.IaaSServiceTest.repoRegistrationTest
- to add storageat.ac.uibk.dps.cloud.simulator.test.simple.cloud.IaaSServiceTest.capacityMaintenanceTest
- pm addition and overall capacity monitoringat.ac.uibk.dps.cloud.simulator.test.simple.cloud.IaaSServiceTest.vmRequestTest
- scheduled vm creation
- Starter kit for VM operations:
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.VMTest.subscriptionTest
- VM state monitoringat.ac.uibk.dps.cloud.simulator.test.simple.cloud.VMTest.taskKillingSwitchOff
- New compute task creation
- General use of the resource sharing foundation:
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.ResourceConsumptionTest.testConsumption
- Networking basics:
at.ac.uibk.dps.cloud.simulator.test.simple.cloud.NetworkNodeTest.intraNodeTransferTest
More elaborate examples can be found in the dissect-cf-examples project and in the dcf-exercises project.
Also, the wiki provides further insights to advanced topics (like creating custom schedulers) and offers a FAQ. Apart from contributing with code, feel free to contribute there with documentation as well.