1. Overview

CloudSim Plus is a modern, up-to-date, full-featured and fully documented Java 17 simulation framework. It's easy to use and extend, enabling modeling, simulation, and experimentation of Cloud computing infrastructures and application services.
It allows developers to focus on specific system design issues to be investigated, without concerning the low-level details related to Cloud-based infrastructures and services.
CloudSim Plus is a fork of CloudSim 3, re-engineered primarily to avoid code duplication, provide code reuse and ensure compliance with software engineering principles and recommendations for extensibility improvements and accuracy. It's currently the state-of-the-art in cloud computing simulation framework.
The efforts dedicated to this project have been recognized by the EU/Brasil Cloud FORUM.
A post about CloudSim Plus is available at
this page of the Forum, including a White Paper available in the Publications Section.
CloudSim Plus started through a partnership between the Instituto de Telecomunicações (IT, Portugal),
the Universidade da Beira Interior (UBI, Portugal)
and the Instituto Federal de Educação Ciência e Tecnologia do Tocantins (IFTO, Brazil).
It was partially supported by the Portuguese Fundação para a Ciência e a Tecnologia (FCT)
and by the Brazilian foundation Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES).
Note
If you are using CloudSim Plus in your research, please make sure you cite this paper: M. C. Silva Filho, R. L. Oliveira, C. C. Monteiro, P. R. M. Inácio, and M. M. Freire. CloudSim Plus: a Cloud Computing Simulation Framework Pursuing Software Engineering Principles for Improved Modularity, Extensibility and Correctness, in IFIP/IEEE International Symposium on Integrated Network Management, 2017, p. 7.
IMPORTANT
- Developing and maintaining this project takes a huge effort. This way, any kind of contribution is encouraged. Show your support by giving it a star :star: using the button at the top of the GitHub page. It takes no time, helps promoting the project and keeps it evolving. Thanks in advance :clap:.
- If you are not intending to make changes and contribute back to the project, you shouldn't fork it. Your fork become obsolete as the project is updated.
- If you're willing to use the framework to develop your own project on top of it, creating a fork is the worst way. You aren't supposed to change the framework code to implement your project, but to extend it by creating some subclasses. Unless you are planning to contribute your changes back, you'll end up with an incompatible and obsolete version of the framework. The project is constantly evolving and bugfixes are a priority. Your fork with personal changes will miss those updates and high performance improvements.
:arrow_up:
2. Main Exclusive Features 🧰
CloudSim Plus provides lots of exclusive features, from the most basic ones to build simple simulations,
to advanced features for simulating more realistic cloud scenarios:
- It is easier to use. A complete and easy-to-understand simulation scenario can be built in few lines of code.
- Multi-cloud simulations with inter-datacenter VM migrations (#361).
- Creation of joint power- and network-aware simulations (#45).
- Vertical (#7) and Horizontal VM scaling (#41).
- Highly accurate power usage computation (#153).
- Built-in computation of CPU utilization history and energy consumption for VMs (and Hosts) (#168).
- Virtual Memory and Reduced bandwidth allocation when RAM and BW are oversubscribed. (#170).
- Automatically power Hosts on and off according to demand (#128) and support defining a startup and shutdown delay/power consumption (#238).
- Parallel execution of simulations in multi-core computers, allowing multiple simulations to be run simultaneously in an isolated way (#38).
- Delay creation of submitted VMs and Cloudlets, enabling simulation of dynamic arrival of tasks (#11, #23).
- Allow dynamic creation of VMs and Cloudlets in runtime, enabling VMs to be created on-demand (#43).
- Listeners to enable simulation configuration, monitoring and data collection.
- Create simulations from Google Cluster Data
trace files. (#149).
- Strongly object-oriented, allowing chained calls such as
cloudlet.getVm().getHost().getDatacenter() without even worrying about NullPointerException (#10).
- Classes and interfaces for implementing heuristics such as Tabu Search, Simulated Annealing, Ant Colony Systems and so on (example here).
- Implementation of the Completely Fair Scheduler used in recent versions of the Linux Kernel (example here) (#58).
- Host Fault Injection and Recovery Mechanism to enable injection of random failures into Hosts CPU cores and replication of failed VMs (#81).
- Creation of Hosts at Simulation Runtime to enable physical expansion of Datacenter capacity (#124).
- Enables the simulation to keep running, waiting for dynamic and even random events such as the arrival of Cloudlets and VMs (#130).
- TableBuilder objects that are used in all examples and enable printing simulation results in different formats such as Markdown Table, CSV or HTML.
- Colors log messages and enables filtering the level of messages to print (#24).
If you want to just see messages from warning level, call Log.setLevel(ch.qos.logback.classic.Level.WARN);
- Enables running the simulation synchronously, making it easier to interact with it and collect data inside a loop, as the simulation goes on. This brings freedom to implement your simulations (#205).
- Allows placing a group of VMs into the same Host. (#90).
- Enables Broker to try selecting the closest Datacenter to place VMs, according to their time zone. (#212).
- Non-Live VM migration from/to public-cloud datacenters (#437).
- Support VM startup/shutdown delay and boot overhead (#435)
- It outperforms CloudSim 4, as can be seen here.
3. Project's Structure 🏗
CloudSim Plus has a simpler structure to make it ease to use and understand. It consists of 4 modules, 2 of which are new, as presented below.

- cloudsimplus (this module): the CloudSim Plus cloud simulation framework API, which is used by all other modules.
It is the main and only required module you need to write cloud simulations.
- cloudsimplus-examples: includes a series of different examples, since minimal simulation scenarios using basic
CloudSim Plus features, to complex scenarios using workloads from trace files or Vm migration examples. This is an excellent starting point for learning how to build cloud simulations using CloudSim Plus.
- cloudsimplus-testbeds: enables implementation of simulation testbeds in a repeatable manner,
allowing a researcher to execute several simulation runs for a given experiment and collect statistical data using a scientific approach.
- cloudsimplus-benchmarks: a new module used just internally to implement micro benchmarks to assess framework performance.
It also has a better package organization,
improving Separation of Concerns (SoC)
and making it easy to know where a desired class is and what is inside each package.
The figure below presents the new package organization.
The dark yellow