Skip to main content
Log in

PerficientCloudSim: a tool to simulate large-scale computation in heterogeneous clouds

  • Published:
The Journal of Supercomputing Aims and scope Submit manuscript

Abstract

The major reason for using a simulator, instead of a real test-bed, is to enable repeatable evaluation of large-scale cloud systems. CloudSim, the most widely used simulator, enables users to implement resource provisioning, and management policies. However, CloudSim does not provide support for: (i) interactive online services; (ii) platform heterogeneities; (iii) virtual machine migration modelling; and (iv) other essential models to abstract a real datacenter. This paper describes modifications needed in the classical CloudSim to support realistic experimentations that closely match experimental outcomes in a real system. We extend, and partially re-factor CloudSim to “PerficientCloudSim” in order to provide support for large-scale computation over heterogeneous resources. In the classical CloudSim, we add several classes for workload performance variations due to: (a) CPU heterogeneities; (b) resource contention; and (c) service migration. Through plausible assumptions, our empirical evaluation, using real workload traces from Google and Microsoft Azure clusters, demonstrates that “PerficientCloudSim” can reasonably simulate large-scale heterogeneous datacenters in respect of resource allocation and migration policies, resource contention, and platform heterogeneities. We discuss statistical methods to measure the accuracy of the simulated outcomes.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11

Similar content being viewed by others

Notes

  1. http://www.dcs.ed.ac.uk/home/simjava/tutorial/.

  2. https://www.spec.org/power_ssj2008/.

  3. https://ciao-project.github.io/.

  4. http://www.cloudbus.org/cloudsim/.

  5. http://www.cloudbus.org/cloudsim/.

  6. http://www.dummies.com/programming/cloud-computing/hybrid-cloud/types-of-workloads-in-a-hybrid-cloud-environment/.

  7. Personal correspondence with Gabor Kecskemeti, a Research Fellow in Laboratory of Parallel and Distributed Systems, MTA SZTAKI—https://www.lpds.sztaki.hu.

  8. https://github.com/google/cluster-scheduler-simulator.

  9. https://cloud.google.com/custom-machine-types/.

  10. https://github.com/google/cluster-data.

  11. http://www.uni.net.th/wunca_regis/wunca32_doc/21/014_WUNCA32_Presentation_Thammasat.pdf.

  12. https://github.com/poa28451/VmigSim.

  13. https://csap.snu.ac.kr/software/lmdataset.

  14. https://aws.amazon.com/ec2/instance-types/.

  15. https://www.spec.org/power/.

  16. https://www.google.co.uk/about/datacenters/efficiency/.

  17. https://www.eia.gov/electricity/monthly/.

  18. https://aws.amazon.com/ec2/pricing/.

  19. The host that cannot be allocated due to a single resource unavailability—enough CPU is available, but there is insufficient memory [58].

  20. https://blog.se.com/datacenter/2013/02/01/4-ways-to-reduce-energy-consumption-in-any-data-center/.

  21. https://institutes.engineering.leeds.ac.uk/computing/research/distsys/facilities.shtml.

  22. https://www.spec.org/power_ssj2008/results/res2010q2/power_ssj2008-20100420-00252.html.

  23. http://www.dcs.ed.ac.uk/home/simjava/tutorial/.

  24. https://www.spec.org/power_ssj2008/.

  25. http://ant.apache.org/.

  26. https://maven.apache.org/.

  27. https://www.ee.ucl.ac.uk/~mflanaga/java/.

  28. http://commons.apache.org/proper/commons-math/.

  29. http://www.cloudbus.org/cloudsim/.

  30. http://www.cloudbus.org/cloudsim/.

