MCPcopy Index your code
hub / github.com/cloudsimplus/cloudsimplus

github.com/cloudsimplus/cloudsimplus @v8.5.7

Chat with this repo
repository ↗ · DeepWiki ↗ · release v8.5.7 ↗ · + Follow
4,669 symbols 13,322 edges 431 files 2,167 documented · 46% updated 2d agov8.5.7 · 2025-07-01★ 48221 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

1. Overview

Consulting Build Status Codacy Badge Codacy Code Coverage Maven Central Documentation Status GPL licensed GitHub Repo stars Twitter Follow

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:

  1. It is easier to use. A complete and easy-to-understand simulation scenario can be built in few lines of code.
  2. Multi-cloud simulations with inter-datacenter VM migrations (#361).
  3. Creation of joint power- and network-aware simulations (#45).
  4. Vertical (#7) and Horizontal VM scaling (#41).
  5. Highly accurate power usage computation (#153).
  6. Built-in computation of CPU utilization history and energy consumption for VMs (and Hosts) (#168).
  7. Virtual Memory and Reduced bandwidth allocation when RAM and BW are oversubscribed. (#170).
  8. Automatically power Hosts on and off according to demand (#128) and support defining a startup and shutdown delay/power consumption (#238).
  9. Parallel execution of simulations in multi-core computers, allowing multiple simulations to be run simultaneously in an isolated way (#38).
  10. Delay creation of submitted VMs and Cloudlets, enabling simulation of dynamic arrival of tasks (#11, #23).
  11. Allow dynamic creation of VMs and Cloudlets in runtime, enabling VMs to be created on-demand (#43).
  12. Listeners to enable simulation configuration, monitoring and data collection.
  13. Create simulations from Google Cluster Data trace files. (#149).
  14. Strongly object-oriented, allowing chained calls such as cloudlet.getVm().getHost().getDatacenter() without even worrying about NullPointerException (#10).
  15. Classes and interfaces for implementing heuristics such as Tabu Search, Simulated Annealing, Ant Colony Systems and so on (example here).
  16. Implementation of the Completely Fair Scheduler used in recent versions of the Linux Kernel (example here) (#58).
  17. Host Fault Injection and Recovery Mechanism to enable injection of random failures into Hosts CPU cores and replication of failed VMs (#81).
  18. Creation of Hosts at Simulation Runtime to enable physical expansion of Datacenter capacity (#124).
  19. Enables the simulation to keep running, waiting for dynamic and even random events such as the arrival of Cloudlets and VMs (#130).
  20. TableBuilder objects that are used in all examples and enable printing simulation results in different formats such as Markdown Table, CSV or HTML.
  21. 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);
  22. 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).
  23. Allows placing a group of VMs into the same Host. (#90).
  24. Enables Broker to try selecting the closest Datacenter to place VMs, according to their time zone. (#212).
  25. Non-Live VM migration from/to public-cloud datacenters (#437).
  26. Support VM startup/shutdown delay and boot overhead (#435)
  27. 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.

CloudSim Plus Modules

  • 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

Extension points exported contracts — how you extend this code

VmSelectionPolicy (Interface)
An interface to be used to implement Vm selection policies for a list of migratable VMs (VMs that can be migrate [8 implementers]
src/main/java/org/cloudsimplus/selectionpolicies/VmSelectionPolicy.java
ResourceCapacity (Interface)
An interface to allow getting the capacity of a given resource. @author Manoel Campos da Silva Filho @since CloudSim Pl [8 …
src/main/java/org/cloudsimplus/resources/ResourceCapacity.java
ChangeableId (Interface)
An interface for objects that have to be identified by an id and that such id can be changed. @author Manoel Campos da [6 …
src/main/java/org/cloudsimplus/core/ChangeableId.java
Identifiable (Interface)
An interface for objects that have to be identified by an id. @author Manoel Campos da Silva Filho @since CloudSim Plus [10 …
src/main/java/org/cloudsimplus/core/Identifiable.java
ContinuousDistribution (Interface)
Interface to be implemented by a Pseudo-Random Number Generator (PRNG) that follows a defined statistical continuous dis [15 …
src/main/java/org/cloudsimplus/distributions/ContinuousDistribution.java

Core symbols most depended-on inside this repo

add
called by 264
src/main/java/org/cloudsimplus/vms/ResourceStats.java
getSimulation
called by 167
src/main/java/org/cloudsimplus/core/Machine.java
size
called by 137
src/main/java/org/cloudsimplus/core/Sizeable.java
stream
called by 132
src/main/java/org/cloudsimplus/core/events/EventQueue.java
remove
called by 116
src/main/java/org/cloudsimplus/schedulers/MipsShare.java
get
called by 115
src/main/java/org/cloudsimplus/builders/BrokerBuilderInterface.java
isEmpty
called by 97
src/main/java/org/cloudsimplus/core/events/EventQueue.java
clock
called by 83
src/main/java/org/cloudsimplus/core/Simulation.java

Shape

Method 3,938
Function 350
Class 291
Interface 77
Enum 13

Languages

Java93%
TypeScript7%

Modules by API surface

docs/presentation/js/reveal.js134 symbols
docs/presentation/js/reveal.min.js130 symbols
src/main/java/org/cloudsimplus/vms/VmNull.java110 symbols
src/main/java/org/cloudsimplus/hosts/HostNull.java102 symbols
src/main/java/org/cloudsimplus/hosts/HostAbstract.java98 symbols
src/main/java/org/cloudsimplus/vms/VmAbstract.java89 symbols
src/main/java/org/cloudsimplus/cloudlets/CloudletNull.java88 symbols
src/main/java/org/cloudsimplus/schedulers/cloudlet/CloudletSchedulerAbstract.java81 symbols
src/main/java/org/cloudsimplus/hosts/Host.java78 symbols
src/main/java/org/cloudsimplus/brokers/DatacenterBrokerAbstract.java77 symbols
src/main/java/org/cloudsimplus/vms/Vm.java75 symbols
src/main/java/org/cloudsimplus/datacenters/DatacenterSimple.java70 symbols

For agents

$ claude mcp add cloudsimplus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact