MCEVE A Model for Configuring Efficient Virtualized ...gsc/pub/master/aalmuray/doc/MCEVE... · A...
Transcript of MCEVE A Model for Configuring Efficient Virtualized ...gsc/pub/master/aalmuray/doc/MCEVE... · A...
MCEVE
A Model for Configuring Efficient
Virtualized Environments Based on
Multiple Weighted Considerations
By
Abdullah S. Almurayh
A thesis submitted to the Faculty of Graduate School of the
University of Colorado at Colorado Springs
in Partial Fulfillment of the Requirements
for the Degree of
Master of Science in Computer Science
Department of Computer Science
2011
I
Copyright by Abdullah Almurayh 2011
All Rights Reserved
II
This thesis for the Master of Science degree by
Abdullah S. Almurayh
has been approved for the
Department of Computer Science
by
_______________________________________________________
Dr. C. Edward Chow, Advisor
_______________________________________________________
Dr. Chuan Yue, Committee member
_______________________________________________________
Dr. Albert Glock, Committee member
_______________________________
Date
III
Abdullah S. Almurayh (M.S., Computer Science)
A Model for Configuring Efficient Virtualized Environments
Based on Multiple Weighted Considerations
Thesis directed by Professor Edward Chow
Abstract
Virtualization enables multiple operating systems to run simultaneously on
one single machine. Computer manufacturers have been driven to aim their
products to support virtualization technology because of virtualization
benefits such as server consolidation, reduced power and cooling, green
computing, ease of deployment and administration, high availability and
disaster recovery. Virtualization systems and software vendors have been
competing with each other in the production of virtualization hypervisors,
platforms, and virtual machine managers. While the diversity of virtualization
solutions offers many remarkable choices, people sometimes become so
confused that they are unable to decide what solutions they should choose for
establishing their virtualized environments. Experts may be able to configure
an efficient virtualized environment that requires a lot of effort to research
and analyze existing results through papers, experiments and so on. Novice
users, on the other hand, it can be a challenging task that requires difficult
trade-offs such as cost and performance. Even interpreting the suggested
configuration from an expert could lead to confusion that especially happens
when there are many conflicting results in existing research. In this thesis, I
propose to develop a model for suggesting better solutions of virtualized
IV
environments. The model needs to consider given specifications such as
hardware configurations, requirements, and virtualization platforms. The
model is for users to configure efficient virtualized environments. The
scenario of this model uses user interests, considerations, or configurations as
inputs for algorithmic outputs. The output results are used as a guide
containing suggestions to construct a virtualized environment. The model
would help to efficiently configure virtualized environments in an easier and
reduced cost and minimize unexpected events driven by inefficient
configurations. It would be a guide for people who are not experts in
virtualization or who cannot afford the cost of virtualization configurations
and tests. Metrics for evaluating the suggested configurations include Cost
and Performance. Cost refers to the user who can save time by adopting the
appropriate decisions resulting in hours configuring virtualized environments
instead of spending days researching and comparing existing results.
Moreover, the cost can be reduced by the use of existing comparison results
instead of performing tests and experiments. Performance can be enhanced by
using solutions based on reliable real solutions rather than trying different
solutions that can lead to high monetary cost. Through an iteration process to
implement, evaluate and refine the Model to improve its functionality and the
accuracy of its suggestions, I found that the Model affectively produces
dependable results that meet the user’s expectations
V
Acknowledgements
I would like to take the opportunity to sincerely thank Dr. Edward Chow for the
support, effort, and the valuable time he has spent supervising me, and for the
direction to guide me through the challenging coursework I have taken with him.
I would like to thank Dr. Chuan Yue for being always encouraging me and giving
me guiding question to direct the thesis into better work.
I would like to thank Dr. Albert Glock for being interested in getting my proposal
succeeded and giving important questionable ideas to me through his comments
on my proposal.
Finally, I would like to thank my government – The Kingdome of Saudi Arabia –
represented in the Ministry of High Education for being my sponsor and
providing me with all finical supports and requirements to finish my study and
research at the United States of America, specifically at University of Colorado at
Colorado Springs.
VI
List of Content
Chapter 1
Introduction ........................................................................................................... 1
1.1 Motivation: ............................................................................................... 3
1.2 Contribution: ............................................................................................ 6
1.3 Related Work: .......................................................................................... 6
1.4 Beneficial Goals: ...................................................................................... 7
1.5 Thesis Outline .......................................................................................... 9
Chapter 2
Virtualization Technology .................................................................................. 10
2.1 Introduction to Virtualization: ............................................................... 10
2.2 Types of virtualization: .......................................................................... 12
2.3 Characteristics of virtualization ............................................................. 18
2.4 Applications of virtualization ................................................................. 22
2.5 Virtualization Projects: .......................................................................... 25
Chapter 3
Virtual Guest ....................................................................................................... 35
3.1 Introduction: ........................................................................................... 35
3.2 Virtual Machine: .................................................................................... 36
3.3 Virtual private server .............................................................................. 38
3.4 Performance comparison between VM and VPS ................................... 40
3.5 Virtual Guest Features ............................................................................ 43
Chapter 4
Proposed Model ................................................................................................... 45
4.1 Introduction: ........................................................................................... 45
4.2 The MCEVE Model Components: ......................................................... 47
4.3 The Algorithm of the Model: ................................................................. 49
4.4 Mathematical and Logical Formulas: ..................................................... 51
4.5 The Flow Diagram of the Model: ........................................................... 53
VII
Chapter 5
The Web-based Development of the Model ...................................................... 55
5.1 Overview: ............................................................................................... 55
5.2 The Web Modeling Language Model (WMLM) ................................... 56
Chapter 6
Evaluation and Analysis ..................................................................................... 83
6.1 Introduction: ........................................................................................... 83
6.2 Effectiveness: ......................................................................................... 83
6.3 Accuracy: ............................................................................................... 86
6.4 Efficiency: .............................................................................................. 89
6.5 Data Transparency: ................................................................................ 90
6.6 Experimental Tests: ................................................................................ 92
Chapter 7
Lessons Learned .................................................................................................. 98
7.1 Read and research in variant topics related to Virtualization: ............... 98
7.2 Parameters Prediction Algorithms: ........................................................ 99
7.3 Data collection...................................................................................... 105
7.4 Testing Xenserver on UCCS HP blade servers: ................................... 107
Chapter 8
Future work ....................................................................................................... 111
Chapter 9
Conclusion ......................................................................................................... 113
Bibliography ...................................................................................................... 115
VIII
List of Figures
Figure 1.1 Relative performance of native Linux (L), XenoLinux (X), VMware workstation 3.2
(V) and User-Mode Linux (U)...........................................................................................................4
Figure 1.2 Passmark – CPU results compared to native (higher values are better) ……………......4
Figure 2.1 Native Virtualization Architecture..................................................................................12
Figure 2.2 Full Virtualization Architecture......................................................................................13
Figure 2.3 Para Virtualization Architecture.....................................................................................15
Figure 2.4 Kernel Level Virtualization Architecture……………………………………………...16
Figure 2.5 Operating system-level Virtualization Architecture…………………………………...17
Figure 2.6 Emulator Architecture………………………………………………………………….18
Figure 2.7 Xen Architecture…………………………………………………………………….....26
Figure 2.8 VMware Architecture …………………………………………………………………28
Figure 2.9 Windows Server 2008 R2 Hyper-V Architecture……………………………………...29
Figure 2.10 OpenVZ Virtualization Architecture…………………………………………………30
Figure 2.11 Redhat RHEV Virtualization Architecture…………………………….……………..31
Figure 2.12 Parallel Viertuozzo Virtualization Architecture…………………….………………..32
Figure 2.13 Oracle Virtualbox Virtualization Architecture…………………….…………………33
Figure 2.14 Linux VServer Virtualization Architecture…………………………………...……...34
Figure 3.1 Virtual Machine Architecture………………………………………………………….37
Figure 3.2 Virtual Private Server Architecture……………………………………………………40
Figure 3.3 Comparison of latency performance by different message sizes …………….………..41
Figure 3.4 Comparison of read and write performance by different file sizes ……………………42
Figure 4.1 Different opinions lead to different decisions …………………………………………45
Figure 4.2 Combined views ……………………………………………………………………46
Figure 4.3 The simple Diagram of the Model algorithm …………………………………………48
Figure 4.4 The Algorithm of the Model……………………………………………………….…..50
Figure 4.5 The simple Diagram of the Model workflow………………………………………….53
Figure 5.1 Phases in the WebML development levels…………………………………………….56
Figure 5.2 Crow’s Foot Relational Database diagram for the Model……………………………..68
Figure 5.3 the Work flow of the Model web application………………………………………….69
Figure 5.4 Conceptual from for the user to configure a virtualized environment…………………70
Figure 5.5 Form of the Model that collects user inputs…………………………………………...74
Figure 5.6 a list of inputs for the user to choose a specific item…………………………………..75
Figure 5.7 constraints area to narrow user configurations ……………………………………......75
Figure 5.8 weights lists for user to scale his priorities ……………………………………………76
Figure 5.9 specifying user configurations and considerations…………………………………….79
IX
Figure 5.10 specifying users priorities with appropriate weights…………………………………80
Figure 5.11 results are being processed by the Model…………………………………………….80
Figure 5.12 user configurations, weighted priorities, and suggested solutions……….…….…….81
Figure 6.1 the first virtualization environment configuration can run 432 virtual servers………..84
Figure 6.2 the first virtualization environment configuration has the lowest cost ………………85
Figure 6.3 input box for constraint user configurations…………………………………………...86
Figure 6.4 SSD Storage descriptions in virtualized environment configurations…………………86
Figure 6.5 user configurations with high price consideration……………………………………..87
Figure 6.6 user configurations with high capacity consideration………………………………….89
Figure 6.7 multiple dimensional considerations assigned with weights to the Model…………….89
Fig re 6.8 MCEVE execution time……………………………………………………………90
Figure 6.9 all existing benchmarks as listed by the Model………………………………………..91
Figure 6.10 all remaining benchmarks as listed by the Model…………………………………...92
Figure 6.11 Chart shows the scores of conf#14 for the four scenarios (lower is better)…………..97
Figure 7.1 Growth of processor performance …………………………………………………...103
Figure 7.2 the results of the absolute changes……………………………………………………104
Figure 7.3 the results of the relative changes…………………………………………………….104
Figure 7.4 the improvement of the performance based on the relative change…………………..105
Figure 7.6 Xen Hypervisor and Xen Server………………………………………….………….110
Figure 7.7 Xen Server installation screenshots………………………………………………….111
Figure 7.8 Xen Center interface ………………………………………………………………...112
Figure 7.9 Xen Server Security Test Results……………………………………………………113
Figure A.1 Apache installation icon…………..………………………………………………….122
Figure A.2 Apache Installation wizard screen 1…………………………………………………122
Fig re A.3 Apache Installation wizard screen 2…………………………………………………123
Figure A.4 Apache Installation wizard screen 3…………………………………………………123
Figure A.5 Apache Installation wizard screen 4…………………………………………………124
Figure A.6 Apache Installation wizard screen 5…………………………………………………124
Figure A.7 Apache Installation wizard screen 6…………………………………………………125
Figure A.8 Apache Installation wizard screen 7…………………………………………………126
Figure A.9 Apache Installation wizard screen 8…………………………………………………126
Figure A.10 Apache localhost webpage………………………………………………………….127
Figure A.11 Unpacking the zipped file ………………………………………………………….128
Figure A.12 creating a new folder ……………………………………………………………….129
Figure A.13 creating a new folder………………………………………………………………..129
Figure A.14 pasting the copied files and directories……………………………………………..130
Figure A.15 phpMyAdmin Firewall…………………………………………….………………..130
Figure A.16 Creating a MySQL database via phpMyAdmin…………………………………….131
Figure A.17 the message after reating the MySQL database…………………………………….131
Figure A.18 Importing a MySQL database via phpMyAdmin…………………………………..132
Figure A.19 tables of the database appear on the left men ……………………………………..132
Fig re A.20 the content of the “config.php” file…………………………………………………133
Figure A.21 testing the application webpage…………………………………………………….133
Fig re A.22 PHP Coder software…………………………………………………………….…..134
Figure B.1 resources that the user can specify……………………………………………….…..136
Figure B.2 Measurements priorities………………………………………………………….…..137
Figure B.3 the interface indicating the results are in progress(1)………………………………..138
Figure B.4 the interface indicating the results are in progress (2) ………………………………138
Figure B.5 the interface showing the res lts……………………………………………………..140
X
Figure B.6 Tools for showing more results………………………………………………………140
Figure B.7 phpMyAdmin asking for credential information…………………………………….141
Figure B.8 phpMyAdmin interface showing the Model database and the list of tables………....142
Figure B.9 the interface for entering more data into a table……………………………………..143
Figure B.10 browsing the content of a table …………………………………………………….143
Figure B.11 information about virtualization types……………………………………………...144
Figure B.12 information about existing virtualization projects………………………………….145
Figure B.13 additional information about a virtualization platform……………………………..146
Figure B.14 More details about specific configurations…………………………………………147
Figure C.1 the usage of PHP compared to other web programing languages…………………...149
Figure C.2 Web request processing with and without PHP……………………………………...149
Figure C.3 the connectivity between PHP and other resources………………………………….151
List of Tables
Table 3.1 Evaluated virtualization platforms ……………………………………………………41
Table 5.1 Definitions of weight values……………………………………………………………58
Table 5.2 An example of briefed real physical machine specifications…………………………..62
Table 5.3 An example of detailed real physical machine specifications………………………….63
Table 5.4 Examples of Virtualization Platforms……………………………………...………65
Table 5.5 An example of SPEC benchmarks measurements……………………………………...65
Table 5.6 An example of averaging the SPEC benchmarks measurements of all Tiles…………66
able 6.1. Test bed Specifications…………………………………………………………89
Table 6.2 all existing benchmarks ………………………………………………………………90
Table 6.3 all remaining benchmarks ………………………………………………………91
Table 6.4 Configurations # 14 benchmarks……………………………………………………92
Table 6.5 Configurations #14 scores in the first scenario………………………………………93
Table 6.6 Configurations #14 scores in the second scenario……………………………………93
Table 6.7 Configurations #14 scores in the third scenario………………………………………94
Table 6.8 Configurations #14 scores in the fourth scenario……………………………………95
Table 6.9 benchmarks comparisons between Configurations #14 and #15………….……………96
Table 7.1 Examples of specifications that represent real machines…………....…………………99
Table 7.2 hardware specification basis………………………………………..…………………100
Table 7.3 Generating improved hardware instances………………………….…………………100
Table C.1 List of PHP tutorial content ……………………………………………..……………151
Table C.2 List of SQL tutorial content …………………………………………………………..153
List of Abbreviations
XI
MCEVE……………….. Model for Configuring Efficient Virtualized Environments
VT ……………………. Virtualization Technology
VM ………………….... Virtual Machine
VMM ……………….... Virtual Machine Manager
VPS ………………...… Virtual Private Server
VDS…………………… Virtual Dedicated Server
Virt……………………. Virtualization
App……………………. Application
OS…………………….. Operating System
KVM………………….. Kernel-based Virtual Machine
LVS…………………… Linux Virtual Server
DR…………………….. Direct Routing
EC2……………………. Amazon Elastic Compute Cloud
I/O…………………….. Input/Output
PC……………………... Personal Computer
GNU GPL…………….. GNU General Public License
HPC…………………… High Performance Computing
Dom ………………….. Domain
HVM………………….. Hardware Virtual Machine
SPEC………………...... Standard Performance Evaluation Corporation
SQL…………………… Structured Query Language
ERD…………………… Entity Relationship Diagrams
SSD…………………… Solid State Drive
PM…………………….. Physical Machine
VM……………………. Virtual Machine
H-OS………………….. Host Operating System
G-OS..………………… Guest Operating System
Appendices Appendix A:
Setting up the Application Testbed A.1 Installing a Web server ……………………………..…………………. 121
A.2 Setting up the web Application……………………………………….... 127 A.3 Building the database…………………………………………………... 130
A.4 Installing additional tools………………………………………………. 134
Appendix B:
The Manuel of the Application and Data Access
B.1 Inp t ……………………………………………………………………. 135
XII
B.2 Process………………………………………………………………….. 137 B.3 Outputs…………………………………………………………………. 139 B.4 Database Access…………………………..……………………………. 141 B.5 Additional Components…………………..……………………………. 143
Appendix C:
Tutorials
C.1 PHP…………………………………………………………………… 148 C.2 SQL…………………………………………………………………… 153
Appendix D:
Questions and answers about choosing virtualization
solution
D.1List of Articles and Posts……………………….……………………… 156
1
Chapter 1
Introduction
Virtualization is a widely used technology that allows users to consolidate
physical resources. Multiple operating systems can run simultaneously on one
single computer in a relatively safe and efficient manner. This facility generally is
known as hardware virtualization. Virtualization has many benefits and
advantages such as server consolidation, reduced power and cooling, green
computing, ease of deployment and administration, high availability and disaster
recovery [1] [2]. Consequently, most of computer manufacturers have aimed their
products to support virtualization technology. Virtualization systems and software
vendors have been competing with each other in the production of virtualization
hypervisors, platforms, and virtual machine managers such as Xen, Vmware,
OpenVZ, Linux-VServer, Oracle Virtual Box, Parallels, and others [3]. Hardware
vendors, on the other hand, started supporting virtualization by producing built in
–virtualization processors such as Intel-VT and AMD-V [4] [5]. Today, we have
many choices to construct our own virtualized environments.
2
The diversity of virtualization solutions is abundant. However, by having many
remarkable choices, people sometimes become so confused that they are unable to
decide what solutions they should choose for establishing their virtualized
environments. Not only is this the problem, but there are many important
considerations related to virtualization concepts that users must be fully aware of.
Some organizations are asking whether they should virtualize their systems or not,
but the focus now is on how they should leverage virtualization in their
environment. Every virtualization technology operates in slightly different
manner. There are different approaches of virtualization such as Full-
virtualization, Para-virtualization, operating system-level virtualization, and
hardware virtualization. Each one has different architecture is appropriate to some
situation or need [6]. The diversity of virtualization solutions has opened the door
to an endless array of choices. More choices offer organizations greater flexibility
but can also introduce confusion and complexity.
Two terms of virtualization exist in the virtualized environments. They are similar
in the fact that a Virtual Machine VM as a Virtual Private Server VPS which is
known as the guest in a virtualized environment [7]. The difference between VM
and VPS is that a VM has its own guest operating system, no matter which kind
of operating system, referred as host operating system, the physical machine runs
on. VPS, on the other hand, uses the kernel of host operating system. Moreover,
the VPS technique is sometimes referred to a lightweight Virtual Machine. VPS is
commonly used to provide shared web hosting services and dedicated hosting
services for web services. Today, numbers of companies increasingly offer
3
virtual private server hosting, or virtual dedicated server hosting as an extension
for web hosting services.
1.1 Motivation:
For experts, configuring an efficient virtualized environment requires a lot
of effort to research and analyze existing results through papers, perform
experiments and so on. For naive users, this is a challenging task that requires
difficult trade-offs such as cost and performance. Even interpreting the suggested
configuration from an expert could be confusing. The cost is the consequences of
implementing many different configurations of hardware, software, operating
systems, applications, benchmarks and other requirements in order to perform
comparisons between virtualization technologies for producing the best solution.
In fact, the confusion happens when there are so many conflicting results in
existing papers. Figures 1.1 and 1.2 show how Xen performs better than VMware
in one experiment, nevertheless VMware performs better than Xen in another
experiment [8] [9].
4
Figure 1.1. Relative performance of native Linux (L), XenoLinux (X), VMware workstation 3.2
(V) and User-Mode Linux (U)
Figure 1.2. Passmark – CPU results compared to native (higher values are better)
This is compounded by the fact that organizations are sometimes totally different,
with their hardware, purposes, software, technical compositions, business
constraints and missions. Therefore, it is hard to propose an ideal virtualization
5
technology. However, because of the benefit for improving the cost, performance,
and management; there is an assertive need for an easy to use a model for
configuring efficient virtualized environments .
In this research, I propose to develop a model for suggesting virtual environments.
The model needs to consider given specifications such as hardware
configurations, virtualization platforms, and other considerations in order to
produce practical results. Through an iteration process, I hope to refine the model
to improve the accuracy of its suggestions. Research work in the area of analytical
modeling of Internet applications and underlying server environments produces
different results. Accounting for the capacity provisioning is needed to determine
Internet application service workload. Performance prediction needs determine
response time of the application for a given workload of a specific hardware and
software configuration. This research work can also include bottleneck
identification and tuning to identify system metrics for performance tuning.
Included is application configuration to enable identification of various
application configuration parameters to determine performance goals. The process
of configuring virtualization environments of applications to achieve performance
goals can be enhanced to produce a better approach to making virtualization
decisions. The proposed research focuses on the model of application
configuration.
6
1.2 Contribution:
I propose a model for users to configure efficient virtualized environments. The
scenario of this model uses user interests, considerations, or configurations as
inputs for algorithmic outputs. The output results are used as a guide contains
suggestions to construct a virtualized environment. The model will help to
efficiently configure virtualized environments in an easier way and reduced cost.
It would also help the users to minimize unexpected events driven by inefficient
configurations. It would be a guide for people who are not experts in
virtualization or who cannot afford the cost of virtualization configurations and
tests.
1.3 Related Work:
1.3.1 Optimizing utilization of resource pools in web application servers:
This research work in the area of modeling underlying server environments
produces different results [10]. It can also include bottleneck identification and
tuning to identify system metrics for performance enhancement. In addition, it
includes identification of different application configuration parameters to
determine performance goals. MCEVE is a process of configuring virtualized
environments to achieve performance goals by producing better decisions of
making virtualized environments. MCEVE is focused on the model of application
configuration.
7
1.3.2 Quality in use: Meeting user needs for quality:
This paper describes a framework for software product quality developed for
different type of quality [11]. First type is internal quality which is astatic
properties of the code. Second type is external quality that indicates behavior of
the software when it is executed. Last type is quality in use which is the extent of
whether the software meets the needs of the user or not. The paper defines the
quality in use as a broader view of different concepts such as functionality,
reliability, usability, efficiency, and the like. This framework is needed for
evaluating the MCEVE software or application.
1.3.3 A Quality of Service Management Framework Based on User
Expectations
This paper presents a quality of service management framework based on user
expectations by collecting expectations as well as ratings from the users of a
service then calculating the quality of the service [12]. This approach does not
allow the user to specify, for example, the minimum and maximum expectations.
MCEVE is also based on user expectations; however, it allows the user to specify
weights of these expectations .
1.4 Beneficial Goals:
We consider two beneficial goals of implementing the MCEVE model: Cost
Benefit and Performance Benefit.
8
1.4.1 Cost Benefit:
Cost Efficiency refers to the user who can save time by adopting the appropriate
decisions resulting in hours configuring virtualized environments instead of
spending days researching and comparing existing results. Moreover, the cost can
be reduced by the use of existing reliable results instead of performing tests and
experiments that cost money and time. In fact, the model helps users to configure
virtualized environments in an easier and reduced cost. It helps them to minimize
the cost of unexpected events driven by inefficient configurations. It can be used
as a guide for those who are not experts in virtualization or who cannot afford the
cost of virtualization configurations and tests. By using the Model, a user is able
to configure his preferred virtualized environment and receive suggested results
within min tes. At this point, the Model saves the ser’s time and money to
configure one or more virtualized environments.
1.4.2 Performance Benefit:
Performance can be enhanced by using solutions that are based on the best
performance comparisons. In fact, trying different unbeknown solutions may have
potential failures in their configurations which may lead to inefficient virtualized
environments. The Model, however, produces efficient virtualized environments
that have been tested by trustworthy benchmarks such as SPEC published results
that have been initially used in the Model. I believe it would a safe and trusted
method to use the same configurations that are given by the MCEVE model to
9
build efficient virtualized environments since these configurations have been
tested that they can accomplish certain criteria of performance. For example, a
user needs a high response time webserver; he can highly scale priority to the
Model. After that, the Model model considers highly response time webserver
criterion when it processes the user inputs to produce the most efficient
configurations that meet his expectations.
1.5 Thesis Outline
This thesis report explores various aspects of virtualization and finds the
advantages and disadvantages of each type. In addition, I will consider the
security, usability, and other challenges in existing virtualization types. I will
provide examples of existing virtualization platforms and define them in order to
categorize them based on multi-dimensional considerations according to specific
modeling. These considerations consist of many aspects such as performance,
security, power consumption, utilization, and usability. However, it would be
difficult to explore these considerations within a semester period. Therefore, I
used specific considerations as explained in Chapter 5 to ensure the functionality
and the accuracy of the Model.
10
Chapter 2
Virtualization Technology
2.1 Introduction to Virtualization:
“ he virt al world” is different from “the real world” only in h man life, while
possessing a similar principle or effect. In the computer world, a virtual
environment must be the same as that of a real environment by applications,
though the underlying mechanisms are formally different. Usually, the virtual
environment suggests a misleading image of a machine that has less capability
compared to the physical machine [13]. In computer terms, virtualization literally
describes the separation and isolation of physical machine resources, applications,
and services fairly and securely. Virtualization can be defined as processing of
physical servers to create logical partitions of virtual servers to handle other
applications and distribute workloads [1]. Virtualization has rapidly become a
prime technology for increasing efficiency since it provides incredible flexibility
by allowing different architectures to be deployed on a single machine.
11
Virtualization is a framework of allocating the resources of a single physical
server by implementing multiple isolated logical partitions on the server [14]. To
better understand virtualization, envision a traditional physical computer as one
instance of the operating system that supports one or more application programs.
Moreover, a virtualized computer is a single physical computer that runs software
that abstracts the physical comp ter’s reso rces so that they may be shared
between multiple virtual instances. Virtual instances run their own operating
systems separately so that if any virtual instance crashes, it cannot affect all the
other virtual instances [15]. Virtual machines or guests cannot run without
implementing virtualization environments or platforms that decouple the host
hardware from the host operating system. While this method provides more
operational flexibility, it increases the utilization rate of the underlying physical
machine. Virtual machine concept was in existence since 1960s. It is a refined and
explicit way to enable sharing resources efficiently on the highly expensive
hardware [13]. A virtualization layer provides infrastructural support using the
lower-level resources to create multiple virtual machines that are independent of
and isolated from each other, thus a Virtual Machine Monitor virtualization layer.
Traditionally, VMM is used as a virtualization layer right on top of the hardware
and below the operating system [13]. A hypervisor is an operating system that sits
at the lowest levels of the hardware environment [16]. The hypervisor has become
an ideal delivery mechanism by allowing the same application on lots of systems
without having to physically copy that application onto each system. The
hypervisor architecture can load any different operating system as though it were
12
just another application. It is a very practical way of getting things virtualized
quickly and efficiently.
2.2 Types of virtualization:
2.2.1 Native Virtualization:
Native virtualization influences hardware support for virtualization within a
processor itself to assist in the virtualization effort [17]. It does not emulate a
processor; however, it allows multiple unmodified operating systems to run
together and enables the capability of running on the host processor directly. Intel
and AMD started producing virtualization supported processors in 2006 through
the Intel-VT and AMD-V virtualization extensions.
Figure 2.1. Native Virtualization Architecture
Native virtualization reduces the maintenance overhead to considerably obtain
better performance and restricts eliminates the amount of changes needed in the
13
guest operating system. Native virtualization, on the other hand, requires explicit
support in the host CPU and it is unavailable on all x86/x86_64 processors [18].
2.2.2 Full virtualization:
Full virtualization is nearly complete simulation of the actual hardware to allow
unmodified guest operating system to run on one single machine [18].
Figure 2.2. Full Virtualization Architecture
14
The benefit of full virtualization is to function transparently from the perspective
of the guest OS [19]. Full virtualization eliminates configuration changes that are
required on the guest OS or applications running under that guest. However, full
virtualization in term of system performance can be negatively impacted based on
the workload. The reason of the impact is that the virtualization software creates a
layer of translation that takes time [7].
2.2.3 Paravirtualization:
Paravirtualization uses a hypervisor, and also uses the term virtual machine to
refer to its virtualized operating systems. Unlike full virtualization,
paravirtualization requires changes to the virtualized operating system to allow
the VM to coordinate with the hypervisor that reduces the use of the privileged
instructions that are responsible for the major performance penalties in full
virtualization [19]. Paravirtualization is occasionally referred to as partial
virtualization because it eliminates considerable overhead of trapping and
emulation. However, paravirtualization requires some modification for the guest
operating system to be aware that it is running virtually and managed by the
hypervisor. The cooperative agreement between the guest operating system and
hypervisor guarantees the performance enhancement. Moreover, in order to
modify the guest operating system, the source code of the guest operating system
has to be available [18].
15
Figure 2.3. Para Virtualization Architecture
In general, paravirtualization performs efficiently compare to the other forms of
virtualization; however, it requires the use of a specially modified guest operating
system that understands how to maintain the virtualizing illusion.
2.2.4 Kernel-based Virtual Machine
Kernel-based Virtual Machine (KVM) is a virtual machine implementation using
the operating system's kernel to improve virtual machine performance [20]. KVM
supports native virtualization on x86 processors that provide Intel-VT or AMD-V
extensions; however, Kernel-based Virtual Machine is independent of native
virtualization as well.
16
Figure 2.4. Kernel Level Virtualization Architecture
KVM Hypervisor is indeed a specialized operating system, but it differs only in
that it runs virtual machines rather than applications [21].
2.2.5 Operating system-level virtualization
Operating system level virtualization is unlike both paravirtualization and full
virtualization, operating system-level virtualization does not rely on a hypervisor
[7]. Instead, the host operating system is modified to securely isolate multiple
gusts of an operating system within a single host machine. In this method of
virtualization, a guest is often referred to as a virtual private server (VPS) [22].
Operating system-level virtualization features with nearly native performance
because there is no hypervisor or instruction trapping is necessary. Another
advantage of operating system-level virtualization is that fewer resources are
consumed as there no multiple kernels. However, all virtual private servers share
17
a single kernel; each virtual private server has flexibility to have own operating
system. In addition, these virtual private servers may get compromised or crashed
if the kernel is damaged.
Figure 2.5. Operating system-level Virtualization Architecture
2.2.6 Emulation:
Emulation can be described as replicating a certain computer platform or program
on another platform or program [23]. Emulation is a general technique that
requires the implementation of real hardware completely in software that allows a
guest to interact a virtual device. The emulated virtual devices serve as an adapter,
converting an unsupported interface to a supported one. Emulation enables
viewing documents or running programs on a computer not designed to do so as
pictured in the Figure below.
18
Figure 2.6. Emulator Architecture
2.3 Characteristics of virtualization
2.3.1 Isolation and consolidation:
This is the most important in virtualization when a virtual machine is isolated
and from the host physical machine and other virtual machines. As a result, in
case a virtual machine crashes, that cannot impact the other virtual machines.
Further, consolidation implies combining workloads from separate virtual
machines or applications into a smaller number of systems or applications. In
addition to consolidating existing workloads, virtualization also simplifies the
overview of new applications in data centers or IT centers.
19
2.3.2 Separation and division:
This factor indicates the capability of virtualization to separate many guest
applications and operating systems within one single physical system. Therefore,
the physical system resources are divided between these gusts fairly and
accordingly to resources division method.
2.3.3 Encapsulation:
A virtual machine can be stored represented as a single giant file that contains
entirely the virtual machine operating system, applications, and files. This
encapsulated virtual machine can be presented to an application as a complete
entity that can protect each application so that it does not interfere with another
application.
2.3.4 Efficient utilization
Virtualization provides a mechanism to consolidate applications, along with
existing OS, middleware, and communications environments, on a single shared
system. Therefore, instead of running one application on one particular physical
server and filling data centers with partially used physical servers, each
application can be run one particular virtual server on top of one or a few physical
servers. In this case, efficient power saving and resources utilization can be
achieved using virtualization technologies.
2.3.5 Availability:
The availability means preparedness for providing services in any time these
services are needed [24]. A high available system through the use of virtualization
20
is provided by the form of a primary/backup system in which before any outputs
are seen by the users, the replica that is in the form of a VM image is updated
with the new changes received. So backup is synchronous with the primary one in
the checkpoints. Virtualization platforms maintain the consistency and track any
changes or updates to provide a high as possible of services availability.
2.3.6 Reliability:
A system is reliable if it has continuousness in providing its services. For
example, in case of occurrence of a fault in a part of the system, the whole system
should not stop providing its services [24]. In other words, different parts of the
system should be isolated from each other and virtualization can provide this
required property. Virtualization offers reliable environments where replacement
virtual guests can be immediately and predictably accredited.
2.3.7 Safety:
A safe execution environment is an environment that is provided with safe object
bounds for all operations. These operations must have safe and controlled flow
that facilitates the safety for the entire virtualized system. Virtualization provides
a safe environment to securely execute concurrent operations [24].
2.3.8 Integrity:
The integrity of underlying system is one of the fundamental goals in building a
dependable virtualized environment. A hypervisor is used as trustworthy system
for managing each access or request that comes from a Virtual guest [24].
Therefore, the Hypervisor is the responsible of protecting the host kernel integrity
21
from any attack so that no executions in kernel mode occur without user
authorization. For example, the hypervisor is able to resist any attack comes from
a virtual guest trying to compromise the host system or the host resources.
2.3.9 Resources allocation:
Virtualization can provide the ability of resources provision when a guest
demands for more resources. Most virtualized software environments provide
utilities that enable operational tasks such as provisioning new virtual servers. For
this particular task, the allocation and reallocation of virtual resources can be
accomplished at the run time although.
2.3.10 Live migration:
Live migration means that a virtual machine can be moved immediately from one
server to another with zero down time. Live migration Presents a continuous
practice to the end user and maintains availability guarantees. Virtualization
software developers and processors vendors have worked cooperatively to define
the functionality necessary to ensure that live migration is achievable across a
broad range with no interruption to services. Virtualization greatly eases the task
of application migration to new versions of operating systems for both client and
server applications. Virtualization may even alter the way organizations deploy
desktop technology.
2.3.11 Power Efficiency
The use of virtualization decreases the number of physical servers which
absolutely reduces the power consumption and the energy waste. Not only does it
22
help us in saving the power, but also virtualization reduces the heat that is
produced by the huge number of physical servers that require cooling and air
conditioning. A cloud computing server center can add up the total usage of the
energy demands of a whole server farm with incredible results [25].
2.4 Applications of virtualization
2.4.1 Education:
Virtualization can be a great tool in Education felid for implementing research
and projects environments [26]. Prof. Xiaobo Zhou, who is the Chairman of the
Department of Computer Science, University of Colorado at Colorado Springs
and the director of the Distributed and Internet Systems Lab, uses virtualization
for implementing and eval ating his and his assistants’ research and projects [27].
For teachers and students, virtual Labs can be accomplished to create as many
virtual machines as they need. Further, virtualization is beneficial for training that
removes configuration issues from trainers and trainees. For example, Dr. Edward
Chow, who is a professor the Department of Computer Science, University of
Colorado at Colorado Springs, uses virtualization for his students to learn,
configure, and test LVS DR cluster [28].
2.4.2 Software Evaluation:
Virtualization fairly provides a simple platform to evaluate different Software on
one machine. It although Enables the compatibility between Software and
23
underlying hardware to test features and evaluate Software. Software developers
use a hosted VM for running, testing, and evaluating software generally to avoid
any violation that software may cause at the evaluation duration to not damage the
underlying system.
2.4.3 Enabling the dynamic data center
Virtualization takes the physical boundaries of servers and makes them logical
boundaries, based on resources needed. When servers need to be virtualized, VMs
can be easily moved among physical machines and dynamically reconfigure.
2.4.4 Cloud computing
Cloud computing has become demanded with the explosive growth of social
media sites and the resulting demands. Virtual machines make the cloud possible
because each physical server in the cloud can serve many different purposes at the
same time. It can be said that virtualization of servers is a core foundation of
cloud computing [25].
2.4.5 Load Balancing
Virtualized clusters can implement Load Balancing using virtual machines rather
than using hardware nodes. The example that mentioned above describes Load
Balancing using The Linux Virtual Server-based cluster for real servers that
provides a load balancer running on the Linux operating system [29].
24
2.4.6 Grids
Virtualization based Grids enable configurable VMs and virtual I/O devices to be
placed in grids on server farms anywhere in the world. Amazon Elastic Compute
Cloud (EC2), for example, presents a true virtual computing environment by
allowing customers to launch instances with a variety of operating systems, place
instances in multiple locations, load them with custom applications, manage
network’s access permissions, and run images using as many or few systems as
customers desire [30].
2.4.7 Information Technology Departments:
Virtualization is not limited to the server since the evolving concept of that
desktop virtualization helps Information Technology administrators to create and
manage “desktop virt al machines” on servers within data centers. End users can
access desktop environments at any time and from anywhere through the concept
of desktop virtualization.
2.4.8 Disaster Recovery
The rapid adoption of virtualization technologies has fundamentally changed the
way organizations view the data center. Virtualization is capable to move, copy,
protect and replicate entire server workloads as aggregated units between physical
hosts and virtual guests, which help many organizations to achieve operational
efficiencies and cost savings. The virtualized recovery server can be activated to
take over the running of the workload immediately. The workload can be kept
running in the virtual recovery environment until the primary server has been
25
restored, at which point the workload can be moved back to the restored server
via virtual-to-physical workload replication. Recovery time and point objectives
are achieved without the need for high-cost, complex clustering environments
[31].
2.4.9 Personal use:
User uses Virtualization on their desktops or laptops to provide Security client PC
using VMs instead of separate PC identities. Therefore, they can avoid risks that
come from installing or trying unknown software. VMs are only files on host
system, so if get corrupted, they can be deleted and re-created or recovered easily
using existing snapshots. Another use when users want to run Linux-based
software on Windows computer; so they can achieve that using desktop
virtualization platforms.
2.5 Virtualization Projects:
2.5.1 Xen:
The Xen hypervisor is para virtualization software running directly on computer
hardware replacing the operating system to allow the computer hardware to run
multiple guest operating systems concurrently [32]. Xen currently supports Linux,
NetBSD, FreeBSD, Solaris, Windows, and other common operating systems as
guests running on the hypervisor. Xen hypervisor is developed and maintained by
the Xen.org community. Xen is a free solution licensed under the General Public
26
License (GNU). Xen hypervisor consists of three components: Firstly, Xen
hypervisor that runs directly on the hardware and becomes the interface for all
hardware requests such as CPU, I/O, and disk for the guest operating systems and
manages security and independency of the guest. Secondly, Domain 0 Guest that
has exclusive privileges to access the Xen hypervisor that is not allocated to any
other Domain Guests. These privileges allow it to manage all aspects of Domain
Guests such as starting, stopping, I/O requests, and the like. Thirdly, Domain
Guests that independently operate on the system; however, they are launched and
controlled by the Dom0. These guests are either run with a special modified
operating system referred to as paravirtualizion or un-modified operating systems
leveraging special virtualization hardware such as Intel VT and AMD-V, which is
known as hardware virtual machine (HVM).
Figure 2.7. Xen Architecture
27
2.5.2 VMware:
VMware introduced Full virtualization solutions to x86 systems to address many
of these challenges and transform x86 systems shared hardware infrastructures
that offer full isolation, mobility and operating system choice for application
environments . VMware developed an adaptive virtualization technique that traps
these instructions as they are generated and converts them into safe instructions
that can be virtualized, while allowing all other instructions to be executed
without intervention. This results in a high-performance virtual machine that
matches the host hardware and maintains total software compatibility. VMware
founded this technique and is today the undeniable leader in virtualization
technology. VMware allows multiple operating systems to run unmodified and at
the same time on a standard PC by providing an abstraction of x86 PC hardware
without requiring special hardware support. VMware provide free virtualization
platforms such as VMware Server and enterprise virtualization platforms such as
VMware ESXi and VMware vSphere [33].
28
Figure 2.8. VMware Architecture
2.5.3 Windows Server 2008 R2 – Hyper-V:
Windows Hyper-V virtualizes the system resources of a physical computer,
allowing a virtualized environment for operating systems and applications [34].
Hyper-V is typically used for server computer virtualization. Windows Hyper-V
consist of three core areas of improvement for creating dynamic virtual data
centers: Increased availability for virtualized data centers, Improved management
of virtualized data centers, and A simplified method for physical and virtual
computer deployments by using *.vhd files . Figure 2.9 shows how Hyper-V
looks.
29
Figure 2.9. Windows Server 2008 R2 Hyper-V Architecture
2.5.4 OpenVZ:
OpenVZ is an operating system-level virtualization platform. It is a free open
source virtualization solution that virtualizes servers on the operating system
kernel [35]. OpenVZ simply adds a new layer on top of the operating system to
manage every virtual guest which is called a container. In OpenVZ, the physical
machine that is running OpenVZ is called a host System and a running instance is
called a Virtual Private Server (VPS) . The performance of OpenVZ is closed to
the native performance of the machine (See chapter 3). This indeed makes
OpenVZ a good choice for server consolidation especially for web hosting.
OpenVZ is based on Linux operating system and it only runs in Linux
distributions . It takes a few minutes to setup one container using OpenVZ. This is
because of the usage of Operating System Templates [36].
30
Figure 2.10. OpenVZ Virtualization Architecture
2.5.5 Red Hat Virtualization RHEV:
The Red Hat RHEV is a Kernel-based Virtual Machine (KVM) virtualization
hypervisor [37]. RHEV hypervisor inherits the scalability, security, and
performance of the enterprise-hardened Red Hat Enterprise Linux kernel. Because
RHEV is a KVM hypervisor, it implements an advanced and efficient
virtualization as a Linux kernel module. According to Red Hat, RHEV hypervisor
allows nearly native performance – up to 95% performance for real world
enterprise applications. RHEV hypervisor para-virtualizes network and drivers to
run Red Hat Enterprise Linux and Microsoft Windows virtual machines.
31
Figure 2.11. Redhat RHEV Virtualization Architecture
2.5.6 Virtuozzo:
Virtuozzo is an operating system-level virtualization platform that is built on the
OpenVZ virtualization project [38]. Virtuozzo provides a universal layer from
which all system resources are allocated across every virtual server. Moreover,
Virtuozzo utilizes native kernel processes that produce very low overhead and
native kernel utilization. Therefore, Virtuozzo can run virtual private servers that
achieve closely native performance. The light overhead and efficient design of
Virtuozzo makes it a great virtualization choice for virtualized web hosting
solutions [39].
32
Figure 2.12 Parallel Viertuozzo Virtualization Architecture
2.5.7 Virtual box:
VirtualBox impalements x86, AMD64, and Intel64 virtualization for both
enterprise and home use [40]. While VirtualBox provides high performance, it
does not require hardware virtualization. It is freely available as Open Source
Software under the terms of the GNU General Public License (GPL). VirtualBox
runs on Windows, Linux, Macintosh, and Solaris hosts and supports a large
number of guest operating systems including Windows, DOS, Linux, Solaris and
OpenSolaris, OS/2, and OpenBSD [41].
33
Figure 2.13. Oracle Virtualbox Virtualization Architecture
2.5.8 Linux-VServer:
Linux-VServer is an operating system-level virtualization that enables virtual
private server implementation [42]. Linux-VServer is Linux kernel based that is
developed and distributed as open source software. Linux-VServer provides
virtualization for GNU/Linux systems. It allows to run multiple virtual units at
once using kernel level isolation. Those units are sufficiently isolated to guarantee
the required security, but utilize available resources efficiently, as they run on the
same kernel. The basic concept of the Linux-VServer solution is to separate the
user-space environment into distinct units which are called Virtual Private
Servers. Based on this concept, Linux-VServer allows several guests to run
simultaneously, shared one single kernel, and share the resources in a very secure
and efficient way.
34
Figure 2.14. Linux VServer Virtualization Architecture
35
Chapter 3
Virtual Guest
3.1 Introduction:
Two terms of virtualization exist in the virtualized environments. They are similar
in the fact that a Virtual Machine VM as a Virtual Private Server VPS which is
known as the guest in a virtualized environment. The difference between VM and
VPS is that a VM has its own guest operating system, no matter which kind of
operating system, referred as host operating system, the physical machine runs on.
VPS, on the other hand, uses the kernel of host operating system. Moreover, the
VPS technique is sometimes referred to a lightweight Virtual Machine [8]. The
word “g est” is sed to refer to the virt alized operating system tilized within
any of the above virtualization methods explained in Chapter 1. Therefore a guest
can be used for either a virtual machine in full-virtualization and para-
36
virtualization or a virtual private server in operating system -level virtualization
[7]. This chapter is focused conceptually on virtual gusts, the differentiation
between virtual private server and virtual machine, and indicating some
considerations of virtual guests.
3.2 Virtual Machine:
Virtual machine VM is a machine that actually does not exist as a matter of actual
physical reality; however, it is basically software that is running as it is a physical
machine. The virtual machine mechanism is one of the smartest approaches in the
history of technology; it is a vast revolution and a crucial improvement in the
software evolutions. David Gelernter describes a virtual machine as “a way of
understanding software that frees us to think of software design as machine
design" [43]. Wikipedia defines a virtual machine as a software implementation of
a machine that behaves like a physical machine [44]. A virtual machine provides
an independent system platform which supports the execution of a complete
operating system. The main essential characteristic of a virtual machine is that it
is limited to the resources and abstractions provided by the underlying hypervisor.
Moreover, a virtual machine is a forcefully isolated that can run its own operating
systems and applications regardless of being running on top of a physical
computer. Clearly, a virtual machine behaves just like a physical computer since it
owns virtual software-based CPU, RAM, hard disk and network interface card
NIC. That means an overloaded virtual machine cannot impact other virtual
machines which are running on the same physical machine. In some
37
virtualization types, like Full-virtualization, virtual machine operating system
cannot tell the difference between being running as a virtual machine and a
physical machine. Even applications or services cannot differentiate between the
two cases. However, in case of Para-virtualization type, a virtual machine must be
notified that is running virtually in order to speed up the performance. Xen, for
example, requires guest operating system modification to run in para-virtual mode
that the guest operating system understands virtualized environment to obtain
high performance and better resource isolation [45].
3.2.1 Virtual Machine Architecture
Virtual machine directly interacts with device resources to lower system levels in
such a way that higher-level application layers are unaffected. That allows
multiple operating systems run concurrently on a single physical machine. Figure
3.1 demonstrates the architecture of virtual machine technology.
Figure 3.1. Virtual Machine Architecture
38
The virtual machine architecture consists of the following Virtual resources
which are the specifications which a physical server consists of, the guest
operating system that manages the physical computer resources and application,
and Applications that are running on top of the virtual machines. The virtual
machines run on the physical server using its processors virtually. Each virtual
processor runs on its own thread. Virtualization layer forms a context for each
virtual machine that consists of an address space to completely separate virtual
machines from each other, even from the host operating system.
3.3 Virtual private server
A Virtual private server is a software based virtualization environment that is
called Operating system-level virtualization. Operating system-level virtualization
is defined as a server virtualization method that instead of just having one server,
the kernel allows multiple isolated virtual private servers to run concurrently
using the same operating system hardware. In top of that, the kernel provides
resource management features to limit the activities impacts between the virtual
private servers. A virtual private server actually requires the main physical
machine resources. As stated in Section 3.4, a virtual private server lies mainly in
performance because there is no hypervisor instruction trapping is necessary in
operating system-level virtualization. As a result, a virtual private server performs
nearly as a native physical machine performs. A virtual private server sometime is
named differently such as jail, container, instance and the like. The naming
depends on how they are implemented and what the vendors like to named their
39
approaches uniquely. In general, A virtual private server features with using a
single kernel instance that fewer resources are consumed due to the operating
system overhead of multiple kernels running concurrently compared to a virtual
machine. However, since all virtual private servers share a single kernel,
whenever the kernel crashes or is compromised, all virtual private servers are
compromised as well. Operating system-level virtualization implements the
capability of live migration dynamic load balancing and cluster between virtual
private servers on a single physical server [46]. This kind of virtualization
normally is aimed to web hosting environment because each host machine can run
many virtual private server compared to running virtual machines. Virtual private
servers bridge the gap between shared web hosting services and dedicated hosting
services, giving independence from other customers of the VPS service in
software terms but at less cost than a physical dedicated server. At this point, we
can use Virtual private servers as the right solution to provide independent servers
with not much cost. In addition, by providing the reliability and the flexibility to
Virtual private servers, they can be trusted and used in most types of businesses.
Virtual private server scheme works basically by having many kinds of virtual
web servers on top of an actual or physical web server. Each Virtual private
server shares certainly a given amount of the physical server resources. As a
result, other busy or overloaded Virtual private servers cannot affect their
neighbor web servers. This property is considered the most significant feature of
virtual private server efficiency.
40
3.3.1 VPS Architecture
Virtual private server architecture is based on operating system-level
virtualization that provides the most effective utilization of hardware, software,
and server resources. Each virtual private server performs independently like a
stand-alone server.
Figure 3.2. Virtual Private Server Architecture
In fact, there are at least three prime elements for virtual private server
architecture: System libraries, System software, and Applications.
3.4 Performance comparison between VM and VPS
This section addresses High-performance computing HPC performance
comparisons between different virtualization platforms that cover three prime
virtualization types such full-virtualization, para-virtualization, and operating
system -level virtualization [7]. The evaluation includes the following
virtualization platforms:
41
# Platform Type Version
1 VMWare Server full virtualization 1.0.21
2 Xen paravirtualization 3.0.4.1
3 OpenVZ OS-level virtualization 2.6.16 Table 3.1 Evaluated virtualization platforms
In general, the analysis shows that none of them reached the performance of the
base system perfectly. However, OpenVZ efficiently produced low overhead and
high performance in both file system performance and industry-standard scientific
benchmarks, but additional work must be performed to improve the network
bandwidth performance while also minimizing CPU utilization. Xen, on the other
hand, demonstrated efficient network bandwidth. Moreover, VMWare Server
demonstrated reasonable CPU-bound performance
Figure 3.3. Comparison of latency performance by different message sizes
As shown in Figure 3.3, OpenVZ preformed almost like the base system. Xen
preformed nearly native performance in data transfer with double latency
compared to the base system. However, VMware server caused more than triple
42
times latency compared to the native system performance due to the extreme
virtualization overhead in the full virtualization. Therefore, the order of
virtualization based their performances was Operating system-level virtualization,
para-virtualization, and lastly full-virtualization. And this order emphasize that
while Xen may perform exceptionally well in applications that move large
amounts of data, it is questionable to overtake OpenVZ on applications that
require very low-latency network traffic such as web services.
Figure 3.4. Comparison of read and write performance by different file sizes
Figure 3.4 shows the results of both the reading and writing examinations for the
base system, OpenVZ, and Xen. In fact, I was surprise why VMware server is not
included in this particular experiment. Nevertheless, the results show that
OpenVZ achieves near native performance of file system operations when
compared to the base system while Xen produced overheads of up to 46% and
43
40% in the reading and writing meas rements d e to the overhead of Xen’s
virtualized IO subsystem.
3.5 Virtual Guest Features
3.5.1 Abstraction:
A virtual machine hosts its own guest operating system, services, and
applications. In addition, it is provided with the components found in a physical
computer such as processor, motherboard, VGA card, network card, and other
components. In fact, it reaches these components and uses them as if they are
owned by the virtual machine. Because of this abstraction, virtual machines have
the complete ability to run software that can be run on a physical computer.
3.5.2 Isolation
Each virtual machine can share the host physical resources; however, it remains
completely isolated from other virtual machines. Virtual machines operate
separately as if they are separated physical machines. Assuming there is a one
single physical machine and on top of it there are several virtual running
machines. If one of these virtual machines is being overloaded and its memory
and swap memory are totally consumed, that will not impact the performance of
the remaining virtual machines. The reason of the availability and security of the
virtual machines is the isolation factor.
44
3.5.3 Encapsulation
To understand the idea of the encapsulation, imagine when a virtual machine is
contained in a can that constricts its impact of using virtual hardware resources.
Fundamentally, a virtual machine is a software container that completely
encapsulates a set of virtual hardware resources, an operating system,
applications, and services inside a giant file. Therefore, virtual machines can be
easily managed, copied and moved locally or remotely.
3.5.4 Hardware Independence
This term is important since virtual machines need to be absolutely independent
from the underlying physical machine hardware. Because of the hardware
independence, different virtual machines on top of single physical machine are
able to run different operating systems like Windows or Linux [47].
45
Chapter 4
Proposed Model 4.1 Introduction:
As shown in Figure 4.1, individuals and businesses have differentiations in their
thoughts and perspectives in virtualizing computers. These differentiations are
compounded by the fact that sometimes people decisions of virtualize their
systems are based on the cost, performance, management, software, technical
compositions, business limitations and other effective influences.
Figure 4.1. Different opinions lead to different decisions
46
Consequently, it is inflexible to propose an ideal virtualization technology.
However, because of the benefit for improving the cost, performance, and
management, there is a need of a way to use a model for configuring efficient
virtualized environments .
I propose to develop a model for users to configure efficient virtualized
environments. The scenario of this model uses user interests, considerations, or
configurations as inputs for algorithmic outputs. Figure 4.2 indicates that the
MCEVE model can enclose the gap between different considerations to meet user
expectations. The output results are used as a guide contains suggestions to
construct a virtualized environment.
Figure 4.2. combined views
The MCEVE model will help to efficiently configure virtualized environments in
an easier reduced cost. It would also help them to minimize unexpected events
driven by inefficient configurations. It would be a guide for people who are not
47
experts in virtualization or who cannot afford the cost of virtualization
configurations and tests.
4.2 The MCEVE Model Components:
The MCEVE model is composed of user inputs, an algorithm, and outputs.
4.2.1 User Inputs:
Important user inputs used as multi-dimensional considerations:
1) Hardware: The MCEVE model lists some hardware configurations that have
been added to the database with measurements. These configurations can be CPU
speed, RAM, Capacity and the like.
2) Platforms: This aspect of inputs is important because it is a serious goal of
configuring virtualized environment. In this part, the MCEVE model lists
virtualization technologies that have been tested and added to the database.
3) Constraints: The user may need to restrict the result by constraining the results
to meet his/her expectations.
4) Measurements: The MCEVE model needs facts to determine the best selection
that a configuration is better than another configuration. These facts are existing
measurements that have been expressed formerly, detailed in Chapter 5.
5) Weights: for each measurement the user determines how high or low the
MCEVE model has to consider the measurement by weighting it from 0 to 10 as
low to high, detailed in Chapter 5.
48
These considerations are fundamentally optional, assuming some time the user is
unable to decide or he is not expert to choose the ideal considerations. In this
case, the user can leave the MCEVE Model to decide and suggest the right
solutions based on the provided considerations and parameters. In this research,
the scope of the inputs including specific parameters is explained in Chapter 5.
4.2.2 Configuration Recommendation Algorithm:
The MCEVE model has some algorithmic scenarios requiring user inputs that
must be considered in each stage based on various parameters that have been
performed. The MCEVE model uses the user inputs as criteria so that based on
the parameters it figures out good solutions to the user. The MCEVE model has to
be precise to use as many as possible considerations; however, this results in
increased complexity of the algorithmic model. Basically, the algorithm has three
main stages:
Figure 4.3. the simple Diagram of the MCEVE model algorithm
4.2.3 Outputs:
The MCEVE model produces the best selections “outputs” based on the available
parameters after considering the ser config rations “inp ts”. The outputs consist
of which hardware and virtualization technologies ordered by the best selections
based on the user weighted considerations. Overall, the outputs give the user an
overview of what and which configurations meet his demands.
Input Process Output
49
4.2.4 Database:
It is a warehouse for the numeric parameters which the MCEVE model extracts
and applies to the inputs to produces outputs. Obtaining these parameters is
detailed in Chapter 5.
4.3 The Algorithm of the Model:
Basically, the Model is supposed to process each configuration through sort of an
algorithmic operation. The operation seeks for the best value based on being
either positive or negative. Figure 4.4 explains how each operation must be
processed using this algorithm.
50
Figure 4.4. The Algorithm of the Model
Conf: user configuration, Weight: user configuration weight, Measure:
benchmark measurement, W: Weight value, M: measurement value, Mix:
overall calculation, n: number of resulted solution, and best: best
selection of the overall results.
The algorithmic process starts by receiving three kinds of inputs: configurations
{conf0, conf1, conf2,…}, weights { weight0, weight 1, weight 2,…}, and
measurements { measure0, measure1, measure2, …}. hen the mixt re calc lates
the mixed weighted measurements based on the user configurations. After that,
the mixed results are arrayed for best selection process. Finally, arrayed results
are extracted and ordered based on the higher value as outputs.
51
4.4 Mathematical and Logical Formulas:
There two important formulas that need to be applied on the MCEVE model
process:
1) Filtering:
There are two sets that need to be joined which are inputs and parameters. This
task helps the MCEVE model improve the configuration operation in terms of
time and accuracy. The fundamental idea here is to narrow the comparison
operation instead of processing through entire sets of parameters that are stored in
the database. Let M= {a,b,c, …} and P = { a,b,c, …} where a,b,c R (real
number) . Therefore, the filtered set F = M ∩ P. This operation needs to be
processed by performing a loop applies the intersection operation to incoming
data (inputs) and existing data (parameters) when doing the filtering parameters.
Loop1 looks like:
For example, if cost of a platform does not exist in the database, the MCEVE
model is supposed to ignore that platform when comparing cost.
2) Overall Weighted Considerations and Measurements calculation:
loop1
for each set m M do
function (f = m ∩ p)
52
∑
The equation above is performed to calculate the overall of each host and its
related measurements with each platform by calculating each measurement (M)
times the weight (W) that the user associates to this particular measurement. This
loop is considered as the bridge between loop1 and 3 since it calculates overall
measurements. The loop preforms two main operations: calculating weighted
measurements and compilation of results as one overall. For each operation the
loop2 is:
3) Best Mixed Selection:
The process is to determine the best results between the overall results that are
performed in the previous process. The best value is represented as the maximum
number of a set of values. Let set F= { a,b,c, …} where a,b,c, R. The Solution
S can be functionally obtained by S=max (F) where S R. This loop preforms
the comparisons of the best mix selection of the results that preformed previously.
Loop2
for each set m M do
function (f = m * w)
Loop3
for each set f F do
function (max (f))
53
4.5 The Flow Diagram of the Model:
Figure 4.5. The simple Diagram of the MCEVE model workflow
The MCEVE model workflow consists of three primal transactions:
Input: this is the beginning of the MCEVE model operation when it receives user
inputs. Those inputs are used as matrixes for the MCEVE model to derive the
outputs.
54
Process: this particular transaction would be the heart of the MCEVE model
functionality. Briefly, it receives user configurations then projects some functions
starting with filtering the existing parameters in the database based on the user
configurations. The MCEVE model preforms three main procedures that the
configurations, considerations, weights, and parameters fall under mathematical
and logical operations:
I. Calculates measurements based on the weighted inputs that come from the
user.
II. Calculates overall measurements.
III. Processes comparisons between the overall measurements to determine the
best mix selections as results.
Output: eventually, the MCEVE model projects outputs to the user in a format
that the user can understand. The MCEVE model shows humanitarian perspective
results that are read as solutions for virtualizing computers.
55
Chapter 5
The Web-based Development of
the Model
5.1 Overview:
Because the web technologies enable the development of web applications, the
MCEVE model needs to be developed and implemented as a web based
application and deployed on the World Wide Web. However, before processing
the actual development of the MCEVE model application, it is so highly
recommended that the web application development process needs to be initially
accomplished. This chapter explains in detail the web software development
process of the MCEVE model. This is the fundamental base of the MCEVE
model implementation success. Of course, we need to emphasize that software
development process and software life cycle are accordingly synonyms. As the
book, which is used as a reference in this chapter, uses more the term software
development process; we prefer to remain and use the same term [48].
Additionally, in this chapter, we explain the execution of each software
development phases by introducing the basic concepts and accomplishments. The
56
processed development is more specific to web application development using the
development model named “Web Modeling Lang age Model” detailed in section
5.2.
5.2 The Web Modeling Language Model (WMLM)
WMLM is defined as a development process for visually specifying the structure
of a web application and presenting actual contents in the form of hypertexts.
Figure 5.1 shows that the development life cycle of the MCEVE model undergoes
several stages, each one producing a prototype or a partial version of the
application development.
Figure 5.1. Phases in the WebML development levels
5.2.1 Requirements analysis:
Requirements analysis is the key aspect of project management since it
determines user expectations for a new or maintained application implementation.
57
Requirements analysis depends on a wide interaction between various users or
groups of users to determine accurately the system expectations with resolution of
ambiguity in requirements. During executing the requirements analysis, the
documentation of all aspects of the project development process must be
completed. In fact, this stage requires a team effort which perhaps demands a
combination of hardware, software and human being for engineering the system.
However, since this software development is a simulation of the proposed Model,
I preform the team effort on the scope of the MCEVE model that can be done by
individuals without demanding professional skills. In this stage I attempt to
consider user expectations as the first requirements. In order to achieve this step,
we need to consider what has to be done by identifying the necessary system
architecture, structure, and workflow. Conceptually, the system cycle begins as
user inputs and ends with meaningful outputs back to the user. These inputs are
the user expectations when he/she wants to achieve an efficient virtualized
environment. The outputs, on the other hand, are the suggested solutions based on
algorithmic process that is applied to his/her inputs. In addition, we need to
identify the necessary task, action or activity that must be accomplished during
this step. Consequently, this mission covers as many required considerations as
the available timeframe permits. Thus, these considerations correspondingly
depend on the availability of the parameters, which explained previously in
Chapter 4, in order to acquire accurate results. As a result, the MCEVE model
utilizes the results that SPEC publishes on its website to maintain the accuracy of
58
the MCEVE model functionality. Therefore, the requirements of the MCEVE
model implementation briefly are the following:
First: Users inputs:
1) Hardware configurations: The MCEVE model lists some hardware
configurations that have been added to the database with measurements. These
configurations can be CPU speed, RAM, Capacity and the like.
2) Platforms configurations: This aspect of inputs is important because it is a
significant goal of configuring virtualized environment. In this part, the MCEVE
model lists virtualization technologies that have been tested and added to the
database.
3) Constraints: This input is of the user who wants to restrict the result by
constraining them to meet his/her expectations.
4) Weights: For each measurement, the user determines how high or low the
MCEVE model has to consider the measurement by giving it a weight up to 10 as
low to high. Table 5.1 shows the consideration arrangements and their definitions.
Weight Meaning
0 Do not consider
1-3 Low
4-6 Medium
7-10 High
Table 5.1. Definitions of weight values
59
Second: Algorithmic Process:
The MCEVE model has some algorithmic scenarios, which is explained in
Chapter 4, requiring user inputs that must be considered in each stage based on
various parameters that have been performed. The MCEVE model uses the user
inputs as criteria and figures out good solutions or advice based on the
parameters. The MCEVE model needs to be smart to use as many as possible
considerations; however, this increases the complexity of the algorithmic model.
Third: outputs:
Based on the existing parameters that the database contains, the MCEVE model
prod ces better selections after processing the ser's config rations “inp ts”.
Outputs consist of hardware and virtualization technologies that are ordered by
the best selections based on the user weighted expectations. Overall, the outputs
provide the user with an overview of what and which configurations can meet his
demands.
Fourth: Knowledge base
The MCEVE model needs a warehouse that contains numeric parameters which
can be extracted and applied to user inputs to produces outputs. These parameters
are existing measurements that have been expressed formerly by official
benchmarks such as SPEC. the MCEVE model functions based on these
measurements to determine the right configurations between many configurations
for the user. As mentioned in Chapter 2, there is a tremendous diversity of
virtualization choices that opens endless doors for providing parameters, which is
an important requirement. Hence, the big challenge here is that how to provide the
60
MCEVE model with real measurements that could be used as permanent
standards. In fact, several existing papers that contain ambiguous hardware
specifications reveal different results. Those inconsistent results do not help to
coherently produce efficient solutions and probably affect the accuracy of the
Model. Moreover, performing actual measurements is expensive, needs a lot of
effort, and defiantly considerable time is required as well.
Fundamentally, there are different ways to provide the parameters, on which the
MCEVE model functions, to develop the proposal in real world. These parameters
could be obtained by the following:
1) Assumed measurements: This method is done by proposing hypothetical
parameters as if they were thorough real measurements. The objective of this
method is to experience the functionality of the MCEVE model only, not extract
the real solutions. However, by using assumed measurements, the MCEVE model
does not produce accurate or meaningful outputs. As a result, it may not be
possible to know whether the MCEVE model is working accurately or not. As
explained in Chapter 7, Section 7.2, I have performed a parameters prediction
algorithm; however, it was so hard to validate the produced parameters.
Consequently, I had to cancel this method due to the time frame and I am looking
to validate it in the future.
2) Actual measurements: This method is effectively and realistically related to
the structure of reality as possible. On the other hand, by using actual
measurements, the outputs typically are significant because they are done on
specified standard and can be prohibitive. Unfortunately, this is a highly costing
61
method since it requires different kind of configurations that include hardware,
platform, software, and benchmarks. Not only does it require that, but also it
needs a lot of effort for setting up, configuring, and testing frequently these
configurations.
3) Existing measurements: This method is more realistic than the previous
methods where the parameters are obtained by using existing measurements that
are experienced by researchers in this area. In contract, by using existing
measurements from research, the parameters are not reliable because they were
performed on different unclear specifications. Therefore, these measurements may
not be significant to suggest solutions to users. Fortunately, if there are relevant
measurements have been published by trustworthy publishers, these
measurements can be used as consistent parameters that the MCEVE model
depends on to produces practical results. The following sections explain which
measurements were used in the MCEVE model and how they were transformed
and embedded to the MCEVE model database.
5.2.1.1 Parameters collection:
In fact, we always focus on integrity and accuracy more than other criterions;
however, the limitation of thesis time period, cost of the test bed, and leak of other
requirements of measurements make the parameters collection much difficult. As
a result, the best way is to use a standard to collect accurate and meaningful
measurements as a knowledge base for the Model. Section 5.2.1.2 explains which
measurements were collected and from where they were obtained.
62
5.2.1.2 SPCE virtualization measurements:
After researching in many resources to collect accurate measurements, I found
that these resources cannot be reliable for two reasons. First, some of researchers
did not mention detailed specifications for the hardware that they use. Second,
most of them do not have a standard that helps the MCEVE model to function
accurately. However, the Standard Performance Evaluation Corporation (SPEC)
develops benchmark suites and also reviews and publishes submitted results from
their member organizations and other benchmark licensees [49]. SPECvirt
measures the end-to-end performance of all system components including the
hardware, virtualization platform, and the virtualized guest operating system and
application [50]. The benchmark supports hardware virtualization, operating
system virtualization, and hardware partitioning schemes. In the model, I used all
possible SPECvirt_sc2010 results that have been published by SPEC.
5.2.1.3 Configuration Categories
A. Main Configuration:
1) Brief data: In this point, the user can have access to some basic data and
information. For example, during the configuration he can briefly see some
essential configuration data. Table 5.2 shows which kind of data and information
appear to the user compared to Table 5.3.
Hardware
Vendor IBM HP Bull SAS
Processor Intel X5680 3.33 GHz
CPU 2 chips, 12, cores, 6 cores per chip
63
RAM 549755 MB DDR3 (32 x 16 GB at 1066 Mhz)
NIC 1 x Broadcom NetXtreme II Gigabit Ethernet , 3 x Intel
Gigabit ET
Hard disk 96 x 73 GB 15k RPM SAS
Date 2011
Virtualization Platform
Name ESX
Table 5.2. An example of briefed real physical machine specifications
2) Detailed data: This point contains all details about the specifications that
represent real tested machines from SPEC website. This information appears
depending on the user demand that whenever he/she is interested in specific
configurations, the MCEVE model shows more details about these configurations.
Table 5.3 shows an example of which data appears to the users when he/she
specifies a certain configurations of a virtualized environment.
System Under Test (SUT)
Virt. vendor/Product VMware Inc. ESXi 4.1
# of SUTs 1
Server Vendor IBM Corporation
Server Model x3850 X5
Processor Intel X7560
Processor Speed (MHz) 2270 MHz
Processor Cores 32 cores, 4 chips, 8 cores/chip, 2 threads/core
Primary Cache 32 KB I + 32 KB D on chip per core
Secondary Cache 256 KB I+D on chip per core
Other Cache 24 MB I+D on chip per chip
Memory 1 TB DDR3 (64 x 16 GB Quad Rank x4 PC3-8500 CL7 ECC
DDR3 1066Mhz RDIMM)
Operating System VMware ESXi 4.1.0 Build 304962
File System vmfs3
Other Hardware 1 Cisco 6500-E switch with 1 48-port GbE module and 1 Quad-
port 10GbE module
Other Software N/A
SUT Storage
Storage Controllers 2 x Dual port QLogic Corp. ISP2432-based 4Gb Fibre Channel
1 x IBM ServeRAID MR1015
Storage Enclosure 2 x IBM DS4800, 15 x IBM EXP810
1 x None
Disk Description 224 x 73 GB 15k RPM SAS
64
2 x 73 GB 15k RPM SAS
RAID Level RAID 5
RAID 1
UPS Required? No
SUT Network
Network Adapters 2 x Broadcom NetXtreme II Gigabit Ethernet (dual port,
integrated)
4 x EXAR Neterion x3110 Single Port SR (10Gb, PCI-Express)
1 x Intel Corporation Gigabit Ethernet Conroller (4 ports, PCI-
express)
SUT Ports Total 2
4
4
SUT Ports Used 2
4
4
Network Type Ethernet
Network Speed 1 Gb/s
10 Gb/s
1 Gb/s
Clients
Model x3550M2
# of Clients 6
Processor Intel E5520
Processor Speed (MHz) 2270 MHz
# Processors 2
Memory 32 GB SDRAM
Network Controller 2 x Broadcom NetXtreme II (2 ports each, integrated), Intel
Corporation Gigabit Ethernet Controller (4 ports each, PCI-
express)
Operating System Red Hat Enterprise Linux 5.5 (64-bit)
JVM Version Oracle HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed
mode)
Other Hardware N/A
Other Software N/A
Table 5.3. An example of detailed real physical machine specifications
B. Virtualization Platforms:
The MCEVE model shows all available virtualization platforms that are published
on SPEC. The user can use a platform as a matrix of his/her configurations. Table
5.4 shows an example of the available platforms that the MCEVE model is
currently using because SPEC has not published more than two platforms so far.
65
SPECvirt_sc2010@VMs
VMware ESXi 4.1
Rhvt Red Hat Enterprise Linux 6.0 (KVM)
Table 5.4 Examples of Virtualization Platforms
C. Static and measured Consideration:
Some measurements have been published by SPEC on their website. These
measurements include Virtual Application Server, Virtual Mail Server, Virtual
Web Server, Virtual Idle Server, Response Time on a virtual Application Server,
and Response Time when a virtual Server is being idle. All of these measurements
are used as a knowledge base of the MCEVE model to configure a virtualized
environment that meets a ser’s expectations. In addition, there are some static
data such as number of virtual machines that each configuration can handle. Table
5.5 shows an example of the measurements have been published for specific
configurations of a virtualized environment.
Tile # Application
Server
Web
Server
Server
Per-Tile
Score
Idle Res
Time
Res Time
Application
Server
Overall
Score
Number
of VM
1 33.47 53.61 88.26 97.71 7.51 1.26
1169 72
2 33.45 52.81 88.08 97.13 7.76 1.47
3 33.4 53.64 88.22 97.64 6.39 1.3
4 33.19 52.78 88.17 96.9 6.43 1.58
5 33.26 53.72 88.22 97.56 6.4 1.31
6 33.41 52.89 88.18 97.18 7.75 1.53
7 33.41 53.65 88.31 97.69 7.06 1.34
8 33.43 53.04 88.24 97.31 7.07 1.49
9 33.46 53.66 88.39 97.78 8.03 1.23
10 33.42 52.89 88.12 97.16 7.69 1.42
11 33.47 53.77 88.08 97.74 6.31 1.31
12 33.44 52.89 88.18 97.21 5.62 1.39
Avg 33.40083 53.27917 88.20417 97.4175 7.00167 1.3858
66
Table 5.5. An example of SPEC benchmarks measurements
The MCEVE model just uses the averages of multiple measurements for each
benchmark. Base on that, the data that would be added to the database for each
item is as shown in the following table.
Application
Server Web Server
Server
Per-Tile
Score
Idle Res
Time
Res Time
Application
Server
Overall
Score
Number
of VM
33.40083 53.27917 88.20417 97.4175 7.00167 1.3858 1169 72
Table 5.6. An example of averaging the SPEC benchmarks measurements of all Tiles
D. Calculated Consideration:
Calculating some considerations is important since they have no absolute values.
For example, the cost of purchasing or licensing a virtualization solution differs
from other virtualization solutions. There are effective aspects of licensing a
virtualization solution such as Cost-Per-Application, Server Cost, Storage Cost,
Networking Cost, Power and Cooling Cost, Datacenter Real Estate Cost, Guest
Operating System Licenses and Support Cost, and Infrastructure Cost for
Virtualization Management Solution [51]. Typically, a virtualization platform
edition is licensed on a per-processor basis, which is the number of physical
processors on each host. After researching in VMware vSphere licensing, I
realized that customers can purchase and deploy mix of servers, as required; each
processor in a socket may contain multiple cores. Additionally, they may deploy
VSphere on physical processors that contain up to six processing cores at no
additional charge. However, customers that require limits beyond the process or
entitlements must purchase additional VSphere licenses. Customers who have
67
core entitlements up to 12 cores per CPU may have to purchase Advanced or
Enterprise Plus editions that include the term of having up to 12 processing cores
per CPU [52].
In this research, the focus of calculating licensing a virtualization platform is on a
per-processor basis since it is the most affective factor in purchasing virtualization
solution. The equation that is applied to calculate the cost of purchasing a
virtualization platform is the equation is the sum of the following two cases:
1. If the number of cores per chip is less or equals to the limit:
2. If the number of cores per chip more than the limit:
5.2.2 Application design
5.2.2.1 Data Design:
In data design, planning and forming the parameters, which are identified during
requirements analysis, needs to use a schema that is called relational database DB
[48] . A relational database is a collection of data that is organized as a set of
tables from which consist of attributes and records. The standard user and
applications can access and retrieve data in a relational database by using the
Cost = 1 × u
n: the number of processors
u: the unit cost
𝐂ost 𝒓/𝒎 𝒖
r: the number of cores per a processor
m: the limit number of cores per a processor
68
structured query language (SQL). SQL statements are used both for interactive
queries for information from a relational database and for gathering data for
reports. In this part we focus on designing a relational database for the MCEVE
model and the actual implementation information is explained in Section 5.2.3.
Figure 5.2 is a vis al diagram showing the Crow’s Foot ERD to represent the
relational database for the MCEVE model [53].
Figure 5.2. Crow’s Foot Relational Database diagram for the Model
5.2.2.2 Hypertext Design:
Hypertext design produces site view schemas on top of the data schema that has
been defined previously. The distinguishing feature of the WebML approach is
the emphasis on conceptual modeling for hypertext speciation. This particular
design uses a web application that is accessed over a network such as
the Internet or an intranet. This web application has a web browser-based
access and coded in a browser-supported language such HTML, JAVA, PHP,
69
ASP, Perl, and other web language APIs. The idea of using a web application to
design and implement the MCEVE model is that web applications are popular due
to the ubiquity of web browsers, and the convenience of using a web browser as
a client. The ability to update and maintain web applications without distributing
and installing software on potentially thousands of client computers is a key
reason for their popularity. In addition, the inherent support of web applications
for cross-platform compatibility and having easy access to the MCEVE model
increase the need of implementing it based on a web application.
5.2.2.3 Work flow:
Figure 5.3. the Work flow of the MCEVE model web application
The user uses a form for configuring virtualized environment expectations and
submits his inputs to the server that apply the algorithm to these inputs. After that,
the MCEVE model produces outputs that are sent to the user as suggested
70
solutions. Figure 5.4 below gives a basic overview of that the user needs to input
his configurations with the weights that he decides.
Figure 5.4. Conceptual from for the user to configure a virtualized environment
5.2.3 Implementation
5.2.3.1 Implementation test bed:
In order to implement the MCEVE model, it need basic environmental
requirements, they are:
1) Web server: a Web server hosts websites to make them accessible via a
network such as the Internet or a private local area network through an Internet
address also called URL. In this experiment, The Apache HTTP Server, which is
a project that provides an HTTP web server, is used as a web server. Apache
server supports many web programming languages and interacts with MYSQL
database server [54], [55].
71
2) Web Programming Language: Web programming language is a programming
Language that runs on the web and users can interact with using web browsers.
It features with the ability to deal with a variety of protocols, formats and tasks. It
produces independent web applications that do not require installing particular
software more than having a web browser as an appropriate interface. In the
implementing the Model, we used two common used web languages: HTML and
PHP. HTML, which stands for Hyper Text Markup Language, is not a
programming language; it is a markup language [56]. A markup language is a set
of markup tags to describe web pages. It has the ability to embed PHP code within
the web page. It was used in the implementing in order to organize the origins of
the web pages. PHP, on the other hand, is one of the most popular web languages
that is used widely and deployed on many web servers [57]. PHP has been
supported by most of the web servers today, including Apache, Microsoft Internet
Information Server, Personal Web Server, and many others. PHP can collect form
data, generate dynamic page content, or send and receive cookies. It can do math
operations such as addition, division, subtraction, and multiplication. It can
execute logical operations such as <, >, =, and, or, not, and so on. Additionally,
PHP is considered as an easy language for beginners to learn and develop web
applications on [58].
3) MYSQL Server: MySQL Server is a full-featured database management system
(DBMS) [59], [60]. This requirement is important because the MCEVE model
web application uses MySQL databases.
72
5.2.3.2 Database implementation
Implementing the database involves in reserving the physical space, which is the
area where the tables can be stored, and defining the layout of this space. Tables
can be defined as soon as database space has been defined using the CREATE
TABLE command. The basic syntax of a new table creation is:
For each table, we need to define the attributes and determine a primary key,
which one or more unique attributes or columns that cannot be duplicated.
Obviously, the key must be NOT NULL or a unique index that users are not be
allowed to enter a value for the attribute duplicates the value for an existing row.
The example below indicates that a table named Virtualization_Typs will be
created with the attributes such VT_id, VT_name, VT_desc, VT_pros, and
VT_cons and it will be given the primary key VT_id.
SQL language is used to create tables and manage the data. SQL supports adding
and manipulating data in tables. The basic syntax of inserting a new record is:
CREATE TABLE table-name
(column-name data-type [(length)] [NOT NULL[)… ,]IN tablespace]
# Virtualization_Typs Table CREATE TABLE ` Virtualization_Typs` ( `VT_id` INT( 2 ) NOT NULL PRIMARY KEY , `VT_name` VARCHAR( 100 ) NOT NULL , `VT_desc` TEXT NOT NULL ,
`VT_pros` TEXT NOT NULL , `VT_cons` TEXT NOT NULL ) ENGINE = MYISAM
73
Now, to add data into the previously created table, we just need to execute the
following insertion SQL statements:
5.2.3.3 Application Implementation
This step is very important that the processing components such as the algorithm,
the formals, and the logistics need to be implemented perfectly; otherwise, the
MCEVE model may produce unreliable or meaningless results. In this case, all
processing components need to be converted into computer language with
maintaining the correctness of their main roles. Therefore, the application
implementation has the following stages:
First: Converting user views into a numeric array: The user delivers his opinions
about virtualization configurations that he is thinking of and the priorities of these
configurations. This stage depends completely on the user until he submits these
requirements. The interface in Figure 5.5 shows the interaction between the user
and the application.
INSERT INTO table name [(column-list)] {VALUES (value-list)|sql-query}
INSERT INTO `measurements` VALUES ('1', '00013', '2', '33.49454545’); INSERT INTO `measurements` VALUES ('2', '00013', '2', '53.07772727’); INSERT INTO `measurements` VALUES ('3', '00013', '2', '88.40772727’); INSERT INTO `measurements` VALUES ('4', '00013', '2', '2144’);
INSERT INTO `measurements` VALUES ('5', '00013', '2', '132’); INSERT INTO `measurements` VALUES ('6', '00013', '2', '1.231818182’);
74
Figure 5.5. Form of the MCEVE model that collects user inputs
The MCEVE model gives the user the opportunity to allow it to use all possible
configurations in case the user is unable to choose his own configurations, or he
wants as many suggestions as the MCEVE model can result. In the application
expression, the phase “all” means the MCEVE model can use all possible
config rations. his kind of inp ts is implemented by sing a “list” tool that lists
distinctly parameters that are provided in the database based on real existing
measurements. Figure 5.6 shows how the user is scoped by what the list contains
to ensure the integrity of the user inputs.
75
Figure 5.6 A list of inputs for the user to choose a specific item
Another given opportunity to the user is that he/she can strictly narrow the
configurations based on some specific terms such as a particular hardware
component or application. In the MCEVE model application, this choice is named
“constraints” as shown in Figure 5.6.
Figure 5.7. Constraints area to narrow user configurations
The last component of inputs is the user priorities that he/she is focused on. These
priorities are some benchmarks that have been tested on the underlying
infrastructure. The user can weigh these benchmarks based on his priorities. In the
application, the user can scale his priorities from 0 to 10, thus, the user must
weigh at least one of these benchmarks. Figure 5.8 shows how the user can scale
the weights from 0 to 10 through the lists.
76
Figure 5.8. Weights lists for user to scale his priorities
In general, this scenario is very important since any input is defiantly considered;
hence it affects the result.
Second: receiving and storing the user inputs for filtering purposes: This is an
important scenario as it essentially determines the perspectives that the user looks
at. For example, when the user is specifying on particular processor that means
the MCEVE model needs to yield all possible res lts that relate to the ser’s
configurations. In addition, if the user has selected a particular virtualization
platform, the MCEVE model has to yield all possible results that have been tested
on this virtualization platform. The SQL statement below shows the filtering
operation that is actually done by adding the “WHERE” phase to the SQL
command and the criteria that the parameters must be selected based on. For
example, ass ming the ser chooses “VMware ESXi4.0” as a criterion, the
77
MCEVE model must apply the algorithm to the parameters that relate to
“VMware ESXi4.0” rather than all parameters.
The idea of storing the configuration is for two reasons: to have a way to roll back
and redo the calculation in case a problem occurs during the process and to
display the user considerations to the user himself or even to any user who is
looking at other sers’ considerations.
Third: applying the algorithm on the received considerations: The application
uses the formulas that explained in Chapter 4 to execute mainly two important
calculations:
1) The weighted measurement: this calculation is to result the original
measurement multiplied with the weight that the user configures for it.
loop1
for each set m M do
function (f = m ∩ p)
$db_selected =
mysql_select_db($dbname,$dbconnect;)
$hw_sql = "SELECT HW_id FROM hardware;"
$pf_sql = "SELECT `PF_id` FROM `platforms;"`
$hw_sql2 = " WHERE" ;
$hw=0;
$by= "hw;"
if ($HW_vnd != "0)"
{
$ hw_sql2 = $hw_sql2. "HW_vnd = '$HW_vnd' AND ;"
$ hw=1;
}
if ($HW_processor != "0)"
{
$ hw_sql2 = $hw_sql2. "HW_processor =
'$HW_processor' AND ;"
$ hw=1;
}
.
.
.
$hw_sql2 = " WHERE " : To add a cartiria for the SQL
statement to filter the data based on the user inputs.
78
2) Calculating the overall results: for each configuration based on the previous
calculation, the MCEVE model takes each individual result and combines it with
the others.
Finally: displaying the results: This is the last point that the MCEVE model
finishes the process at when it results suggested configurations ordered based on
the best selection method. These outputs should relate to the user inputs to meet
his expectations, otherwise, the user would not be not satisfied.
5.2.4 Testing and evaluation
Once the implementation is completed, the application needs to be tested to
ensure the important factor which is the functionality. The application must meet
Loop2
for each set m M do
function (f = m * w)
$res_cal = $pr_config_value * $bm_positive * $ms_value ;
$pr_config_value: weight value
$bm_positive: positive or negative measurement ( 1 or -1)
$ms_value: measurement value
𝑹𝒆𝒔 𝑛 ∑𝑾 𝒏 𝑴 𝒏
𝑛
𝑘
while mysql_fetch_array
{
.
.
.
$res_ms = $res_ms + $res_cal ;
.
.
.
}
$res_cal: weighted measurement
$res_ms: overall result
Loop3
for each set f F do
function (max (f))
SELECT * FROM hwoverallresultcash WHERE RS_id =
$ID ORDER BY RS_abs DESC LIMIT $A , $B
ORDER BY RS_abs DESC: A way to order the results from
maximum value to minimum value.
79
this factor since the other factors cannot be examined while functionality of the
application is not accomplished. In order to check how consistently the MCEVE
model functions, I submit some inputs and wait for the MCEVE model to produce
outputs without being interpreted for any reason. The results should be as
expected that my considerations and configurations are included in the process.
The following phases show a real execution of the Model:
First: Inputs:
1) I specify two important considerations that the resulted configuration must be
modern which is during 2011 and the processor can be an Intel “Xeon” model as
shown in the figure bellow.
Figure 5.9. specifying user configurations and considerations
2) I specify my priorities based on Application Performance, Web Server
Performance, and Capacity. Then, I associate each specified priority with an
appropriate weight.
80
Figure 5.10. specifying users priorities with appropriate weights
Second: Process:
After submitting the inputs, the MCEVE model is processing them in order to
produce the results.
Figure 5.11. results are being processed by the Model
Third: Outputs:
Finally, the MCEVE model produces the results showing two sections:
The first section: the chosen configurations, selected platform, and the weighted
priorities.
The second section: The suggested solution listed by the overall results from high
to low, which is higher is better.
81
Figure 5.12 shows real outputs that were results by the MCEVE model based on
my configurations and considerations that I input previously.
Figure 5.12. user configurations, weighted priorities, and suggested solutions
5.2.5 Maintenance:
After testing the applications, I found that there were some problems need to be
fixed. One of these problems is the layout which means how the input form
organized and what information it should contain. In addition, the results layout
needs to be organized in a way that the viewer would be satisfied when her/she is
exploring the results. Another problem that an objective has not been met is the
information provided by the application. I noticed that this information is shallow
that needs additional information about virtualization technology as explained in
82
Chapter 1. Therefore, the information needs to be included in the main page of the
web application that the user can easily access the information of virtualization
technology and virtualization solutions. Moreover, there was incorrect
information displayed in an inappropriate place. For example, the description of
the CPU was 2 TB (128 x 16 GB, Quad Rank x4 PC3-8500 CL7 ECC DDR3
1066MHz LP RDIMM); however, this seems that the application is describing the
RAM instead. This problem is critical and defiantly needs to be fixed and
evaluated over. Finally, the application needs some enhancement that any user
can benefit from other sers’ config ration and experiences with the Model. As a
res lt, these sers’ config rations will be listed as last preformed configurations.
83
Chapter 6
Evaluation and Analysis
6.1 Introduction:
This chapter describes the evaluation and analysis of the MCEVE model in terms
of the following metrics: effectiveness, accuracy, and data transparency. In fact,
the metric can be related to the needs of individuals or who want to experience
virtualizing computers and even small businesses which need to virtualize their
businesses.
6.2 Effectiveness:
The functionality of the MCEVE model depends on the user inputs that any
failure of a specific input can be effective. Hence, the MCEVE model responds to
user changes and functions relatively to these changes. One effective concept is
that any change to the weights must be feasible when the Mode shows the results.
For example, when a user assigns weights to his configurations and he/she
84
reassigns different weights to the same configurations, the MCEVE model must
show different results if that is the case. Figures 6.1 and 6.2 explain how changing
the weights affects the results. The first figure shows that the capacity priority is
weighted with 10 of 10 which is a high factor that the MCEVE model must
critically consider. Consequently, first available virtualization environment
configuration which is suggested by the MCEVE model is capable to run up to
432 virtual servers on a single physical server.
Figure 6.1. The first virtualization environment configuration can run 432 virtual servers
However, when the price is appended to the same inputs with the weight 10 of 10,
the MCEVE model shows different results that are capable to run up to 78 virtual
85
servers on one physical server with much lower cost. Figure [6.2] shows the
results that the MCEVE model resulted.
Figure 6.2. The first virtualization environment configuration has the lowest cost
In addition, when a user specifies his configuration by narrowing down his
expectation, the MCEVE model must consider this specification. For an example,
let assume that the user has specified the configuration by asking for
configurations that use a Solid State Drive (SSD) [61], [62]. The results should be
constraint when all of them relate to SSD; otherwise, the ser’s expectation wo ld
not be met. In the application, we se the inp t box “constraint” to specify this
term by typing “SSD” before the s bmission as shown in Figure [6.4].
86
Figure 6.3. Input box for constraint user configurations
Consequently, The MCEVE model is able to only result suggestions that use SSD
in the virtualized environment configurations. Figure [6.4] shows the first
suggestion description including information about the SSD that is used in the
virtualized infrastructure.
Figure 6.4. SSD Storage descriptions in virtualized environment configurations
Overall, the MCEVE model effectively functions in good manner that any
considered component plays an important role in the results. The demonstration
above indeed gives positively success credits to the Model.
6.3 Accuracy:
This metric demonstrates how precisely and accurately the MCEVE model
produces the results. To evaluate the accuracy factor, I compared a human
process to the Model’s process. For example, if a ser highly considers the cost of
virtualization environment configurations, the MCEVE model must eliminate the
87
highly costing virtualization environment configurations. In order to emphasize
this condition, I identified the highest cost virtualization environment
configurations available in the database, which was 18,000.00 US dollars. In
addition, I identified the lowest cost virtualization environment configurations,
which was 2,500.00 US dollars. To impact this fact, I gave the price the factor a
high priority that any highly costing virtualization environments configurations
are not recommended.
Figure 6.5. User configurations with high price consideration
The results were sufficient that the highest recommended configurations were the
lowest cost starting from {$2500.00
, $4166.66
, $4,500.00
, … , $18,000.00
}.
88
Figure 6.6. User configurations with high capacity consideration
Further, to evaluate the MCEVE model accuracy additionally, I assigned the
weight of capacity with the highest scale number, which means I am looking for
configurations that handle as many virtual guests as possible. As a result, the
array of the suggested configurations where able to run virtual guests as {432,
228, 168, … , 78}, which is true according to the real existing configurations.
Now, by adding more weights, the MCEVE model must show different results
based on the new perspective. Figure [6.7] shows the multiple dimensional
considerations assigned with weights and how the results differ from the two
previous examples.
89
Figure 6.7. Multiple dimensional considerations assigned with weights to the Model
6.4 Efficiency:
Execution time is the time between the submission and result delivering.
Execution time is impacted by the quantity of the considered parameters.
Test bed Specifications
Machine Type Virtual Machine
90
OS Name Windows XP
Web Server Apache 2.5.10
System Manufacturer VMware Virtual Platform
Total Physical Memory 128.00 MB
Total Virtual Memory 2.00 GB
able 6.1. Test bed Specifications
Fig re 6.8. MCEVE execution time
6.5 Data Transparency:
Data transparency in the MCEVE model indicates the data independency which
exists when the code is not subjected to change when any change in the data
occurs. In the MCEVE model design, the data is implemented independently of
the Model application that even this data is necessary for the MCEVE model
processing. Therefore, any change in the data does not require change in the
application in order to access the data effectively. For example, the MCEVE
model extracts all existing benchmarks as shown in Table 6.1 and then lists them
on the application input form to the user as shown in Figure [6.8].
91
Table 6.2. all existing benchmarks
Figure 6.9. All existing benchmarks as listed by the Model
Ass ming the “Overall Performance” benchmark is no longer sef l; therefore, it
needs to be deleted and see whether that impacts the application functionality or
not. Table 6.2 shows the SQL statement that deletes the “Overall Performance”
benchmark and the SQL statement that yields all remaining benchmarks. As
shown in the table, the “Overall Performance” benchmark has been deleted from
the database.
SQL query: SELECT BM_name, BM_desc FROM `benchmarks`; Rows: 8
BM_name BM_desc
Application Aerformance Request per second in application virtual server
Capacity Number of virtual servers per one physical server
Mail Server Performance Request per second in Mail virtual server
Web Server Performance Request per second in Web Servervirtual server
Avg Resp. Time Idel Average response time of Idle virtual server perfo...
Overall Performance Overall Performance of the above performance bench...
Avg Resp. Time App Server Average response time of application virtual serve...
Price The price of purchasing and licensing a virtualiza...
SQL query(1): DELETE FROM `benchmarks` WHERE `BM_id` =4 SQL query(2): SELECT BM_name, BM_desc FROM `benchmarks`; Rows: 7
BM_name BM_desc
Application Aerformance Request per second in application virtual server
Capacity Number of virtual servers per one physical server
Mail Server Performance Request per second in Mail virtual server
Web Server Performance Request per second in Web Servervirtual server
Avg Resp. Time Idel Average response time of Idle virtual server perfo...
Avg Resp. Time App Server Average response time of application virtual serve...
Price The price of purchasing and licensing a virtualiza...
92
Table 6.3. all remaining benchmarks
Figure 6.9. shows how the available benchmarks are listed regardless of any
deleted benchmarks
Figure 6.10. all remaining benchmarks as listed by the Model
In general, data transparency is important requirement that the application cannot
be affected by the data changing especially when there is additional data can be
added to the data knowledge base.
6.6 Experimental Tests:
In these experimental tests, I focused on Configurations # 14 in the databases
because of its capability and performance efficiency. The purpose of these tests is
to figure out how Configurations # 14 can be a good solution for the user
compared to the other configurations. According to Configurations # 14
specifications it is able to accomplish the following benchmarks:
Benchmarks Measurements Description
Application Performance 33.4983 Request per second in application virtual server
Web Server Performance 54.0049 Request per second in Web Server virtual server
Mail Server Performance 88.7385 Request per second in Mail virtual server
Overall Performance 7067 Overall Performance of the above performance
benchmarks
Capacity 432 Number of virtual servers per one physical
server
Avg Resp. Time App
Server
1.20181 Average response time of application virtual
server performance
93
Avg Resp. Time Idel 9.03028 Average response time of Idle virtual server
performance
Price $18,000.00 The price of purchasing and licensing a
virtualization platform
Table 6.4. Configurations # 14 benchmarks
Configurations # 14 consists of Intel Xeon E7- 4870 2.4 GHz , 80 cores, 8 chips,
10 cores/chip, 2 threads/core , 2 TB RAM (128 x 16 GB, Quad Rank x4 PC3-
8500 CL7 ECC DDR3 1066MHz LP RDIMM) , 576 x 73 GB 15k RPM SAS
storage, 2 x Broadcom NetXtreme II Gigabit Ethernet , 4 x Intel x520 10Gb and
so on. It uses RedHat RHEV as a Virtualization Platform [63]. Therefore, it
would be tested against different user weighted priorities to see how the MCEVE
model chooses Configurations # 14 as a good solution for configuring a
virtualized environment. Moreover, we would know whether Configurations # 14
could be chosen as the best suggested solution or not or even how good this
solution is. Additionally, it is important to evaluate why the MCEVE model
would choose Configurations # 14 and based on what the solution is a winner.
Finally, we need to figure out how the MCEVE model deals with Configurations
# 14 whenever the user adds or removes user weighted priorities. These
experimental tests include four scenarios:
First Scenario:
he “Application Performance” factor is highly considered by giving it the weight
10 of 10. hen the “Application Server Response Time” factor is incrementally
considered, which is by increasing the weight in each submission by 1. Finally,
the scores of Configurations #14 are recorded as shown in Table 6.4.
Weighted priorities Conf#14 score
Application Performance Avg Resp. Time App Server
94
10 0 1
10 1 1
10 2 1
10 3 2
10 4 2
10 5 2
10 6 2
10 7 2
10 8 3
10 9 3
10 10 3
Table 6.5. Configurations #14 scores in the first scenario
Second Scenario:
he “Application Server Performance” and the “Application Server Response
Time” factors are highly considered by giving them the weight 10 of 10. Then the
“Overall Performance” factor is incrementally considered by increasing the
weight in each submission by 1. Finally, the scores of Configurations #14 are
recorded as shown in Table 6.5.
Weighted priorities
Conf#14 score Application
Performance
Avg Resp. Time App
Server Overall Performance
10 10 0 3
10 10 1 1
10 10 2 1
10 10 3 1
10 10 4 1
10 10 5 1
10 10 6 1
10 10 7 1
10 10 8 1
10 10 9 1
10 10 10 1
Table 6.6. Configurations #14 scores in the second scenario
Third Scenario:
he “Application Server Performance”, “Application Server Response Time”, and
“Overall Performance” factors are highly considered by giving them the weight
95
10 of 10. hen the “Price” factor is incrementally considered by increasing the
weight in each submission by 1. Finally, the scores of Configurations #14 are
recorded as shown in Table 6.6.
Weighted priorities Conf#14
score Application
Performance
Avg Resp. Time
App Server
Overall
Performance Price
10 10 10 0 1
10 10 10 1 1
10 10 10 2 2
10 10 10 3 2
10 10 10 4 11
10 10 10 5 14
10 10 10 6 14
10 10 10 7 14
10 10 10 8 14
10 10 10 9 14
10 10 10 10 14
Table 6.7. Configurations #14 scores in the third scenario
Fourth Scenario:
he “Application Server Performance”, “Application Server Response Time”, and
“Overall Performance”, factors are highly considered by giving them the weight
10 of 10. However, the “Price” factor is considered partially by giving it the
weight 5 of 10 because the price is too affective (See the reason in the future
work). hen the “Capacity” factor is incrementally considered by increasing the
weight in each submission by 1. Finally, the scores of Configurations #14 are is
recorded as shown in Table 6.7.
Weighted priorities Conf#14
score Application
Performance
Avg Resp. Time App
Server
Overall
Performance Price Capacity
10 10 10 5 0 14
10 10 10 5 1 14
10 10 10 5 2 14
10 10 10 5 3 14
10 10 10 5 4 14
10 10 10 5 5 14
96
10 10 10 5 6 14
10 10 10 5 7 14
10 10 10 5 8 14
10 10 10 5 9 14
10 10 10 5 10 14
Table 6.8. Configurations #14 scores in the fourth scenario
Discussion:
After preforming the previous scenarios and observe Configurations #14 divers
scores, we can realize how the MCEVE model enclose Configurations #14 as a
good solution when the user is focused on term of efficient performance as in the
first and second scenarios. However, when the user considers the price
incrementally, the MCEVE model starts to exclude Configurations #14 because it
costs more than other Configurations as in the third scenario. While the previous
scenarios result various scores for Configurations #14, the last scenario could not
help Configurations #14 to score as a recommended sol tion beca se the “price”
factor still affectively compromises the overall result (See Section 4.4).
Consequently, the MCEVE model could not offer Configurations #14 to the user
since it does not meet the user weighted priorities. Instead, the MCEVE model
offers Configurations #15 to the user as a significant solution that meets his/her
perspectives together. Table 6.8 shows the benchmarks comparisons between
Configurations #14 and #15. As appears in the table, the price plays an affective
role in the overall calculation.
Benchmarks Conf#14 Measurements Conf#15 Measurements
Application Performance 33.4983 33.4751
Web Server Performance 54.0049 53.9654
Mail Server Performance 88.7385 88.6013
Overall Performance 7067 3824
Capacity 432 234
Avg Resp. Time App Server 1.20181 1.17154
97
Avg Resp. Time Idel 9.03028 5.44872
Price $18,000.00 $4,166.67
Table 6.9. benchmarks comparisons between Configurations #14 and #15
Configurations #15 specifications are detailed on SPEC website [64] . The Chart
in Figure 6.10 shows how Configurations #14 is close or far to the user in each
scenario based on the user weighted priorities.
Figure 6.11. Chart shows the scores of conf#14 for the four scenarios (lower is better)
98
Chapter 7
Lessons Learned
This chapter discussed the lessons learned during this thesis and examines the
challenges I encountered and the solutions explored. There are vast documents
and topics related to virtualization. They took a lot of time to digest, understand,
and analyze. The parameters prediction algorithms are not as easy to implement
as I originally thought. Collecting and converting SPEC data into data that the
MCEVE Model uses is a hard task that consumes a lot of time and effort to be
accomplished. Finally, I tried to install and test many kinds of virtualization
solutions, some of them were tested on my desktop while the others were tested
on blade server in UCCS Innovation Security Lab A212 due to the processor
requirements. For example, Xen requires hardware virtualization support and
cannot be satisfied by my desktop.
7.1 Read and research in variant topics related to Virtualization:
I started my research by reading e-books, papers, and documentations about
virtualization in many concepts such as computer virtualization, virtualization
definitions, virtualization architectures, virtualization essentials, virtualization
types, virtualization characteristics, virtualization mechanisms, and current
99
virtualization projects. The virtualization types include Emulation, Full-
Virtualization, Para-Virtualization, OS- level virtualization, Address-space
Virtualization. There are diverse virtualization characteristics including
Hypervisor, host operating system, guest operating system, physical machine,
virtual machine, and virtual machine manager. Many virtualization projects are
active. These include Xen, Parallel, VMware, OpenVZ, QUME, Virtual Box,
Virtual PC, Linux KVM, Intel-VT, and AMD-V. I additionally researched in
advanced virtualization topics such as resources isolation in virtualized
environments, resources migration in virtualized environments, resource
utilization and load balancing issues and solutions in shared virtualized
environments, and virtualization security. There are many variations of the
virtualization technologies. Some have subtle differences.
7.2 Parameters Prediction Algorithms:
Parameters prediction algorithms are used for generating predicted data which can
be the knowledge base for the MCEVE model algorithm. The reason for having a
predicted knowledge base is because the MCEVE algorithm cannot function
without a knowledge base. In addition, it is difficult to collect the actual data
related to system specification, performance, measurement, and often the
specification, the context, and the environment under which data are collected
was incomplete. Most data I found have different benchmark standards that may
impact the accuracy of the MCEVE algorithm. The effectiveness and efficiency of
MCEVE algorithm depends heavily on the knowledge base. The prediction
100
algorithm might have been working, but it needs to be validated. Therefore, I
could not use it to generate algorithmic parameters; instead, I used the results that
were published by SPEC as the knowledge base for the Model. See Chapter 4 and
5.
7.2.1 Hardware Prediction Algorithm:
This algorithm is to generate incremental specifications that represent real
machines. For example, all the entries in Table 7.1 are generated except the first
entry.
CPU Frequency
GHz Cores Name
RAM
(MB)
HD
(GB) NICs Year
Intel 2.5 2 Dual Core 3000 320 1 2007
Intel 2.53 2 Dual Core 3000 320 2 2007
Intel 2.66 2 Dual Core 4000 500 2 2007
Intel 2.8 2 Dual Core 4000 1000 2 2008
Intel 2.93 2 Dual Core 4000 1000 2 2008
Intel 3 4 Quad Core 6000 1500 2 2009 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Table 7.1. Examples of specifications that represent real machines
1) Parameter Generation based on Linear Regression:
A linear regression model attempts to explain the relationship between two or
more variables using a straight line [65]. The Linear regression does not test
whether data are linear; however, it assumes that the data are linear, and finds the
slope and intercept that make a straight line best fit the data. The goal of this
prediction is to generate machine specifications assuming that they are real
machines. The specifications are derived by generating incremental values of
hardware equipment such as CPU, RAM, HD, and NICs regardless of what kind
of CPU, RAM, and so on. There are specific data that affect the performance
101
predictions such as numbers of CPU cores, total capacity of RAM and HD, and
numbers of NIC cards that affect the throughput. The process of the
measurements prediction goes through four steps:
a. Finding a hardware basis: There is a need of having hardware specifications
as a basis to generate hardware specifications instances.
For example, the row below is the basis of the instances in the second step:
CPU Frequency GHz Cores Name RAM (MB) HD (GB) NICs Year
Intel 2.5 2 Dual Core 3000 320 1 2007
Table 7.2. hardware specification basis
b. Generating improved instances: In this step the model generates randomly
hardware specifications instances that represent potential machines in real world.
For example, the table below shows the incremental instances that are generated
randomly based on the basis above:
CPU Frequency GHz Cores Name RAM (MB) HD (GB) NICs Year
Intel 2.8 2 Dual Core 4000 1000 2 2008
Intel 2.93 2 Dual Core 4000 1000 2 2008
Intel 3 4 Quad Core 6000 1500 2 2009 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Table 7.3. Generating incremental hardware instances
7.2.2 Measurements Prediction Algorithm:
his prediction is the base of the Model’s res lts since the generated
measurements affect directly the suggested solutions. Therefore, the estimated
measurements need to be accurate or at least reasonable. The process of the
measurements prediction goes through four steps:
1) Finding a measurement basis: for each measurements prediction there must
be a base value that the linear curve begins from.
102
2) Calculating Machine Change: It means the difference between machine
specifications and the previous machine specifications. The equation that ise used
in this operation is:
3) Measurement Predicting: That can be calculated by adding the measurement
base to the measurement base powers to the change:
( )
4) Current measurement basis: Using continuously the current measurement
prediction results of the previous step as a base for the prediction of the next
measurement.
7.2.3 Prediction Validation:
The computer performance has rapidly improved. Therefore, the generated
specification should meet the improvement as it shown in Figure 7.1. It gives an
overview of the growth in processor performance since the mid-1980s [66].
103
Figure 7.1. Growth of processor performance. Cited from Comp ter Architect re extbook by …
Based on the growth of computer specifications, I developed a script to generate
incremental computer specifications as samples, then to calculate the absolute
change from the basis specification to the last generated specification. The curve
in Figure 7.2 shows the absolute changes of the generated specifications.
Figure 7.2. The results of the absolute changes
0%
1000%
2000%
3000%
4000%
5000%
6000%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Pe
rce
nta
ge o
f ch
ange
Hosts
Absolute Change
104
However, I calculated relatively the changes between each generated
specifications and the previous one as shown Figure 7.3.
Figure 7.3. The results of the relative changes
The reason of calculating relative changes is to predict measurement relatively to
ensure that the results are reasonably representing real world measurements. After
applying the measurement prediction operations to the generated specifications
(explained in Section 7.2.2), the results of the predicted measurements are as
shown in Figure 7.4.
0%
20%
40%
60%
80%
100%
120%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Pe
rce
nta
ge o
f ch
ange
Hosts
Relative Change
105
Figure 7.4. The improvement of the performance based on the relative change
In conclusion, I have experienced algorithms for generating a knowledge base for
The Model. In fact, I thought it would be a worthy way to implement predicted
data as a Knowledge base for the Model. However, the predicted data is missing
the validation part that ensures whether the data is reliable and can be an
appropriate knowledge base for the Model. Due to the timeframe limitation, I
could not preform the validation section.
7.3 Data collection
Data collecting is an important task in software developments that requires
underlying data. In MCEVE model, collecting data is a hard achievement that
needs to be considered. Even we agreed to use SPEC published results, converting
this data is not an easy mission. In fact, providing data based on SPEC results for
the MCEVE model requires few scenarios including main configuration,
virtualization platforms, static and measured consideration, and calculated
consideration. In order to fit these kinds of data into the knowledge database, I
5 7 10 12 15 19 23 27
35 38
53 60
110 118
124
155
0
20
40
60
80
100
120
140
160
180
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Nu
mb
er o
f R
equ
ests
Hosts
Predicted Requests per Second
106
need to provide the appropriate methods to convert the data from HTML results
into raw data. With each published result, I have to collect Brief data that the user
can have access to and get basic information about a certain configuration. For
example, during the configuration he can briefly see some essential configuration
data. Table 5.2 shows which kind of information appears to the user. Additional
detailed data needs to be added to the database in HTML format. This data
contains all details about the specifications that represent real tested machines
from SPEC website. Table 5.3 shows an example of which data appears to the
users when he/she specifies a certain configurations of a virtualized environment.
However, this detailed data is stored in the database as HTML code such as:
Moreover, the MCEVE model shows all available virtualization platforms that are
published on SPEC. The available platforms as shown Table 5.4 need to be
107
inserted into the appropriate table in the database. Many kinds of measurements
have been published by SPEC on their website. These measurements include
Virtual Application Server, Virtual Mail Server, Virtual Web Server, Virtual Idle
Server, Response Time on a virtual Application Server, and Response Time when
a virtual Server is being idle. All of these measurements are used as a knowledge
base of the MCEVE model to configure a virtualized environment that meets a
ser’s expectations. able 5.5 shows an example of the measurements have been
published for specific configurations of a virtualized environment. I calculate the
averages of multiple measurements for each benchmark and add them the
database. Table 5.6 shows an example of averages the SPEC benchmarks
measurements of all Tiles that are ready to add to the database. In addition, there
are some static data such as number of virtual machines need to be add to the
database as a consideration factor. Finally, some considerations need to be
calculated in order to add them to the knowledge base. Section 5.2 explains how
the cost of purchasing or licensing a virtualization solution differs from other
virtualization solutions. This scenario is complex and hard because it requires
reading the policies of licensing a virtualization solution. These scenarios of data
collection consume a lot of time to accomplish collecting the data, calculating the
averages and values, and adding this converted data into the database.
7.4 Testing Xenserver on UCCS HP blade servers:
Divers of virtualization technologies can be installed and run on personal
computers. However, some of the virtualization technologies require certain
108
hardware specifications such as processor architectures. Xen for example, is not
compatible with my desktop since it requires virtualization support processors.
Figure 7.5 show that hardware-assisted virtualization needs to be supported by the
processor in order to enable Hardware Virtual Machine. HVM in Xen is a guest
operating system that runs unchanged in a virtual environment. The guest
operating system itself is unaware that it is not running directly on the hardware
but on top of a hypervisor. This can be accomplished by installing virtualization
supported processors and enabling hardware-assisted virtualization in the BIOS.
Figure 7.5. Intel-VT/AMD-V supported enabled by CPU. Citied from system & network
engineering website https://www.os3.nl
Therefore, I had to test on blade server in UCCS Innovation Security Lab A212
due to the processor requirements of Xen when I tried to install XenServer.
XenServer is a complete, managed server virtualization platform built on the
powerful Xen® hypervisor [67]. Xen technology is widely acknowledged as the
fastest and most secure virtualization software in the industry. XenServer is
designed for efficient management of Windows® and Linux® virtual servers and
109
delivers cost-effective server consolidation and business continuity [68], see
Figure7.6.
Figure 7.6. Xen Hypervisor and Xen Server
Xen server was successfully installed on the HP blade servers in UCCS
Innovation Security Lab A212. The following screen shots were taken during Xen
server installation.
110
Figure 7.7. Xen Server installation screen shots
111
Chapter 8
Future work
Based on what I have achieved, I recommend working in future on a different
evaluation method by configuring a virtualized environment based on the
suggested solutions. The configuration includes hardware specifications, an
operating system, a virtualization platform, network configuration and
applications. Then, we compare the results of an existing configuration
performance with the results of configured virtualized environment by using the
exact benchmarks. In this case, we would be able to know whether the MCEVE
model can guarantee that the suggested solutions are dependable. As a future
work, I recommend identifying fundamentally different opportunities to provide
vast data comes from trustworthy sources that can be used to improve the
MCEVE model in term of giving a lot of productive solutions. Moreover, the
MCEVE model needs to provide more flexibility to users to enhance the manner
of configuring inputs. For instance, the user needs to be able to choose multiple
configurations instead of just selecting only “one” or “all”. In the future, the
112
MCEVE model needs a Data Standard that includes naming agreements for data
elements and other system components, benchmarks standard, data integrity and
consistency standards, and security and database access policies. An important
future work is that there is a need for an offset that can be associated to a large
benchmark s ch as the “Price” to red ce its negative effectiveness. As described
in Section6.6, the benchmark “Price” keeps dominating the overall result since the
cost is considered as an absolute number. Finally, in case that the previous future
works have been accomplished, the MCEVE model application efficiency must
be considered by making the application be durable with these enchantments and
compatible to not be impacted negatively. For example, jQuery can be used to
enhance the application because it jQuery is a JavaScript Library that simplifies
HTML document traversing, event handling, animating, and Ajax interactions for
rapid web development [69]. After a final tuning to the application, it can be
published in the real world and surveyed by IT people to ensure how the MCEVE
model can be acutely accepted by the targeted users.
113
Chapter 9
Conclusion
In conclusion, the diversity of virtualization solutions makes users confused that
they are incapable to choose the right solutions for establishing their virtualized
environments. Expert users can configure an efficient virtualized environment
which requires a lot of effort to research and analyze existing results through
papers, experiments and so on. However, that can be a challenging task for novice
users since it requires difficult trade-offs such as cost and performance. In fact,
the proposed MCEVE model could help these users to efficiently configure
virtualized environments in an easier and reduced cost and minimize unexpected
phenomenon driven by inefficient configurations. The MCEVE model considers
given configurations such as hardware specifications, requirements, and
virtualization platforms. The MCEVE model uses user considerations and
configurations as inputs for algorithmic outputs that are used as a guide
containing suggestions to construct a virtualized environment. Metrics for
evaluating the suggested configurations include Cost, which refers to saving time
by adopting the right decisions resulting in hours configuring virtualized
environments instead of spending days researching and comparing existing results
114
and reducing the cost of performing tests and experiments, and Performance,
which can be enhanced by using solutions accordingly to real solutions rather than
trying different solutions that can lead to high monetary cost. An iteration process
to implement, evaluate and refine the MCEVE model to improve its functionality
and the accuracy of its suggestions proved that the MCEVE model affectively
yields dependable res lts that meet the ser’s expectations.
115
Bibliography
[1] VMware, "Virtualization Overview," 2006. [Online]. Available:
http://www.vmware.com/pdf/virtualization.pdf.
[2] VMware, "Disaster Recovery Virtualization," 2007. [Online]. Available:
http://www.vmware.com/files/pdf/DR_VMware_DoubleTake.pdf.
[3] Wikipedia, "Comparison of platform virtualmachines," 7 July 2011 . [Online].
Available:
http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines.
[4] Intel, "Intel® Virtualization Technology (Intel® VT)," [Online]. Available:
http://www.intel.com/technology/virtualization/technology.htm. [Accessed 1 Jan
2011].
[5] AMD, "AMD Virtualization (AMD-V™) echnology," [Online]. Available:
http://sites.amd.com/us/business/it-solutions/virtualization/Pages/amd-v.aspx.
[Accessed 11 Jan 2011].
[6] Wikipedia, "Comparison of application virtual machines," 15 May 2011. [Online].
Available:
http://en.wikipedia.org/wiki/Comparison_of_application_virtual_machines.
[7] J. P. Walters, Vipin Chaudhary, Minsuk Cha, Salvatore Guercio Jr. and Steve
Gallo, "A Comparison of Virtualization Technologies for HPC," in 22nd
International Conference on Advanced Information Networking and
Applications/DOI 10.1109/AINA.2008.45, 2002.
[8] VMware, "A Performance Comparison of Hypervisors," 2007. [Online]. Available:
http://www.cc.iitd.ernet.in/misc/cloud/hypervisor_performance.pdf.
[9] P. Barham, B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, et a, "Xen and the
art of virtualization," in In Proc. Of the 19th ACM Symposium on Operating
System Principles, Bolton Landing, NY, Oct. 2003..
[10] A. Totok and V. Karamcheti, "Optimizing utilization of resource pools in web
application servers," CONCURRENCY AND COMPUTATION: PRACTICE
AND EXPERIENCE, pp. 2421-2444, 2010.
116
[11] N. Bevan, "Quality in use: Meeting user needs for quality," Journal of Systems and
Software, pp. 89-96, Dec 1999.
[12] Vikas Deora, J. Shao, W. Alex Gray and Nick J. Fiddian, "A Quality of Service
Management Framework Based on User Expectations," Service-Oriented
Computing - ICSOC , pp. 104-114, 2003.
[13] S. Nanda and T.-c. Chiueh, "A Survey on Virtualization Technologies," 2005.
[Online]. Available: http://www.ecsl.cs.sunysb.edu/tr/TR179.pdf. [Accessed 05
Dec 2010].
[14] IBM, "Virtualization — why it's hot and how to get started," [Online]. Available:
http://www-03.ibm.com/systems/virtualization/news/view/062807.html. [Accessed
09 Dec 2010].
[15] White, J., & Pilbeam, A., "A Survey of Virtualization Technologies With
Performance Testing," 2010. [Online]. Available: http://arxiv.org/abs/1010.3233.
[16] A. Metelo, "Not All Server Virtualization Solutions Are Created Equal," IBM
SWG Competitive Project Office, 13 Aug 2010. [Online]. Available:
ftp://ftp.software.ibm.com/software/solutions/2982/Not_All_Server_Virtualization
_Solutions_Are_Created_Equal.pdf.
[17] J. Fornaeus, "Device hypervisors," in Design Automation Conference (DAC), 2010
47th , Alameda, CA, 18 June 2010.
[18] C. Scheffy, Virtualization For Dummies,® AMD Special Edition, AMD Special
Edition ed., Hoboken, NJ: Wiley Publishing, Inc., 2007, pp. 22-28.
[19] Binbin Zhang, Xiaolin Wang, Rongfeng Lai,Liang Yang, Yingwei Luo, Zhenlin
Wang and Xiaoming Li, "A Survey on I/O Virtualization and Optimization," in
The Fifth Annual ChinaGrid Conference/DOI 10.1109/ChinaGrid.2010.54, 2010.
[20] I. Habib, "Virtualization with KVM," 01 Feb 2008. [Online]. Available:
http://www.linuxjournal.com/article/9764.
[21] Redhat, "www.redhat.com," 2009. [Online]. Available:
http://www.redhat.com/f/pdf/rhev/DOC-KVM.pdf.
[22] M. T. Jones, "An overview of virtualization methods, architectures, and
implementations," 29 Dec 2006. [Online]. Available:
http://www.ibm.com/developerworks/linux/library/l-linuxvirt/.
[23] J. Fisher-Ogden, "Abstract Hardware Support for Efficient Virtualization," 12 Dec
2006. [Online]. Available:
117
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.110.1676.
[24] R. Arash, H. Salimi and M. Sharifi, "Improving Software Dependability Using
System-Level Virtualization: A Survey," in 2010 IEEE 24th International
Conference on Advanced Information Networking and Applications Workshops,
IEEE , 2010.
[25] B. Underdahl, M. Lewis and T. and Mueting, Cloud Computing Clusters For
Dummies, AMD Special Edition ed., Hoboken, NJ: Wiley Publishing, Inc., 2010.
[26] I. G. Education, "Virtualization in Education," October 2007. [Online]. Available:
• http://www-
07.ibm.com/solutions/in/education/download/Virtualization%20in%20Education.p
df.
[27] P. X. Zhou, "Distributed and Internet Systems Lab," [Online]. Available:
http://www.cs.uccs.edu/~zbo/Lab.html. [Accessed 07 May 2011].
[28] C. E. Chow, "Homework #3. LVS Cluster," 09 March 2011. [Online]. Available:
http://cs.uccs.edu/~cs526/hw3S2011.html.
[29] T. L. V. Server, "What is virtual server?," 13 Jan 2011. [Online]. Available:
http://www.linuxvirtualserver.org/.
[30] Amazon, "Amazon Elastic Compute Cloud," [Online]. Available:
http://aws.amazon.com/ec2/. [Accessed 23 May 2011].
[31] PlateSpin, "Consolidated Disaster Recovery Using Virtualization," 2007. [Online].
Available:
http://www.meritalk.com/uploads_legacy/whitepapers/White_Paper_Conslidated_
DR_Using_Virtualization.pdf.
[32] Xen, "What is Xen Hypervisor?," 03 March 2010. [Online]. Available:
http://www.xen.org/files/Marketing/WhatisXen.pdf.
[33] V. Inc., "Virtualization Basics," [Online]. Available:
http://www.vmware.com/virtualization/history.html. [Accessed 19 May 2011].
[34] M. Tulloch, Understanding Microsoft Virtualization Solutions, 2nd ed., Microsoft
Press, 2010, pp. 26-30.
[35] M. Ahmed, S. Zahda and M. and Abbasbas, "Server Consolidation Using OpenVZ:
Performance Evaluation," in II th International Conference on Computer and
Information Technology, December, 2008.
118
[36] K. Kolyshkin, "Virtualization in Linux," 1 September 2006. [Online]. Available:
http://download.openvz.org/doc/openvz-intro.pdf.
[37] R. HAT, "RED HAT Enterprise Virtualization Hypervisor," 29 October 2010.
[Online]. Available:
http://www.redhat.com/f/pdf/rhev/RHEV_Hypervisor_Doc076_1010_web.pdf.
[38] OpenVZWiki, "Virtuozzo," 18 June 2008. [Online]. Available:
http://wiki.openvz.org/Virtuozzo.
[39] P. V. Containers, "An Introduction to OS Virtualization and Parallels Virtuozzo
Containers," 27 April 2009. [Online]. Available:
http://www.parallels.com/r/pdf/wp/pvc/Parallels_Virtuozzo_Containers_WP_an_in
troduction_to_os_EN.pdf.
[40] VirtualBox, "Welcome to VirtualBox.org!," Oracle, [Online]. Available:
http://download.virtualbox.org/virtualbox/UserManual.pdf. [Accessed 22 March
2011].
[41] Oracle, "Oracle VM VirtualBox," Oracle, [Online]. Available:
http://www.oracle.com/us/technologies/virtualization/061976.html. [Accessed 22
March 2011].
[42] Linux-VServer.org, "Welcome to Linux-VServer.org," Linux-VServer.org, 17
March 2011. [Online]. Available: http://linux-vserver.org/Welcome_to_Linux-
VServer.org.
[43] D. Gelernter, "Truth, Beauty, and the Virtual Machine," DISCOVER, 1 September
1997 . [Online]. Available:
http://discovermagazine.com/1997/sep/truthbeautyandth1217.
[44] Wikipedia, "Virtual Machine," 12 July 2011. [Online]. Available:
http://en.wikipedia.org/wiki/Virtual_machine.
[45] SUSE, "SUSE Linux Enterprise Server Virtualization with Xen," Novell, Inc, 03
Dec 2010. [Online]. Available:
http://doc.opensuse.org/products_new/draft/SLES/SLES-xen/index.html.
[46] Wikipedia, "Virtual private server," 15 July 2011. [Online]. Available:
http://en.wikipedia.org/wiki/Virtual_private_server.
[47] VMware, "Virtualization Basics," VMware, Inc., [Online]. Available:
http://www.vmware.com/virtualization/virtual-machine.html.
119
[48] Casteleyn, Sven, Florian Daniel, Peter Dolog, and Maristella Matera, Engineering
Web Applications, Springer, 2009, p. 3.4.1 The WebML Model..
[49] SPEC, "SPECvirt_sc2010 Results," 2010. [Online]. Available:
http://www.spec.org/virt_sc2010/results/.
[50] SPEC, "Performance Details," 2010. [Online]. Available:
http://www.spec.org/virt_sc2010/results/res2011q2/virt_sc2010-20110420-00028-
perf.html#Performance Details.
[51] VMware, "VMware Cost-Per- Application Calculator Methodology," 2011.
[Online]. Available: http://www.vmware.com/files/pdf/vmware-cost-per-
application-calculator- methodology.pdf.
[52] VMware, "VMware vSphere™ 4.1 Pricing, Packaging and Licensing Overview,"
August 2010. [Online]. Available:
http://www.vmware.com/files/pdf/vsphere_pricing.pdf.
[53] P. Rob and C. Coronel, Database Systems: Design, Implementation, and
Management, 8th ed., Cengage Learning, 2007, p. 704 pages.
[54] Apache, "Apache Web Server," [Online]. Available: http://www.apache.org/.
[55] Michelle J. Gosselin, Jennifer Schommer, "Confining the Apache Web Server with
Security-Enhanced Linux," 2002. [Online]. Available:
http://www.cse.psu.edu/~tjaeger/cse543-f06/papers/gosselin_apache_selinux.pdf.
[56] W3Schools, "HTML Tutorial," [Online]. Available:
http://www.w3schools.com/html/default.asp. [Accessed 20 June 2011].
[57] Wikipedia, "PHP," [Online]. Available: http://en.wikipedia.org/wiki/PHP.
[58] P. D. Group, "PHP Manual," July 2011. [Online]. Available:
http://www.php.net/manual/en/index.php.
[59] Wikipedia, "MySQL," 12 July 2011. [Online]. Available:
http://en.wikipedia.org/wiki/MySQL.
[60] MySQL, "MySQL 5.5 Reference Manual," Oracle , 2011. [Online]. Available:
http://dev.mysql.com/doc/refman/5.5/en/index.html .
[61] Wikipedia, "Solid state drive," [Online]. Available:
http://en.wikipedia.org/wiki/Solid-state_drive.
[62] Ekker, Neal; Coughlin, Tom; Handy, Jim, "The Solid State Storage," January
120
2009. [Online]. Available:
http://members.snia.org/apps/group_public/download.php/35796/SSSI%20Wht%2
0Paper%20Final.pdf.
[63] IBM, "SPECvirt_sc2010 Result," SPEC, Apr 2011. [Online]. Available:
http://www.spec.org/virt_sc2010/results/res2011q2/virt_sc2010-20110419-00027-
perf.html. [Accessed May 2011].
[64] IBM, "Configurations #15 - SPECvirt_sc2010 Result," SPEC, Jul 2011. [Online].
Available: http://www.spec.org/virt_sc2010/results/res2011q3/virt_sc2010-
20110712-00031-perf.html. [Accessed Aug 2011].
[65] Weibull, Experiment Design and Analysis Reference, ReliaSoft, 2008, p. 438.
[66] &. A. P. John L. Hennessy, Computer Architecture, Morgan Kaufmann ed., 2006.
[67] XEN, "The Xen® hypervisor," [Online]. Available: http://www.xen.org/.
[68] Citrix, "XenServer," Citrix Systems, Inc, [Online]. Available:
http://support.citrix.com/article/CTX124972.
[69] T. j. Project, "jQuery," The jQuery Project, [Online]. Available: http://jquery.com/.
[Accessed 2011 Aug 03].
[70] R. Cordova, "Enhancing Network Scanning For Discovering Vulnerabilities,"
University of Colorado at Colorado Springs, Colorado Springs, CO, 2010.
[71] Citrix, "XenCenter," Citrix Systems, Inc, 07 March 2011. [Online]. Available:
http://community.citrix.com/display/xs/XenCenter.
121
Appendix A
Setting up the Application Testbed
A.1 Web server Installation:
Apache windows-based server is used as an environment to run the web-based
application of the model. Based on this server, we are able run the application and
test it locally. To set up and run apache, follow the next steps:
Step 1: download Apache server:
Apache server v2.5.10 is compatible with Windows XP, Windows server,
Windows Vista, and Windows 7. Apache server v2.5.10 is available on:
http://cs.uccs.edu/~gsc/pub/master/aalmuray/src
Or:
http://gandalf.uccs.edu/~aalmuray/thesis/appserv-win32-2.5.10.exe
Step 2: Install Apache server:
After Apache windows-based server has been downloaded, run the installer
application as next:
122
1) Click on the icon shown in the figure:
Figure A.1. Apache installation icon
2) he installation wizard begins with welcome page. Click “Next”.
Figure A.2. Apache Installation wizard screen 1
2) After reading the agreement of sing this package. Click “I Agree”.
123
Figure A.3. Apache Installation wizard screen 2
4) The wizard asks for choosing the location in which you want to install Apache.
Choose the folder or leave it as defa lt then click “Next”.
Figure A.4. Apache Installation wizard screen 3
5) Select all components to install then click “Next”.
124
Figure A.5. Apache Installation wizard screen 4
5) You need to specify the server name that can be typed in the browser address
bar when access,the mail address of the administrator, and the port. Type the
server name “ localhost”, p t any email address, and the port “80” then “Next”.
Figure A.6. Apache Installation wizard screen 5
125
6) Apache server needs a root password to connect to MySQL server. Type your
password or make it as easy as “1234” since yo are r nning apache locally then
“Next”.
Figure A.7. Apache Installation wizard screen 6
7) Apache server is being installed; you need to wait until the installation is
completed.
126
Figure A.8. Apache Installation wizard screen 7
8) Apache server has been s ccessf lly installed. Check on “Start Apache” and
“Start MySQL” then click “Finish”.
Figure A.9. Apache Installation wizard screen 8
Step 3: Test Apache Server:
127
After apache is installed, you need to test it to make sure is working. In order to
do that, open you internet browser then type http://localhost/ in the address bar,
then visit the local URL. You should see:
Figure A.10. Apache localhost webpage
Step 4: Apache Server Troubleshoot:
In case, apache server did not work on your platform computer, you would need
to visit Apache Support web page on: http://httpd.apache.org/support.html
A.2 Setting up the web Application:
In this step we need to provide all web files and directors of the model web
application. To achieve this step, follow the next:
128
1) Download the zipped file that contains all components of the model web
application from: http://cs.uccs.edu/~gsc/pub/master/aalmuray/src/mceve.zip
2) Unpack the downloaded zipped file to see there is directory that contains files
and subdirectories.
Figure A.11. Unpacking the zipped file
3) The containing components unpacked previously need to be move into the
webserver p blic directory on the path “C:\AppServ\www” or whatever specified
during the installation steps. Therefore, for organizing purposes, create a new
folder with name of “mceve”.
129
Figure A.12. Creating a new folder
4) Copy all unpacked components into the directory that has been created
previously. To copy the components:
a) From the menu “Edit” choose “Select All” or press “Ctrl+A”.
b) From the menu “Edit” choose “Copy” or press “Ctrl+C”.
Figure A.13. Creating a new folder
o paste a copy of the components, from men “Edit” choose “Paste” or press
“Ctrl+V”.
130
Figure A.14. Pasting the copied files and directories
A.3 Building the database:
1) Open the web browser and go to http://localhost/phpMyAdmin/. You will be
asked to enter your credentials information. Enter the sername “root” and the
password that you have chosen in the installation section.
Figure A.15. phpMyAdmin Firewall
2) Create a new database with the name “mceve”.
131
Figure A.16. Creating a MySQL database via phpMyAdmin
Figure A.17. the message after reating the MySQL database
3) Import the database structure and the data from the SQL file name
“mceve_sql.sql” and located the same website directory on the path
“C:\AppServ\www\mceve”.
a. Click on the tab “Import” and then browse the website directory to select the
SQL database file.
132
Figure A.18. Importing a MySQL database via phpMyAdmin
b. scroll the page down ntil yo find a b tton captioned with “Go”, then press
the button to proceed the importation operation.
c. After importing the database successfully you should see a message indicating
it and the tables should be listed on left part of the page.
Figure A.19. Tables of the database appear on the left menu
IV. Connect the database to the web application:
1) In the website directory, there is a confirmation file named “config.php”. Open
this practical file and configure it correctly:
133
Figure A.20. The content of the “config.php” file
2) Now, you should be able to access and run the Model successfully on
“http://localhost/mceve/”.
Figure A.21. Testing the application webpage
$dbname = "mceve" ;
$dbuser = "root" ;
$dbpass = "****" ;
134
A.4 Install additional tools:
a. PHP Coder:
PHP Coder is free software that has an Integrated Development Environment for
PHP programming. PHP Coder Features with Full Integration of the PHP
Interpreter and the PHP documentation, Integrated Preview window, Full Syntax
Highlighting for HTML and PHP, AutoComplete for frequently used text
constructs, Project manager, Tag Buttons and all the standard editing functions
like almost unlimited undo, copy and paste, searching, and more. PHP Coder
download is available on http://www.phpide.de.
Figure A.22. PHP Coder software
b. WinRAR:
It is powerful software that archives data in RAR and ZIP file format, reduces the
size of email attachments, decompress many zipped file formats. This software is
a trial version and available on http://www.rarlab.com.
135
Appendix B
The Manuel of the Application
and Data Access
This appendix describes how to use the Model web application and how to
manage the data that the Model uses.
B.1 Input:
On the main interface of the Model web application, a “Start” b tton appears to
the user. Once the user clicks on the button, an input interface is loaded and
shown to the users. There are two main types of inputs:
B.1.1 User Configurations:
In this kind of input there are to section:
First: Equipment:
It is the set of physical resources and the virtualization platform that the user
wants in the suggested solutions.
Second: Constraints:
136
A constraint is an element factor that works as a bottleneck. It restricts an entity,
project, or system. The user can type a specific factor such as kind of processors,
a certain vendor, or the like.
Figure B.1. Resources that the user can specify
As shown in figure B.1, there are many different resources that the user can
specify and there is an input box for typing his constraint. In addition, the user can
make his constraints be Mandatory, which means the model must result only
suggestions that relate to these constraints, or optional to show all results relate to
the constraints beside other possible results.
137
B.1.1 Measurements Priorities:
A priority is an order of importance or urgency that represents the ser’s
important thoughts. In this part of inputs the user chooses one or more different
benchmarks or measurements based on his priority.
Figure B.2. Measurements priorities
After accomplishing all entries, the user needs to submit theses inputs to the
model for the next step.
B.2 Process:
In the process stage the Model application preforms the input filtering,
algorithmic process, and computing the results that are explained in Chapter 4 and
Chapter 5. During the very short execution time, the user cannot control or disturb
138
the progress. The figures B.3 and B.4 show the interfaces that appear to the user
indicating that the results are in progress.
Figure B.3. The interface indicating the results are in progress(1)
Figure B.4. The interface indicating the results are in progress (2)
139
B.3 Outputs:
This interface is what the user wants to see at the end. The outputs consist of the
user configurations that the user has chosen, the weighted priorities that the user
has scaled, and list of suggested solutions that perhaps meet the ser’s
expectations. Figure B.5 shows an example of the interface that the user should
see at the end of the process. This interface can be read and controlled by the user.
As shown in figure B.6, the user can brewers more suggestion if the current
suggestion are not appropriate to the user.
140
Figure B.5. The interface showing the results
Figure B.6. Tools for showing more results
141
B.4 Database Access:
As administrator, accessing the database can be done through MySQL server. In
Apache localhost server the administrator can visits the link:
http://localhost/phpMyAdmin/.
Figure B.7. phpMyAdmin asking for credential information
As shown in Figure B.7, Apache phpMyAdmin asks for the credential
information which is the user name and the password that are entered during the
installation. After entering the correct login information, an interface will appear
to the administrator and the list of the Databases that have been created
previously. As shown in Figure B.8, when the administrator select the Model
database, all containing tables will be listed on the left side of the window.
142
Figure B.8. phpMyAdmin interface showing the Model database and the list of tables
The administrator can add user more data into a table by selecting it and using the
appropriate tab s ch as “Insert” which allows the ser to enter additional data
through an input form as shown in figure B.9
143
Figure B.9. The interface for entering more data into a table
Additionally, the user can browse the content of each table and modify or delete a
single or multiple rows as shown in figure B.10
Figure B.10. Browsing the content of a table
B.5 Additional Components:
144
The user can explore more information about virtualization types, characteristics,
applications, projects, and the like. In addition, there are some details for each
result such as exploring more information about a set of configurations or more
details about the platform that this set uses. Figures B.11, B.12, B.13, and B.14
show some examples of the additional information that the user can explore.
Figure B.11. Information about virtualization types
145
Figure B.12. Information about existing virtualization projects
146
Figure B.13. Additional information about a virtualization platform
147
Figure B.14. More details about specific configurations
148
Appendix C
Tutorials
C.1 PHP:
PHP was created in 1994 by the famous programmer Rasmus Lerdorf. PHP in the
beginning sed to be known as “Personal Home Page", today, however, it is
known as "PHP: Hypertext Preprocessor". The initial goal of making PHP is to
create dynamic web pages that make the web site be more interactive. It became
widely-used around the world. PHP is considered now an open-source language.
Moreover, PHP is one of “high-level" languages. Therefore, it is easier to learn
than other programming languages. According to Wikipedia, article named
“PHP ,” “PHP was originally designed for use in Web site development, but
rapidly grew to become a much more robust language. PHP's primary use is as an
"embedded" scripting language, which means that the actual PHP code is
embedded in HTML code. When used in this way, PHP enables your web server
to process web pages before they're displayed in the user's web browser ”.
149
Figure C.1. The usage of PHP compared to other web programing languages
C.1.1 PHP Overview
PHP stands for hypertext preprocessor (personal home page). It is a server side
programming language that is used to create dynamic web pages. It can be
embedded into HTML pages. It can create web pages faster than HTML or
JavaScript. In addition, it is uses some commands of C or C++. The PHP code is
enclosed in special start and end processing instr ctions “ <? php … ?> “ that
allow the programmer to jump into and out of PHP mode .
Figure C.2. Web request processing with and without PHP
150
The big difference between PHP and JavaScript is that PHP code is executed on
the server side; however, it generating only HTML code then sent to the client
that makes it difficult to read the source code in the client side. According to the
article, titled “Basics of P”, addresses that “As its name ("PHP: Hypertext
Preprocessor") suggests, PHP derives its power by "preprocessing" hypertext on
the server side. This generally means that when the PHP script (saved as a .php
file) runs on your web server, it performs the programmed actions, and returns
HTML code that will then be sent back to your customer's web browser. The PHP
script itself is not included in the HTML that is sent to the browser, so the PHP
code is invisible and sec re to the ser.” hat means whenever someone browsers
a PHP page, All requests on that page will be sent its web server that processes
the requests. However, the web server will deliver the results in form of HTML to
the user. If the user opens the source of the page, he will find that all code is
HTML form, no functions, variables, or statements appear.
C.1.2 PHP properties:
PHP can collect form data, generate dynamic page content, or send and receive
cookies. It can do math operations such as summing, dividing, subtracting, and
multiplying. It can execute logical operations such as <, >, =, and, or, not, and the
like. A strong feature for PHP, and danger at the same time, is that PHP can
generate files, and save them in the file system, as a way of printing information
out, forming a server-side cache for your dynamic content . One of the strongest
and most significant features in PHP is its support for a wide range of databases
151
(see figure C.3). Writing a database-enabled web page is incredibly simple. The
following databases are currently supported: MySQL, ODBC, dBase, Unix dbm,
SQLite, IBM DB, Oracle, and more . PHP supports calling or talking to services
via using protocols such as POP3, HTTP, IMAP, SNMP, and other protocol .
PHP can control files by many utility functions such as converting them from
types into other types, search engine functions, the IRC Gateway functions,
compression functions, calendar conversion functions, translation functions, and
the like. This research is not enough to list all the benefits that PHP can offer.
Figure C.3. The connectivity between PHP and other resources
C.1.3 PHP Programing tutorial:
Before you continue you should have a basic understanding of HTML. If you
want to study this subject first, find the tutorials on http://www.w3schools.com.
List of PHP tutorial content:
PHP Basic
PHP HOME http://www.w3schools.com/php/default.asp
PHP Intro http://www.w3schools.com/php/php_intro.asp
PHP Install http://www.w3schools.com/php/php_install.asp
PHP Syntax http://www.w3schools.com/php/php_syntax.asp
PHP Variables http://www.w3schools.com/php/php_variables.asp
152
PHP String http://www.w3schools.com/php/php_string.asp
PHP Operators http://www.w3schools.com/php/php_operators.asp
PHP If...Else http://www.w3schools.com/php/php_if_else.asp
PHP Switch http://www.w3schools.com/php/php_switch.asp
PHP Arrays http://www.w3schools.com/php/php_arrays.asp
PHP While Loops http://www.w3schools.com/php/php_looping.asp
PHP For Loops http://www.w3schools.com/php/php_looping_for.asp
PHP Functions http://www.w3schools.com/php/php_functions.asp
PHP Forms http://www.w3schools.com/php/php_forms.asp
PHP $_GET http://www.w3schools.com/php/php_get.asp
PHP $_POST http://www.w3schools.com/php/php_post.asp
PHP Advanced
PHP Date http://www.w3schools.com/php/php_date.asp
PHP Include http://www.w3schools.com/php/php_includes.asp
PHP File http://www.w3schools.com/php/php_file.asp
PHP File Upload http://www.w3schools.com/php/php_file_upload.asp
PHP Cookies http://www.w3schools.com/php/php_cookies.asp
PHP Sessions http://www.w3schools.com/php/php_sessions.asp
PHP E-mail http://www.w3schools.com/php/php_mail.asp
PHP Secure E-mail http://www.w3schools.com/php/php_secure_mail.asp
PHP Error http://www.w3schools.com/php/php_error.asp
PHP Exception http://www.w3schools.com/php/php_exception.asp
PHP Filter http://www.w3schools.com/php/php_filter.asp
PHP Database
MySQL Introduction http://www.w3schools.com/php/php_mysql_intro.asp
MySQL Connect http://www.w3schools.com/php/php_mysql_connect.asp
MySQL Create http://www.w3schools.com/php/php_mysql_create.asp
MySQL Insert http://www.w3schools.com/php/php_mysql_insert.asp
MySQL Select http://www.w3schools.com/php/php_mysql_select.asp
MySQL Where http://www.w3schools.com/php/php_mysql_where.asp
MySQL Order By http://www.w3schools.com/php/php_mysql_order_by.asp
MySQL Update http://www.w3schools.com/php/php_mysql_update.asp
MySQL Delete http://www.w3schools.com/php/php_mysql_delete.asp
PHP ODBC http://www.w3schools.com/php/php_db_odbc.asp
PHP XML
XML Expat Parser http://www.w3schools.com/php/php_xml_parser_expat.asp
XML DOM http://www.w3schools.com/php/php_xml_dom.asp
XML SimpleXML http://www.w3schools.com/php/php_xml_simplexml.asp
PHP and AJAX
AJAX Intro http://www.w3schools.com/php/php_ajax_intro.asp
AJAX PHP http://www.w3schools.com/php/php_ajax_php.asp
AJAX Database http://www.w3schools.com/php/php_ajax_database.asp
AJAX XML http://www.w3schools.com/php/php_ajax_xml.asp
AJAX Live Search http://www.w3schools.com/php/php_ajax_livesearch.asp
AJAX RSS Reader http://www.w3schools.com/php/php_ajax_rss_reader.asp
AJAX Poll http://www.w3schools.com/php/php_ajax_poll.asp
PHP Reference
PHP Array http://www.w3schools.com/php/php_ref_array.asp
PHP Calendar http://www.w3schools.com/php/php_ref_calendar.asp
153
PHP Date http://www.w3schools.com/php/php_ref_date.asp
PHP Directory http://www.w3schools.com/php/php_ref_directory.asp
PHP Error http://www.w3schools.com/php/php_ref_error.asp
PHP File system http://www.w3schools.com/php/php_ref_filesystem.asp
PHP Filter http://www.w3schools.com/php/php_ref_filter.asp
PHP FTP http://www.w3schools.com/php/php_ref_ftp.asp
PHP HTTP http://www.w3schools.com/php/php_ref_http.asp
PHP Lib xml http://www.w3schools.com/php/php_ref_libxml.asp
PHP Mail http://www.w3schools.com/php/php_ref_mail.asp
PHP Math http://www.w3schools.com/php/php_ref_math.asp
PHP Misc http://www.w3schools.com/php/php_ref_misc.asp
PHP MySQL http://www.w3schools.com/php/php_ref_mysql.asp
PHP SimpleXML http://www.w3schools.com/php/php_ref_simplexml.asp
PHP String http://www.w3schools.com/php/php_ref_string.asp
PHP XML http://www.w3schools.com/php/php_ref_xml.asp
PHP Zip http://www.w3schools.com/php/php_ref_zip.asp
Table C.1. List of PHP tutorial content.
C.2 SQL:
Structured Query Language (SQL) is a computer language aimed at accessing,
manipulating, and querying data stored in relational databases. SQL is used by
relational database technologies such as Oracle, Microsoft Access, SQL Server,
MySQL, Sybase and others. SQL functions have two categories: data definition
language and data manipulation language. SQL is used by a lot of developers and
supported by most repositories.
C.2.1 SQL Features:
The most important use of SQL is to execute queries against a relational database.
These queries can be retrieving data from a database, inserting records in a
database, updating records in a database, deleting records from a database, and
creating new databases. Additionally, SQL can create new tables in a database,
create stored procedures in a database, create views in a database, and set
154
permissions on tables and rules. Structured Query Language is based upon
relational algebra and tuple relational calculus. SQL supports PROJECTION,
JOIN and UNION and other applications.
C.2.2 SQL Programing tutorial:
SQL is an ANSI (American National Standards Institute) standard. however, there
are many different versions of the SQL language that most of them support at
least the major commands (such as SELECT, UPDATE, DELETE, INSERT,
WHERE) in a similar manner.
List of SQL tutorial content:
SQL Basic
SQL HOME http://www.w3schools.com/sql/default.asp
SQL Intro http://www.w3schools.com/sql/sql_intro.asp
SQL Syntax http://www.w3schools.com/sql/sql_syntax.asp
SQL Select http://www.w3schools.com/sql/sql_select.asp
SQL Distinct http://www.w3schools.com/sql/sql_distinct.asp
SQL Where http://www.w3schools.com/sql/sql_where.asp
SQL And & Or http://www.w3schools.com/sql/sql_and_or.asp
SQL Order By http://www.w3schools.com/sql/sql_orderby.asp
SQL Insert http://www.w3schools.com/sql/sql_insert.asp
SQL Update http://www.w3schools.com/sql/sql_update.asp
SQL Delete http://www.w3schools.com/sql/sql_delete.asp
SQL Demo
SQL Try It http://www.w3schools.com/sql/sql_tryit.asp
SQL Advanced
SQL Top http://www.w3schools.com/sql/sql_top.asp
SQL Like http://www.w3schools.com/sql/sql_like.asp
SQL Wildcards http://www.w3schools.com/sql/sql_wildcards.asp
SQL In http://www.w3schools.com/sql/sql_in.asp
SQL Between http://www.w3schools.com/sql/sql_between.asp
SQL Alias http://www.w3schools.com/sql/sql_alias.asp
SQL Joins http://www.w3schools.com/sql/sql_join.asp
SQL Inner Join http://www.w3schools.com/sql/sql_join_inner.asp
SQL Left Join http://www.w3schools.com/sql/sql_join_left.asp
SQL Right Join http://www.w3schools.com/sql/sql_join_right.asp
SQL Full Join http://www.w3schools.com/sql/sql_join_full.asp
SQL Union http://www.w3schools.com/sql/sql_union.asp
155
SQL Select Into http://www.w3schools.com/sql/sql_select_into.asp
SQL Create DB http://www.w3schools.com/sql/sql_create_db.asp
SQL Create Table http://www.w3schools.com/sql/sql_create_table.asp
SQL Constraints http://www.w3schools.com/sql/sql_constraints.asp
SQL Not Null http://www.w3schools.com/sql/sql_notnull.asp
SQL Unique http://www.w3schools.com/sql/sql_unique.asp
SQL Primary Key http://www.w3schools.com/sql/sql_primarykey.asp
SQL Foreign Key http://www.w3schools.com/sql/sql_foreignkey.asp
SQL Check http://www.w3schools.com/sql/sql_check.asp
SQL Default http://www.w3schools.com/sql/sql_default.asp
SQL Create Index http://www.w3schools.com/sql/sql_create_index.asp
SQL Drop http://www.w3schools.com/sql/sql_drop.asp
SQL Alter http://www.w3schools.com/sql/sql_alter.asp
SQL Increment http://www.w3schools.com/sql/sql_autoincrement.asp
SQL Views http://www.w3schools.com/sql/sql_view.asp
SQL Dates http://www.w3schools.com/sql/sql_dates.asp
SQL Nulls http://www.w3schools.com/sql/sql_null_values.asp
SQL isnull() http://www.w3schools.com/sql/sql_isnull.asp
SQL Data Types http://www.w3schools.com/sql/sql_datatypes.asp
SQL Functions
SQL Functions http://www.w3schools.com/sql/sql_functions.asp
SQL avg() http://www.w3schools.com/sql/sql_func_avg.asp
SQL count() http://www.w3schools.com/sql/sql_func_count.asp
SQL first() http://www.w3schools.com/sql/sql_func_first.asp
SQL last() http://www.w3schools.com/sql/sql_func_last.asp
SQL max() http://www.w3schools.com/sql/sql_func_max.asp
SQL min() http://www.w3schools.com/sql/sql_func_min.asp
SQL sum() http://www.w3schools.com/sql/sql_func_sum.asp
SQL Group By http://www.w3schools.com/sql/sql_groupby.asp
SQL Having http://www.w3schools.com/sql/sql_having.asp
SQL ucase() http://www.w3schools.com/sql/sql_func_ucase.asp
SQL lcase() http://www.w3schools.com/sql/sql_func_lcase.asp
SQL mid() http://www.w3schools.com/sql/sql_func_mid.asp
SQL len() http://www.w3schools.com/sql/sql_func_len.asp
SQL round() http://www.w3schools.com/sql/sql_func_round.asp
SQL now() http://www.w3schools.com/sql/sql_func_now.asp
SQL format() http://www.w3schools.com/sql/sql_func_format.asp
SQL Quick Ref http://www.w3schools.com/sql/sql_quickref.asp
SQL Hosting http://www.w3schools.com/sql/sql_hosting.asp
SQL Summary http://www.w3schools.com/sql/sql_summary.asp
Table C.2. List of SQL tutorial content
156
Appendix D
Questions and Answers
about Choosing
Virtualization Solutions
Below, some articles and posts show that questions and answers about right
solutions for constructing virtualized environments. However, some of these
articles and posts give different answers and directions. That increases the
confusion of choosing the right hardware, virtualization platform, and other
requirements. In contract, some of the articles and posts are submitted by
some virt alization sol tions vendors. Each vendor’s s bmissions indicate
that they always have better solutions.
D.1 List of articles and posts:
[1] Choosing the Right Desktop Virtualization Platform,
http://www.vmworld.com/docs/DOC-4796
[2] Choosing the Right Hardware for Server Virtualization,
http://www.silicon.com/white-papers/view/components/choosing-the-right-
hardware-for-server-virtualization-60472107/#
157
[3] Choosing the right virtualization tech for your environment,
http://www.zdnet.com/news/choosing-the-right-virtualization-tech-for-your-
environment/187126
[4] Choosing the right virtualization technology, http://www.itworld.com/choosing-
virtualization-environment-080111
[5] Choosing Virtualization platform,
http://www.webhostingtalk.com/showthread.php?t=916228
[6] Choosing virtualization solution,
http://www.microshell.com/sysadmin/virtualization/choosing-virtualization-
solution/
[7] Containers vs. Hypervisors: Choosing the Best Virtualization Technology,
http://www.linux.com/news/technology-feature/virtualization/300057-
containers-vs-hypervisors-choosing-the-best-virtualization-technology-
[8] Going Green Through Computer Virtualization,
http://www.paystolivegreen.com/2008/08/going-green-through-computer-
virtualization/
[9] KVM or Xen? Choosing a Virtualization Platform,
http://www.linux.com/news/enterprise/systems-management/327628-kvm-or-
xen-choosing-a-virtualization-platform
[10] Managing Virtualization, Part 3: Choosing a Virtualization Approach,
http://anildesai.net/index.php/2006/07/choosing-a-virtualization-approach/
[11] Revisit: choosing virtualization solution,
http://www.microshell.com/sysadmin/virtualization/revisit-choosing-
virtualization-solution/
[12] VMware: Choosing Virtualization,
http://www2.cit.cornell.edu/services/systems_support/vmware.html
[13] 10 questions to ask when choosing a virtualization solution,
http://www.eetimes.com/design/eda-design/4006406/10-questions-to-ask-when-
choosing-a-virtualization-solution
[14] Advantages of VMware Virtualization,
http://www.vmware.com/files/pdf/vmware_advantage.pdf
[15] Choosing a virtualization application,
http://www.macworld.com/article/137305/2008/12/choosevm.html