References

  1. Calheiros RN, Ranjan R, Beloglazov A, De Rose CAF, Buyya R (2011) Cloudsim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms. Softw Pract Exp 41(1):23–50

    Google Scholar 

  2. Zakarya M, Gillam L (2019) Modelling resource heterogeneities in cloud simulations and quantifying their accuracy. Simul Model Pract Theory 94:43–65

    Google Scholar 

  3. Zakarya M, Gillam L (2017) Energy and performance aware resource management in heterogeneous cloud datacenters. PhD thesis, University of Surrey

  4. Kecskemeti G (2015) Dissect-cf: a simulator to foster energy-aware scheduling in infrastructure clouds. Simul Model Pract Theory 58:188–218

    Google Scholar 

  5. Kliazovich D, Bouvry P, Khan SU (2012) Greencloud: a packet-level simulator of energy-aware cloud computing data centers. J Supercomput 62(3):1263–1283

    Google Scholar 

  6. Tighe M, Keller G, Bauer M, Lutfiyya H (2012) DCSim: a data centre simulation tool for evaluating dynamic virtualized resource management. In: 2012 8th International Conference on Network and Service Management (CNSM) and 2012 Workshop on Systems Virtualization Management (SVM), pp 385–392. IEEE

  7. Buyya R, Murshed M (2002) Gridsim: a toolkit for the modeling and simulation of distributed resource management and scheduling for grid computing. Concurr Comput Pract Exp 14(13–15):1175–1220

    MATH  Google Scholar 

  8. Beloglazov A, Abawajy J, Buyya R (2012) Energy-aware resource allocation heuristics for efficient management of data centers for cloud computing. Future Gener Comput Syst 28(5):755–768

    Google Scholar 

  9. O’Loughlin J (2018) A workload-specific performance brokerage for infrastructure clouds. PhD thesis, University of Surrey

  10. O’Loughlin J, Gillam L (2016) Sibling virtual machine co-location confirmation and avoidance tactics for public infrastructure clouds. J Supercomput 72(3):961–984

    Google Scholar 

  11. Fei X, Liu F, Jin H (2016) Heterogeneity and interference-aware virtual machine provisioning for predictable performance in the cloud. IEEE Trans Comput 65(8):2470–2483

    MathSciNet  MATH  Google Scholar 

  12. Zakarya M, Gillam L (2019) Managing energy, performance and cost in large scale heterogeneous datacenters using migrations. Future Gener Comput Syst 93:529–547

    Google Scholar 

  13. Reiss C, Wilkes J, Hellerstein JL (2011) Google cluster-usage traces: format + schema. Google Inc., Mountain View, CA, USA, Technical Report

  14. Zakarya M, Gillam L (2016) An energy aware cost recovery approach for virtual machine migration. In: International Conference on the Economics of Grids, Clouds, Systems, and Services, pp 175–190. Springer

  15. Cortez E, Bonde A, Muzio A, Russinovich M, Fontoura M, Bianchini R (2017) Resource central: understanding and predicting workloads for improved resource management in large cloud platforms. In: Proceedings of the 26th Symposium on Operating Systems Principles, pp 153–167. ACM

  16. Shai O, Shmueli E, Feitelson DG (2013) Heuristics for resource matching in intel’s compute farm. In: Workshop on Job Scheduling Strategies for Parallel Processing, pp 116–135. Springer

  17. Lebre A, Pastor J, Simonet A, Südholt M (2019) Putting the next 500 vm placement algorithms to the acid test: the infrastructure provider viewpoint. IEEE Trans Parallel Distrib Syst 30(1):204–217

    Google Scholar 

  18. Sharkh MA, Kanso A, Shami A, Öhlén P (2016) Building a cloud on earth: a study of cloud computing data center simulators. Comput Netw 108:78–96

    Google Scholar 

  19. Perez DA, Velasquez K, Curado M, Monteiro E (2019) A comparative analysis of simulators for the cloud to fog continuum. Simul Model Pract Theory 101:102029

    Google Scholar 

  20. Fakhfakh F, Kacem HH, Kacem AH (2017) Simulation tools for cloud computing: a survey and comparative study. In: 2017 IEEE/ACIS 16th International Conference on Computer and Information Science (ICIS), pp 221–226. IEEE

  21. Khan AA, Zakarya M, Khan R (2019) H2—a hybrid heterogeneity aware resource orchestrator for cloud platforms. IEEE Syst J 13(4):3873–3876

    Google Scholar 

  22. Piraghaj SF, Dastjerdi AV, Calheiros RN, Buyya R (2017) Containercloudsim: an environment for modeling and simulation of containers in cloud data centers. Softw Pract Exp 47(4):505–521

    Google Scholar 

  23. Beloglazov A, Buyya R (2015) Openstack neat: a framework for dynamic and energy-efficient consolidation of virtual machines in openstack clouds. Concurr Comput Pract Exp 27(5):1310–1333

    Google Scholar 

  24. Núñez A, Vázquez-Poletti JL, Caminero AC, Castañé GG, Carretero J, Llorente IM (2012) icancloud: a flexible and scalable cloud infrastructure simulator. J Grid Comput 10(1):185–209

    Google Scholar 

  25. Sonmez C, Ozgovde A, Ersoy C (2018) Edgecloudsim: an environment for performance evaluation of edge computing systems. Trans Emerg Telecommun Technol 29(11):e3493

    Google Scholar 

  26. Gupta H, Dastjerdi AV, Ghosh SK, Buyya R (2017) ifogsim: a toolkit for modeling and simulation of resource management techniques in the internet of things, edge and fog computing environments. Softw Pract Exp 47(9):1275–1296

    Google Scholar 

  27. Puliafito C, Gonçalves DM, Lopes MM, Martins LL, Madeira E, Mingozzi E, Rana O, Bittencourt LF (2020) Mobfogsim: simulation of mobility and migration for fog computing. Simul Model Pract Theory 101:102062

    Google Scholar 

  28. Ostermann S, Plankensteiner K, Prodan R, Fahringer T (2010) Groudsim: an event-based simulation framework for computational grids and clouds. In: European Conference on Parallel Processing, pp 305–313. Springer

  29. Lim SH, Sharma B, Nam G, Kim EK, Das CR (2009) Mdcsim: a multi-tier data center simulation, platform. In: IEEE International Conference on Cluster Computing and Workshops, 2009. CLUSTER’09, pp 1–9. IEEE

  30. De Maio V, Kecskemeti G, Prodan R (2015) A workload-aware energy model for virtual machine migration. In: 2015 IEEE International Conference on Cluster Computing, pp 274–283. IEEE

  31. Lebre A, Pastor J, Südholt M (2015) Vmplaces: a generic tool to investigate and compare vm placement algorithms. In: European Conference on Parallel Processing, pp 317–329. Springer

  32. Cartlidge J, Cliff D (2013) Comparison of cloud middleware protocols and subscription network topologies using crest, the cloud research simulation toolkit-the three truths of cloud computing are: hardware fails, software has bugs, and people make mistakes. In: CLOSER, pp 58–68

  33. Desprez F, Rouzaud-Cornabas J (2013) Simgrid cloud broker: simulating the amazon aws cloud. Report no. RR-8380. https://hal.inria.fr/hal-00909120/

  34. Fernández-Cerero D, Fernández-Montes A, Jakobik A, Kołodziej J, Toro M (2018) Score: simulator for cloud optimization of resources and energy consumption. Simul Model Pract Theory 82:160–173

    Google Scholar 

  35. Fernández-Cerero D, Jakóbik A, Fernández-Montes A, Kołodziej J (2019) Game-score: game-based energy-aware cloud scheduler and simulator for computational clouds. Simul Model Pract Theory 93:3–20

    Google Scholar 

  36. Siavashi A, Momtazpour M (2019) Gpucloudsim: an extension of cloudsim for modeling and simulation of gpus in cloud data centers. J Supercomput 75(5):2535–2561

    Google Scholar 

  37. Rahman UU, Bilal K, Erbad A, Khalid O, Khan SU (2019) Nutshell—simulation toolkit for modeling data center networks and cloud computing. IEEE Access 7:19922–19942

    Google Scholar 

  38. Jscsc K (2020) Ecsnet++: a simulator for distributed stream processing on edge and cloud environments. Future Gener Comput Syst 111:401–418

    Google Scholar 

  39. Tinini RI, dos Santos MRP, Figueiredo GB, Batista DM (2020) 5gpy: a simpy-based simulator for performance evaluations in 5g hybrid cloud-fog ran architectures. Simul Model Pract Theory 101:102030

    Google Scholar 

  40. Das K (2011) Cloud computing simulation. PhD thesis, Indian Institute of Technology, Bombay Mumbai

  41. Di S, Cappello F (2015) Gloudsim: Google trace based cloud simulator with virtual machines. Softw Pract Exp 45(11):1571–1590

    Google Scholar 

  42. Park KS, Pai VS (2006) Comon: a mostly-scalable monitoring system for planetlab. ACM SIGOPS Oper Syst Rev 40(1):65–74

    Google Scholar 

  43. Zakarya M (2018) An extended energy-aware cost recovery approach for virtual machine migration. IEEE Syst J 13(2):1466–1477

    Google Scholar 

  44. Huang Q, Gao F, Wang R, Qi Z (2011) Power consumption of virtual machine live migration in clouds. In: Proceedings—2011 3rd International Conference on Communications and Mobile Computing, CMC 2011, pp 122–125

  45. Alzamil I, Djemame K, Armstrong D, Kavanagh R (2015) Energy-aware profiling for cloud computing environments. Electron Notes Theor Comput Sci 318:91–108

    Google Scholar 

  46. Alzamil I, Djemame K (2016) Energy prediction for cloud workload patterns. In: International Conference on the Economics of Grids, Clouds, Systems, and Services, pp 160–174. Springer

  47. Khan AA, Zakarya M, Khan R, Rahman IU, Khan M et al (2019) An energy, performance efficient resource consolidation scheme for heterogeneous cloud datacenters. J Netw Comput Appl 150:102497

    Google Scholar 

  48. O’Loughlin J, Gillam L (2014) Performance evaluation for cost-efficient public infrastructure cloud use. In: International Conference on Grid Economics and Business Models, pp 133–145. Springer

  49. Jo C, Cho Y, Egger B (2017) A machine learning approach to live migration modeling. In: Proceedings of the 2017 Symposium on Cloud Computing, pp 351–364. ACM

  50. Wu Y, Zhao M (2011) Performance modeling of virtual machine live migration. In: 2011 IEEE 4th International Conference on Cloud Computing, pp 492–499. IEEE

  51. Liu H, Jin H, Cheng-Zhong X, Liao X (2013) Performance and energy modeling for live migration of virtual machines. Clust Comput 16(2):249–264

    Google Scholar 

  52. Callau-Zori M, Samoila L, Orgerie A-C, Pierre G (2018) An experiment-driven energy consumption model for virtual machine management systems. Sustain Comput Inform Syst 18:163–174

    Google Scholar 

  53. Ferreto TC, Netto MAS, Calheiros RN, De Rose CAF (2011) Server consolidation with migration control for virtualized data centers. Future Gener Comput Syst 27(8):1027–1034

    Google Scholar 

  54. Zakarya M (2018) Energy, performance and cost efficient datacenters: a survey. Renew Sustain Energy Rev 94:363–385

    Google Scholar 

  55. Beloglazov A, Buyya R (2012) Optimal online deterministic algorithms and adaptive heuristics for energy and performance efficient dynamic consolidation of virtual machines in cloud data centers. Concurr Comput Pract Exp 24(13):1397–1420

    Google Scholar 

  56. Khan AA, Zakarya M, Khan R (2019) Energy-aware dynamic resource management in elastic cloud datacenters. Simul Model Pract Theory 92:82–99

    Google Scholar 

  57. Quang-Hung N, Thoai N, Son NT (2014) EPOBF: energy efficient allocation of virtual machines in high performance computing cloud. In: Transactions on Large-Scale Data- and Knowledge-Centered Systems XVI, pp 71–86. Springer

  58. Verma A, Pedrosa L, Korupolu M, Oppenheimer D, Tune E, Wilkes J (2015) Large-scale cluster management at Google with Borg. In: Proceedings of the Tenth European Conference on Computer Systems—EuroSys ’15, pp 1–17

  59. Khan AA, Zakarya M, Buyya R, Khan R, Khan M, Rana O (2019) An energy and performance aware consolidation technique for containerized datacenters. IEEE Trans Cloud Comput. https://doi.org/10.1109/TCC.2019.2920914

    Article  Google Scholar 

  60. Zakarya M, Gillam L (2017) Energy efficient computing, clusters, grids and clouds: a taxonomy and survey. Sustain Comput Inform Syst 14:13–33

    Google Scholar 

  61. Dabbagh M, Hamdaoui B, Guizani M, Rayes A (2014) Release-time aware VM placement. In: Globecom Workshops (GC Wkshps), 2014, pp 122–126. IEEE

  62. Guérout T, Monteil T, Da Costa G, Calheiros RN, Buyya R, Alexandru M (2013) Energy-aware simulation with DVFs. Simul Modell Pract Theory 39:76–91

    Google Scholar 

  63. Garg SK, Buyya R (2011) Networkcloudsim: modelling parallel applications in cloud simulations. In: 2011 Fourth IEEE International Conference on Utility and Cloud Computing (UCC), pp 105–113. IEEE

  64. Calheiros RN, Netto MAS, De Rose CAF, Buyya R (2013) Emusim: an integrated emulation and simulation environment for modeling, evaluation, and validation of performance of cloud computing applications. Softw Pract Exp 43(5):595–612

    Google Scholar 

  65. Frey S, Hasselbring W (2011) The cloudmig approach: model-based migration of software systems to cloud-optimized applications. Int J Adv Softw 4(3 and 4):342–353

    Google Scholar 

  66. Beloglazov A, Buyya R, Lee YC, Zomaya A et al (2011) A taxonomy and survey of energy-efficient data centers and cloud computing systems. Adv Comput 82(2):47–111

    Google Scholar 

  67. De Maio V, Kecskemeti G, Prodan R (2016) An improved model for live migration in data centre simulators. In: Proceedings of the 9th International Conference on Utility and Cloud Computing, pp 108–117. ACM

