29-08-2016, 12:07 PM
CloudSim: a toolkit for modeling and simulation of cloud
computing environments and evaluation of resource
provisioning algorithms
1451382519-00000CloudSim2010.pdf (Size: 539.28 KB / Downloads: 6)
Cloud computing is a recent advancement wherein IT infrastructure and applications are provided as
‘services’ to end-users under a usage-based payment model. It can leverage virtualized services even on the
fly based on requirements (workload patterns and QoS) varying with time. The application services hosted
under Cloud computing model have complex provisioning, composition, configuration, and deployment
requirements. Evaluating the performance of Cloud provisioning policies, application workload models,
and resources performance models in a repeatable manner under varying system and user configurations
and requirements is difficult to achieve. To overcome this challenge, we propose CloudSim: an extensible
simulation toolkit that enables modeling and simulation of Cloud computing systems and application
provisioning environments. The CloudSim toolkit supports both system and behavior modeling of Cloud
system components such as data centers, virtual machines (VMs) and resource provisioning policies.
It implements generic application provisioning techniques that can be extended with ease and limited
effort. Currently, it supports modeling and simulation of Cloud computing environments consisting of
both single and inter-networked clouds (federation of clouds). Moreover, it exposes custom interfaces for
implementing policies and provisioning techniques for allocation of VMs under inter-networked Cloud
computing scenarios. Several researchers from organizations, such as HP Labs in U.S.A., are using
CloudSim in their investigation on Cloud resource provisioning and energy-efficient management of
data center resources. The usefulness of CloudSim is demonstrated by a case study involving dynamic
provisioning of application services in the hybrid federated clouds environment. The result of this case study
proves that the federated Cloud computing model significantly improves the application QoS requirements
under fluctuating resource and service demand patterns. Copyright q 2010 John Wiley & Sons, Ltd.
Received 3 November 2009; Revised 4 June 2010; Accepted 14 June 2010
KEY WORDS: Cloud computing; modelling and simulation; performance evaluation; resource management;
application scheduling
1. INTRODUCTION
Cloud computing delivers infrastructure, platform, and software that are made available as
subscription-based services in a pay-as-you-go model to consumers. These services are referred
to as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service
(SaaS) in industries. The importance of these services was highlighted in a recent report from the
University of Berkeley as: ‘Cloud computing, the long-held dream of computing as a utility has
∗Correspondence to: Rajkumar Buyya, Cloud Computing and Distributed Systems (CLOUDS) Laboratory, Department
of Computer Science and Software Engineering, The University of Melbourne, Australia.
†E-mail: raj[at]csse.unimelb.edu.au
Copyright q 2010 John Wiley & Sons, Ltd.
24 R. N. CALHEIROS ET AL.
the potential to transform a large part of the IT industry, making software even more attractive as
a service’ [1].
Clouds [2] aim to power the next-generation data centers as the enabling platform for dynamic
and flexible application provisioning. This is facilitated by exposing data center’s capabilities as a
network of virtual services (e.g. hardware, database, user-interface, and application logic) so that
users are able to access and deploy applications from anywhere in the Internet driven by the demand
and Quality of Service (QoS) requirements [3]. Similarly, IT companies with innovative ideas for
new application services are no longer required to make large capital outlays in the hardware and
software infrastructures. By using clouds as the application hosting platform, IT companies are
freed from the trivial task of setting up basic hardware and software infrastructures. Thus, they
can focus more on innovation and creation of business values for their application services [1].
Some of the traditional and emerging Cloud-based application services include social networking,
web hosting, content delivery, and real-time instrumented data processing. Each of these application
types has different composition, configuration, and deployment requirements. Quantifying
the performance of provisioning (scheduling and allocation) policies in a real Cloud computing
environment (Amazon EC2 [4], Microsoft Azure [5], Google App Engine [6]) for different application
models under transient conditions is extremely challenging because: (i) Clouds exhibit
varying demands, supply patterns, system sizes, and resources (hardware, software, network);
(ii) users have heterogeneous, dynamic, and competing QoS requirements; and (iii) applications
have varying performance, workload, and dynamic application scaling requirements. The use of
real infrastructures, such as Amazon EC2 and Microsoft Azure, for benchmarking the application
performance (throughput, cost benefits) under variable conditions (availability, workload patterns)
is often constrained by the rigidity of the infrastructure. Hence, this makes the reproduction of
results that can be relied upon, an extremely difficult undertaking. Further, it is tedious and timeconsuming
to re-configure benchmarking parameters across a massive-scale Cloud computing
infrastructure over multiple test runs. Such limitations are caused by the conditions prevailing in the
Cloud-based environments that are not in the control of developers of application services. Thus,
it is not possible to perform benchmarking experiments in repeatable, dependable, and scalable
environments using real-world Cloud environments.
A more viable alternative is the use of simulation tools. These tools open up the possibility
of evaluating the hypothesis (application benchmarking study) in a controlled environment where
one can easily reproduce results. Simulation-based approaches offer significant benefits to IT
companies (or anyone who wants to offer his application services through clouds) by allowing
them to: (i) test their services in repeatable and controllable environment; (ii) tune the system
bottlenecks before deploying on real clouds; and (iii) experiment with different workload mix and
resource performance scenarios on simulated infrastructures for developing and testing adaptive
application provisioning techniques [7].
Considering that none of the current distributed (including Grid and Network) system simulators
[8–10] offer the environment that can be directly used for modeling Cloud computing environments,
we present CloudSim: a new, generalized, and extensible simulation framework that allows
seamless modeling, simulation, and experimentation of emerging Cloud computing infrastructures
and application services. By using CloudSim, researchers and industry-based developers can test
the performance of a newly developed application service in a controlled and easy to set-up environment.
Based on the evaluation results reported by CloudSim, they can further finetune the service
performance. The main advantages of using CloudSim for initial performance testing include:
(i) time effectiveness: it requires very less effort and time to implement Cloud-based application
provisioning test environment and (ii) flexibility and applicability: developers can model and test
the performance of their application services in heterogeneous Cloud environments (Amazon EC2,
Microsoft Azure) with little programming and deployment effort.
CloudSim offers the following novel features: (i) support for modeling and simulation of largescale
Cloud computing environments, including data centers, on a single physical computing
node; (ii) a self-contained platform for modeling Clouds, service brokers, provisioning, and allocation
policies; (iii) support for simulation of network connections among the simulated system
Copyright q 2010 John Wiley & Sons, Ltd. Softw. Pract. Exper. 2011; 41:23–50
DOI: 10.1002/spe
CLOUDSIM: A TOOLKIT 25
elements; and (iv) facility for simulation of federated Cloud environment that inter-networks
resources from both private and public domains, a feature critical for research studies related to
Cloud-Bursts and automatic application scaling. Some of the unique features of CloudSim are:
(i) availability of a virtualization engine that aids in the creation and management of multiple,
independent, and co-hosted virtualized services on a data center node and (ii) flexibility to switch
between space-shared and time-shared allocation of processing cores to virtualized services. These
compelling features of CloudSim would speed up the development of new application provisioning
algorithms for Cloud computing.
The main contributions of this paper are: (i) a holistic software framework for modeling Cloud
computing environments and performance testing application services and (ii) an end-to-end Cloud
network architecture that utilizes BRITE topology for modeling link bandwidth and associated
latencies. Some of our findings related to the CloudSim framework are: (i) it is capable of supporting
a large-scale simulation environment with little or no overhead with respect to initialization overhead
and memory consumption; (ii) it exposes powerful features that could easily be extended
for modeling custom Cloud computing environments (federated/non-federated) and application
provisioning techniques (Cloud-Bursts, energy conscious/non-energy conscious).
The remainder of this paper is organized as follows: first, a general description about Cloud
computing, existing models, and their layered design is presented. This section ends with a brief
overview of existing state-of-the-art in distributed (grids, clouds) system simulation and modeling.
Following that, comprehensive details related to the architecture of the CloudSim framework are
presented. Section 4 presents the overall design of the CloudSim components. Section 5 presents a
set of experiments that were conducted for quantifying the performance of CloudSim in successfully
simulating Cloud computing environments. Section 6 gives a brief overview of the projects that
are using or have used CloudSim for research and development. Finally, the paper ends with brief
conclusive remarks and a discussion on future research directions.
2. BACKGROUND
This section presents the background information on various elements that form the basis for
architecting Cloud computing systems. It also presents the requirements of elastic or malleable
applications that need to scale across multiple, geographically distributed data centers that are
owned by one or more Cloud service providers. The CloudSim framework aims to ease-up and
speed the process of conducting experimental studies that use Cloud computing as the application
provisioning environments. Note that, conducting such experimental studies using real Cloud
infrastructures can be extremely time-consuming due to their sheer scale and complexity.
2.1. Cloud computing
Cloud computing can be defined as ‘a type of parallel and distributed system consisting of a
collection of inter-connected and virtualized computers that are dynamically provisioned, and
presented as one or more unified computing resources based on service-level agreements established
through negotiation between the service provider and consumers’ [3]. Some of the examples
for emerging Cloud computing infrastructures/platforms are Microsoft Azure [5], Amazon EC2,
Google App Engine, and Aneka [11].
One implication of Cloud platforms is the ability to dynamically adapt (scale-up or scale-down)
the amount of resources provisioned to an application in order to attend the variations in demand that
are either predictable, and occur due to access patterns observed during the day and during the night;
or unexpected, and occurring due to a subtle increase in the popularity of the application service.
This capability of clouds is especially useful for elastic (automatically scaling of) applications,
such as web hosting, content delivery, and social networks that are susceptible to such behavior.
These applications often exhibit transient behavior (usage pattern) and have different QoS
requirements depending on time criticality and users’ interaction patterns (online/offline). Hence,
Copyright q 2010 John Wiley & Sons, Ltd. Softw. Pract. Exper. 2011; 41:23–50
DOI: 10.1002/spe
26 R. N. CALHEIROS ET AL.
the development of dynamic provisioning techniques to ensure that these applications achieve QoS
under transient conditions is required.
Although Cloud has been increasingly seen as the platform that can support elastic applications,
it faces certain limitations pertaining to core issues such as ownership, scale, and locality. For
instance, a cloud can only offer a limited number of hosting capability (virtual machines (VMs)
and computing servers) to application services at a given instance of time; hence, scaling the application’s
capacity beyond a certain extent becomes complicated. Therefore, in those cases where the
number of requests overshoots the cloud’s capacity, application hosted in a cloud can compromise
on the overall QoS delivered to its users. One solution to this problem is to inter-network multiple
clouds as part of a federation and develop next-generation dynamic provisioning techniques that
can derive benefits from the architecture. Such federation of geographically distributed clouds
can be formed based on previous agreements among them, to efficiently cope with variations in
service demands. This approach allows provisioning of applications across multiple clouds that
are members of a/the federation. This further aids in efficiently fulfilling user SLAs through transparent
migration of application service instance to the cloud in the federation, which is closer to
the origins of requests.
A hybrid cloud model is a combination of private clouds with public clouds. Private and public
clouds mainly differ on the type of ownership and access rights that they support. Access to
private cloud resources is restricted to the users belonging to the organization that owns the
cloud. On the other hand, public cloud resources are available on the Internet to any interested
user under pay-as-you-go model. Hence, small and medium enterprises (SMEs) and governments
have started exploring demand-driven provisioning of public clouds along with their existing
computing infrastructures (private clouds) for handling the temporal variation in their service
demands. This model is particularly beneficial for SMEs and banks that need massive computing
power only at a particular time of the day (such as back-office processing, transaction analysis).
However, writing the software and developing application provisioning techniques for any of
the Cloud models—public, private, hybrid, or federated—is a complex undertaking. There are
several key challenges associated with provisioning of applications on clouds: service discovery,
monitoring, deployment of VMs and applications, and load-balancing among others. The effect
of each element in the overall Cloud operation may not be trivial enough to allow isolation,
evaluation, and reproduction. CloudSim eases these challenges by supplying a platform in which
strategies for each element can be tested in a controlled and reproducible manner. Therefore,
simulation frameworks such as CloudSim are important, as they allow the evaluation of the
performance of resource provisioning and application scheduling techniques under different usage
and infrastructure availability scenarios.
2.2. Layered design
Figure 1 shows the layered design of Cloud computing architecture. Physical Cloud resources
along with core middleware capabilities form the basis for delivering IaaS and PaaS. The user-level
middleware aims at providing SaaS capabilities. The top layer focuses on application services
(SaaS) by making use of services provided by the lower-layer services. PaaS/SaaS services are
often developed and provided by third-party service providers, who are different from the IaaS
providers [3].
Cloud applications: This layer includes applications that are directly available to end-users. We
define end-users as the active entity that utilizes the SaaS applications over the Internet. These
applications may be supplied by the Cloud provider (SaaS providers) and accessed by end-users
either via a subscription model or on a pay-per-use basis. Alternatively, in this layer, users deploy
their own applications. In the former case, there are applications such as Salesforce.com that supply
business process models on clouds (namely, customer relationship management software) and
social networks. In the latter, there are e-Science and e-Research applications, and Content-Delivery
Networks.