978-1-4673-5943-6/13/$31.00 ©2013 IEEE
The Mutual Effect of Virtualization and
Parallelism in a Cloud Environment
Soha S. Zaghloul
Department of Computer Science
Faculty of Computer and Information Science, KSU
Riyadh, KSA
smekki@ksu.edu.sa
Abstract—Cloud computing is a dominant
technology nowadays in both industry and
academia. It evolved from many concepts such as
distributed processing and parallel computing. In
addition, virtualization is the core of cloud
computing since it facilitates live migration for the
sake of load balancing. The ultimate result is the
optimization of resources utilization and increase
in the whole system’s performance. Moreover,
virtualization plays an important role in achieving
disaster recovery plans. Furthermore, virtual
machines secure the underlying physical hardware
against malware. However, parallel computing is of
no less importance, especially to cloud platforms.
Consequently, contemporary laptops, mobile and
hand-held devices manufacturers produce
multicore equipment with the aim of achieving high
performance levels when these become nodes in a
cloud environment. However, what is the mutual
effect of virtualization and parallel processing? Do
they impede each other? Do they really boost the
overall performance collectively? This research
helps to better understand the effect of
virtualization on parallel processing. In addition,
this paper covers some researches made to answer
such questions. Such studies are so few – to the
extent of our knowledge – that they don’t give
comprehensive answers to the previously imposed
questions. Finally, a methodology is exposed to
quantitatively measure the mutual effect of
parallelism and virtualization in a cloud
environment.
Keywords: virtualization; parallel programming;
distributed processing
I. INTRODUCTION
Initially, parallel processing was implemented
only on supercomputers the most famous of
which are CDC, Cray, and Fujitsu [1]. Later, the
world witnessed drastic advancements in the
hardware technology. Nowadays, personal
computers (PCs), laptops, hand-held devices and
smart mobiles excerpt the multi-processing
feature of supercomputers. One can easily find
dual-core and quad-core of such equipment in the
market. Not only they are available, but they are
also affordable.
On the other hand, cloud computing is
currently prevailing the world of information
technology. People always dreamed to have
computing offered as a utility. They pay only for
what they use in the same way as they do for the
telephone, gas, and water bills. In addition, clouds
provide different services: each institution may
select what is more suitable for its goal. Such
services, or deployment models, include
Infrastructure-as-a-Service (IaaS), Platform-as-a-
Service (PaaS) and Software-as-a-Service (SaaS).
Moreover, clouds offer scalability, flexibility,
elasticity and provide better resources utilization
[2].
Virtualization is an old concept since the 60s
when IBM came with the idea and implemented
it. It is the ability to install multiple virtual
machines on the same physical machine. Virtual
machines may have different operating systems
[3]. Thus capital, operational, maintenance and
management costs are reduced. However,
virtualization gained more popularization with the
emersion of cloud computing. In fact,
virtualization is the core of cloud computing.
Virtualization facilitates the live migration
process in a cloud platform for the sake of load
balancing. The ultimate result is an increased
system overall performance and optimized
resources utilization. In addition, disaster
recovery plans are easily achieved with the aid of
virtual machines [4][5].
In summary, both virtualization and
parallelism are considered vital to a cloud
computing platform. However, the question now
is what is the effect of virtualization on parallel
processing in the cloud? Does virtualization
impede parallelism? Do parallel applications
benefit from virtualization? If yes, to what extent
does virtualization boost parallelism? If not, how
to minimize the imposed overhead in order to
gain the maximum execution speed? This