Download references

Acknowledgements

This work was financially supported by the Abdul Wali Khan University, Pakistan and the University of Surrey, UK. The work was produced as part of a PhD program under the supervision of Dr. Lee Gillam at the University of Surrey. Interested cloud researchers can contact the corresponding author for using “PerficientCloudSim.” We are really thankful to Changyeon Jo (CSAP, Seoul National University, Korea) for providing an impressive real workload dataset that consists of VM migration statistics.

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to Muhammad Zakarya or Lee Gillam.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendix 1: CloudSim

Appendix 1: CloudSim

CloudSim [1] is a tool-kit to model and simulate IaaS clouds. CloudSim is an extension of the GridSim [7] simulator that uses SimJavaFootnote 23 library as a framework for event handling and passing messages between entities. Due to several limitations of SimJava, CloudSim is designed using a new discrete event management framework as demonstrated in [1]. CloudSim is widely used to simulate resource provisioning techniques. It has the ability to perform simulations of IaaS clouds where heterogeneous workload is assigned and executed with different experimental conditions. It enables users to express datacenter characteristics, including the number and specification of hosts, storage, network topology and design of datacenter usage. It enables the design of VM placement policies, allocation of host cores (PEs) to VMs and division of CPU time between users’ workloads. Switching on/off hosts, VM consolidation with migration, and integration of energy models (SPECpowerFootnote 24 benchmarks) are the notable techniques to model energy and performance efficient datacenters in CloudSim [8].

Fig. 12
figure 12

CloudSim basic architecture [1]

Within CloudSim, the application layer is managed by a broker which requests VMs creation. A broker can concurrently own one or more VMs, that are kept running on hosts until their explicit de-allocation by the broker, i.e. tasks are finished or some local requests are waiting (high priority) according to the SLA lease. VMs and host capacities are defined in millions of instructions per second (MIPS). For example, a CPU of 2.0 GHz is defined 2000 millions instructions per second, which means that it can execute 2000 instructions per second. Tasks (cloudlets) are allocated to VMs and defined in terms of the number of CPU instructions necessary for their completion (MIPS). Note that, if MIPS is used as a single measure, it means that workloads are basically homogeneous. Therefore, we assume larger or smaller MIPS as proxy for various workloads, represented by their CPU architecture-specific runtimes, since there is no other way to simulate the distinction between various workloads (e.g. a disk-bound and a CPU bound task). This provides a motivation for the discussion of CPU architectures and workloads at this point, which seems relevant. From CPU heterogeneity point of view, smaller or larger MIPS would certainly translate to variations in runtimes even for similar workloads. From application heterogeneity point of view, applications’ (workloads) runtimes (therefore, smaller or larger MIPS) are mapped statistically to runtimes of several benchmark workloads, such as Bzip2, Povray [9]. Closer similarities in runtimes (i.e. smaller or larger MIPS) are assumed as different types of applications. Figure 12 shows the multi-layered design of the CloudSim simulator framework and its various architectural components [1].

The basic requirements to run CloudSim include: (i) Sun’s Java version 8 or newer; and (ii) Apache antFootnote 25 or MavenFootnote 26 to compile CloudSim. Both Ant and Maven “simplify Java project management by providing various tools and plug-ins for project building, testing and packaging, dependency management, etc.” CloudSim is not compatible with older versions of Java and may not be compatible with non-Sun Java version, such as GCJ or J++. A numerical library such as Flanagan’sFootnote 27 or Apache MathFootnote 28 is needed to run several built in examples inside the CloudSim. CloudSim can be installed on any desktop machine that supports Java 8 or newer version. However, machines with large memories are preferable, particularly, when dealing with large-scale datacenter simulations. Each CloudSim entity is an object, created at the start of the simulation, and this may cause heap memory issues when the Java garbage collector is not able to find un-referenced objects for deletion.

CloudSim has been widely used to: (i) measure the effects of energy-aware VM allocation and migration algorithms on datacenter OpEx (operational expenditures); and (ii) evaluate scheduling mechanisms to allocate tasks to VMs [62]. Because CloudSim is an event driven simulation toolkit, its components maintain a message queue and generate messages, which they pass to other entities. A CloudSim simulation can instantiate several datacenters, each of which comprises several hosts (heterogeneous), which in turn host/accommodate multiple VMs executing one or more tasks. A datacenter is then characterised by its policy of placing requested VMs onto hosts (with the default strategy being to select the host with the least CPU cores in use) [8]. Moreover, each datacenter can be configured to charge users with different prices for storage, VM usage and data transfer (i.e. pricing models).

Each host has its own policy, which defines how its compute resources are to be divided among accommodated VMs, i.e. whether VMs operate on shared (time shared) or distinctly separated (space shared) resources and whether over subscription of resources is allowed or not. In a similar fashion, each VM also comes with a scheduling policy which specifies how its compute resources are to be divided among tasks. On top of this architecture, an application-specific datacenter broker supervises the whole simulation. The broker is responsible to: (a) make requests for allocation and deallocation of VMs inside the datacenter, and (b) assign tasks to VMs for execution. Figure 13 shows the UML class diagram of CloudSim and its various components.

Fig. 13
figure 13

CloudSim class design diagram [1] [an explanation of these classes is given in Sect. 1]

As a completely customisable tool, CloudSim allows extension of policies in all its components, which makes it a suitable research tool that can handle the complexities arising from simulated platforms [1]. Several extensions to CloudSim have been presented in the literature. For example: (i) NetworkCloudSim [63], which introduces sophisticated network modelling and inter-task communication; (ii) EMUSIM [64], which uses emulation to identify the performance requirements and runtime workload characteristics and feeds this information to CloudSim for more accurate simulation; and (iii) CloudMIG [65], which “facilitates the migration of software systems to the cloud by contrasting different cloud deployment options based on the simulation of a code model in CloudSim.” The internal processing of CloudSim in the form of a sequence diagram is shown in Fig. 14. The two methods updateVMProcessing() and updateCloudletsProcessing() are the core processes of the simulation internal processing. At datacenter level, at each simulation step, the former method updates VMs processing inside the hosts. Similarly, at host level, the former method invokes the latter one to update tasks execution which are currently running inside VMs. A comprehensive discussion of the simulation internal processing is available in [1].

Fig. 14
figure 14

CloudSim sequence diagram [40] (the CloudSim core classes are described in Sect. 2)

Despite its popularity and number of citations, CloudSim is not validated and verified yet, although there are several models inside CloudSim which have been validated in the real world. For example, the linear power model and migration performance model are validated as accurate (\(\sim \) 10% degradation) [66]. However, the linear power model assumes that energy consumption exclusively depends on CPU utilisation by ignoring other components such as memory and network. Moreover, CloudSim does not take into account several important parameters in its VM migration model such as over commitment and memory dirtying rate [67]. Similarly, there is no model to capture the overhead involved in the virtualisation and migration technologies.Footnote 29 Das et al. [40] have extended CloudSim with these models and have validated it through comparing with real-world experiments with an approximate error of \(\pm 2\%\).

CloudSim simulator is designed with using two different kinds of classes: (i) the main classes which interact with each other to simulate a cloud (Sect. 1); and (ii) the core classes which make simulations possible (Sect. 2). We briefly describe these classes, here as we believe it would help readers in understanding CloudSim and our extensions; a detailed discussion of these classes can be found in [1].

1.1 Main classes

The class diagram of the CloudSim main classes is shown in Fig. 13 [1].

BwProvisioner (abstract class) models the provisioning policy of network bandwidth to VMs.

CloudCoordinator periodically monitors the internal state of datacenter (resources) and undertakes dynamic load-shredding decisions.

Cloudlet models the cloud-based application services (each Cloudlet refers to a user’s job/task).

CloudletScheduler (abstract class) can be extended by the implementation of different policies to determine the share of processing power (CPU) among Cloudlets that are running inside a VM. Two types of provisioning policies are offered in CloudSim: (i) space-shared; and (ii) time-shared [1].

CloudletSchedulerTimeShared represents a provisioning policy which allows resources of a single VM to be shared among various cloudlets or tasks—allocate VMs resources to cloudlets or tasks.

CloudletSchedulerSpaceShared represents a provisioning policy which does not allow resources of a single VM to be shared among various cloudlets or tasks—allocate whole VM to a single and exactly one cloudlet or task.

Datacenter models the core infrastructure-level services (hardware) that are offered by cloud providers (such as Google).

DatacenterBroker discovers suitable cloud service providers by querying the CIS and undertakes online negotiations for allocation of resources that can meet the application requirements.

DatacenterCharacteristics contains configuration information of datacenter resources.

Host models a physical resource—host/server and its characteristics.

NetworkTopology contains the information for inducing network behaviour (latencies) in the simulation.

RamProvisioner represents the provisioning policy for memory (RAM) allocation to VMs.

SanStorage models a Storage Area Network (SAN) that is commonly ambient in datacenters for storing data (such as Amazon S3).

Vm models a VM and its characteristics, which is managed and hosted by Host class.

VmAllocationPolicy represents a provisioning policy to place VMs on hosts.

VmScheduler models the policies (space-shared, time-shared) to allocate processor cores (PEs) to VMs.

VmSchedulerTimeShared represents a provisioning policy which allows resources of a single host to be shared among various VMs—allocate processor cores (PEs) to VMs.

VmSchedulerSpaceShared represents a provisioning policy which does not allow resources of a single host to be shared among various VMs—allocate whole processor core (PE) to a single and exactly one VM.

1.2 Core classes

The class diagram of the CloudSim core classes is shown in Fig. 15 [1].

Fig. 15
figure 15

Class diagram of CloudSim core classes [1]

CloudSim responsible to manage event queues and control execution of the simulation events. Every event generated by the CloudSim entity at runtime is stored in a queue (future events). The events are sorted based on their creation time. Each event that is scheduled at the simulation step is removed from the queue (future events) and is added to another queue (deferred events).

CloudInformationService provides resource registration, indexing, and discovering capabilities [1].

CloudSimShutdown waits for the termination of all end-user and broker entities, and then signals the end of simulation to CIS.

CloudSimTags consists of various static events/commands which indicate the action taken by CloudSim entities when they receive or send events.

DeferredQueue implements the deferred event queue.

FutureQueue implements the future event queue.

SimEntity (abstract class) represents a simulation entity that is able to send messages to other entities. Furthermore, CIS is responsible to process received messages, fire and handle events. All entities must override the three core methods in this class: (i) startEntity()—entity initialisation; (ii) processEvent()—processing of events; and (iii) ShutdownEntity()—entity destruction.

SimEvent represents a simulation event that is passed between two or more entities.

The above classes when linked with each other can model a simple, but complete datacenter. Besides these classes, other classes might exist in CloudSim simulator and its various variants, such as FederatedDataCenter, containerDataCenter, VmScheduler, and CloudletScheduler. All these classes are inherited either from the above core classes or main classes in some or other way. Therefore, we do not include them in this paper. A detailed discussion, functionalities/capabilities and explanation of these inherited classes can be found in [1, 22]. Further materials, documentations, online courses, publications and several variants of the CloudSim simulator are available at the portal of CLOUDS Laboratory.Footnote 30

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Zakarya, M., Gillam, L., Khan, A.A. et al. PerficientCloudSim: a tool to simulate large-scale computation in heterogeneous clouds. J Supercomput 77, 3959–4013 (2021). https://doi.org/10.1007/s11227-020-03425-5

Download citation

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-020-03425-5

Keywords

Navigation