---------------------------------------------------------------------------------------------------------------------
UNIT I INTRODUCTION
Introduction to Cloud Computing – Definition of Cloud – Evolution of Cloud Computing –
Underlying Principles of Parallel and Distributed Computing – Cloud Characteristics – Elasticity
in Cloud – On-demand Provisioning.
--------------------------------------------------------------------------------------------------------------------
1.1 Introduction to Cloud Computing
Over the last three decades, businesses that use computing resources have learned to face
a vast array of buzzwords like grid computing, utility computing, autonomic computing, on-
demand computing and so on.
A new buzzword named cloud computing is presently in state-of-the-art and it is generating
all sorts of confusion about what it actually means.
In history, the term cloud has been used as a metaphor for the Internet.
Figure 1.1 Illustration of network diagram
● This usage of the term was originally derived from its common illustration in network
diagrams as an outline of a cloud and the symbolic representation used to represent the
transport of data across the network to an endpoint location on the other side of the
network.
● Figure 1.1 illustrates the network diagram which includes the symbolic representation of
cloud
● The cloud computing concepts were initiated in 1961, when Professor John McCarthy
suggested that computer time-sharing technology might lead to a future where computing
power and specific applications might be sold through a utility-type business model.
● This idea became very popular in the late 1960s, but in mid 1970s the idea vanished away
when it became clear that the IT Industries of the day were unable to sustain such a
innovative computing model. However, since the turn of the millennium, the concept has
been restored.
● Utility computing is the provision of computational resources and storage resources as a
metered service, similar to those provided by a traditional public utility company. This is
not a new idea. This form of computing is growing in popularity, however, as companies
have begun to extend the model to a cloud computing paradigm providing virtual servers
that IT departments and users can access on demand.
● In early days, enterprises used the utility computing model primarily for non-mission-
critical requirements, but that is quickly changing as trust and reliability issues are
resolved.
● Research analysts and technology vendors are inclined to define cloud computing very
closely, as a new type of utility computing that basically uses virtual servers that have
been made available to third parties via the Internet.
● Others aimed to describe the term cloud computing using a very broad, all-inclusive
application of the virtual computing platform. They confront that anything beyond the
network firewall limit is in the cloud.
● A more softened view of cloud computing considers it the delivery of computational
resources from a location other than the one from which the end users are computing.
● The cloud sees no borders and thus has made the world a much smaller place. Similar to
that the Internet is also global in scope but respects only established communication
paths.
● People from everywhere now have access to other people from anywhere else.
● Globalization of computing assets may be the major contribution the cloud has made to
date. For this reason, the cloud is the subject of many complex geopolitical issues.
● Cloud computing is viewed as a resource available as a service for virtual data centers.
Cloud computing and virtual data centers are different one.
● For example, Amazon’s S3 is Simple Storage Service. This is a data storage service
designed for use across the Internet. It is designed to create web scalable computing
easier for developers.
● Another example is Google Apps. This provides online access via a web browser to the
most common office and business applications used today. The Google server stores all
the software and user data.
● Managed service providers (MSPs) offers one of the oldest form of cloud computing.
● A managed service is an application that is accessible to an organization’s IT
infrastructure rather than to end users which include virus scanning for email, anti spam
services such as Postini, desktop management services offered by CenterBeam or
Everdream, and application performance monitoring.
● Grid computing is often confused with cloud computing. Grid computing is a form of
distributed computing model that implements a virtual supercomputer made up of a
cluster of networked or Inter networked computers involved to perform very large tasks.
● Most of the cloud computing deployments in market today are powered by grid
computing implementations and are billed like utilities, but cloud computing paradigm is
evolved next step away from the grid utility model.
● The majority of cloud computing infrastructure consists of time tested and highly reliable
services built on servers with varying levels of virtualized technologies, which are
delivered via large scale data centers operating under various service level agreements
that require 99.9999% uptime.
1.2 Definition of cloud
The term “cloud" refers to servers that are accessed over the Internet, and the software and
databases that run on those servers. Cloud servers are located in data centers all over the
world.
By using cloud computing, users and companies don't have to manage physical servers
themselves or run software applications on their own machines.
The cloud enables users to access the same files and applications from almost any device,
because the computing and storage takes place on servers in a data center, instead of locally
on the user device
In other words, cloud computing is a distributed computing model over a network and means
the ability to run a program on many connected components at a same time.
1.2.1 How Cloud Computing Works?
A cloud computing system keeps its critical data on internet servers rather than
distributing copies of data files to individual client devices.
Video-sharing cloud services like Netflix, for example, stream data across the internet to
a player application on the viewing device rather than sending customers DVD or Blu-ray
physical discs.
Figure 1.2 Cloud Computing Paradigm
● In the cloud computing environment, real server machines are replaced by virtual
machines. Such virtual machines do not physically exist and can therefore be moved
around and scaled up or down on the fly without affecting the cloud user as like a natural
cloud.
● Cloud refers to software, platform, and Infrastructure that are sold as a service. The
services accessed remotely through the Internet
● The cloud users can simply log on to the network without installing anything. They do
not pay for hardware and maintenance. But the service providers pay for physical
equipment and maintenance.
● The concept of cloud computing becomes much more understandable when one begins to
think about what modern IT environments always require scalable capacity or additional
capabilities to their infrastructure dynamically, without investing money in the purchase
of new infrastructure, all the while without needing to conduct training for new personnel
and without the need for licensing new software.
● The cloud model is composed of three components.
Figure 1.3 Cloud Components
Clients are simple computers might be laptop, tablet, mobile phone.
Categories of clients are Mobile clients, Thin clients and Thick clients.
Mobile clients which includes smartphones and PDAs
Thin clients which include servers without internal hardware. Usage of this type of clients
leads to Low hardware cost, Low IT Cost, Less power consumption and less noise.
Thick clients which includes regular computers.
Data Center is a collection of servers and it contains clients requested applications.
Distributed Server in which server is distributed in different geographical locations
What are the different types of cloud deployments?
The most common cloud deployments are:
Private cloud: A private cloud is a server, data center, or distributed network wholly dedicated
to one organization.
Public cloud: A public cloud is a service run by an external vendor that may include servers in
one or multiple data centers. Unlike a private cloud, public clouds are shared by multiple
organizations. Using virtual machines, individual servers may be shared by different companies,
a situation that is called "multitenancy" because multiple tenants are renting server space within
the same server.
Hybrid cloud: Hybrid cloud deployments combine public and private clouds, and may even
include on-premises legacy servers. An organization may use their private cloud for some
services and their public cloud for others, or they may use the public cloud as backup for their
private cloud.
Multicloud: Multicloud is a type of cloud deployment that involves using multiple public
clouds.
1.3 Evolution of Cloud Computing
It is important to understand the evolution of computing in order to get an appreciation of how IT
based environments got into the cloud environment.
Looking at the evolution of the computing hardware itself, from the first generation to the fourth
generation of computers, shows how the IT industry’s got from there to here.
The hardware is a part of the evolutionary process. As hardware evolved, so did the software. As
networking evolved, so did the rules for how computers communicate. The development of such
rules or protocols, helped to drive the evolution of Internet software.
Establishing a common protocol for the Internet led directly to rapid growth in the number of
users online.
Today, enterprises discuss about the uses of IPv6 (Internet Protocol version 6) to ease addressing
concerns and for improving the methods used to communicate over the Internet.
Usage of web browsers led to a stable migration away from the traditional data center model to a
cloud computing based model. And also, impact of technologies such as server virtualization,
parallel processing, vector processing, symmetric multiprocessing, and massively parallel
processing fueled radical change in IT era.
1.3.1 Hardware Evolution
The first step along the evolutionary path of computers occurred in 1930, when binary arithmetic
was developed and became the foundation of computer processing technology, terminology, and
programming languages.
Calculating devices date back to at least as early as 1642, when a device that could mechanically
add numbers was invented. Adding devices evolved from the abacus. It was a significant
milestone in the history of computers.
In 1939, the Berry brothers invented an electronic computer capable of operating digitally.
Computations were performed using vacuum-tube technology.
1.3.1. First-Generation Computers
The first generation of modern computers can be traced to 1943, when the Mark I and
Colossus computers were developed, albeit for quite different purposes.
With financial backing from IBM (then International Business Machines Corporation),
the Mark I was designed and developed at Harvard University.
It was a general-purpose electromechanical programmable computer. Colossus, on the
other hand, was an electronic computer built in Britain at the end 1943. Colossus was the
world’s first programmable, digital, electronic, computing device.
Figure 1.4 Colossus
First-generation computers were built using hard-wired circuits and vacuum tubes
(thermionic valves). Data was stored using paper punch cards.
1.3.1.2 Second-Generation Computers
Another general-purpose computer of this era was ENIAC (Electronic Numerical
Integrator and Computer).
This was the first Turing-complete, digital computer capable of being reprogrammed to
solve a full range of computing problems,6 although earlier machines had been built with
some of these properties.
ENIAC’s original purpose was to calculate artillery firing tables for the U.S. Army’s
Ballistic Research Laboratory.
ENIAC contained 18,000 thermionic valves, weighed over 60,000 pounds, and
consumed 25 kilowatts of electrical power per hour.
Figure 1.5 ENIAC
ENIAC was capable of performing 100,000 calculations a second. Within a year after its
completion, however, the invention of the transistor meant that the inefficient thermionic
valves could be replaced with smaller, more reliable components, thus marking another
major step in the history of computing.
The computers were used mainly by universities and government agencies.
1.3.1.3 Third-Generation Computers
Kilby’s invention started an explosion in third-generation computers. Even though the
first integrated circuit was produced in September 1958 microchips were not used in
computers until 1963.
While mainframe computers like the IBM 360 increased storage and processing
capabilities, the integrated circuit allowed the development of minicomputers that began
to bring computing into many smaller businesses.
Large-scale integration of circuits led to the development of very small processing units,
the next step along the evolutionary trail of computing.
In November 1971, Intel released the world’s first commercial microprocessor, the Intel
4004 The 4004 was the first complete CPU on one chip and became the first
commercially available microprocessor.
Figure 1.6 Intel 4004
It was possible because of the development of new silicon gate technology that enabled
engineers to integrate a much greater number of transistors on a chip that would perform
at a much faster speed. This development enabled the rise of the fourth-generation
computer platforms.
1.3.1.4 Fourth-Generation Computers
The fourth-generation computers that were being developed at this time utilized a
microprocessor that put the computer’s processing capabilities on a single integrated
circuit chip.
By combining random access memory (RAM), developed by Intel, fourth-generation
computers were faster than ever before and had much smaller footprints. The 4004
processor was capable of “only” 60,000 instructions per second. As technology
progressed, however, new processors brought even more speed and computing capability
to users.
The microprocessors that evolved from the 4004 allowed manufacturers to begin
developing personal computers small enough and cheap enough to be purchased by the
general public. The first commercially available personal computer was the MITS Altair
8800, released at the end of 1974.
Even though microprocessing power, memory and data storage capacities have increased
by many orders of magnitude since the invention of the 4004 processor, the technology
for large-scale integration (LSI) or very-large-scale integration (VLSI) microchips has
not changed all that much. For this reason, most of today’s computers still fall into the
category of fourth-generation computers.
1.3.2 Internet Software Evolution
The Internet is named after the Internet Protocol, the standard communications protocol used by
every computer on the Internet. The conceptual foundation for creation of the Internet was
significantly developed by three individuals.
1.3.2.1 Establishing a Common Protocol for the Internet
Since the lower-level protocol layers were provided by the IMP host interface, the NCP
essentially provided a transport layer consisting of the ARPANET Host-to-Host Protocol
(AHHP) and the Initial Connection Protocol (ICP). The AHHP specified how to transmit
a unidirectional, flow-controlled data stream between two hosts. The ICP specified how
to establish a bidirectional pair of data streams between a pair of connected host
processes.
Application protocols such as File Transfer Protocol (FTP), used for file transfers, and
Simple Mail Transfer Protocol (SMTP), used for sending email, accessed network
services through an interface to the top layer of the NCP.
It was actually Robert Kahn and Vinton Cerf who built on what was learned with NCP to
develop the TCP/IP networking protocol we use today.
TCP/IP quickly became the most widely used network protocol in the world. The
Internet’s open nature and use of the more efficient TCP/IP protocol became the
cornerstone of an internetworking design that has become the most widely used network
protocol in the world. The history of TCP/IP reflects an interdependent design.
1.3.2.2 Evolution of Ipv6
The amazing growth of the Internet throughout the 1990s caused a vast reduction in the
number of free IP addresses available under IPv4. IPv4 was never designed to scale to
global levels. To increase available address space, it had to process data packets that were
larger (i.e., that contained more bits of data).
This resulted in a longer IP address and that caused problems for existing hardware and
software.
Solving those problems required the design, development, and implementation of a new
architecture and new hardware to support it. It also required changes to all of the TCP/IP
routing software.
After examining a number of proposals, the Internet Engineering Task Force (IETF)
settled on IPv6, which was released in January 1995 as RFC 1752. Ipv6 is sometimes
called the Next Generation Internet Protocol (IPNG) or TCP/IP v6.
Following release of the RFP, a number of organizations began working toward making
the new protocol the de facto standard. Fast-forward nearly a decade later, and by 2004,
IPv6 was widely available from industry as an integrated TCP/IP protocol and was
supported by most new Internet networking equipment.
1.3.2.3. Finding a Common Method to Communicate Using the Internet Protocol
In the 1960s, twenty years after Vannevar Bush proposed MEMEX, the word hypertext
was coined by Ted Nelson. Ted Nelson was one of the major visionaries of the coming
hypertext revolution. He knew that the technology of his time could never handle the
explosive growth of information that was proliferating across the planet.
Nelson popularized the hypertext concept, but it was Douglas Engelbart who developed
the first working hypertext systems.
Part of this effort required that he developed the mouse, the graphical user interface
(GUI), and the first working hypertext system, named NLS (derived from oN-Line
System). NLS was designed to cross reference research papers for sharing among
geographically distributed researchers.
NLS provided groupware capabilities, screen sharing among remote users, and reference
links for moving between sentences within a research paper and from one research paper
to another. Engelbart’s NLS system was chosen as the second node on the ARPANET,
giving him a role in the invention of the Internet as well as the World Wide Web.
In the 1980s, a precursor to the web as we know it today was developed in Europe by
Tim Berners-Lee and Robert Cailliau. Its popularity skyrocketed, in large part because
Apple Computer delivered its HyperCard product free with every Macintosh bought at
that time. In 1987, the effects of hypertext rippled through the industrial community.
HyperCard was the first hypertext editing system available to the general public, and it
caught on very quickly In the 1980s, a precursor to the web as we know it today was
developed in Europe by Tim Berners-Lee and Robert Cailliau.
Its popularity skyrocketed, in large part because Apple Computer delivered its HyperCard
product free with every Macintosh bought at that time. In 1987, the effects of hypertext
rippled through the industrial community. HyperCard was the first hypertext editing
system available to the general public, and it caught on very quickly.
1.3.2.4 Building a Common Interface to the Internet
In the fall of 1990, Berners-Lee developed the first web browser featuring an integrated
editor that could create hypertext documents. He installed the application on his and
Cailliau’s computers, and they both began communicating via the world’s first web
server, at info.cern.ch, on December 25, 1990.
A few months later, in August 1991, Berners-Lee posted a notice on a newsgroup called
alt.hypertext that provided information about where one could download the web server
and browser.
Once this information hit the newsgroup, new web servers began appearing all over the
world almost immediately.
1.3.2.5 The Appearance of Cloud Formations- From One Computer to a Grid of Many
Two decades ago, computers were clustered together to form a single larger computer in
order to simulate a supercomputer and harness greater processing power. This technique
was common and was used by many IT departments.
Clustering, as it was called, allowed one to configure computers using special protocols
so they could “talk” to each other. The purpose was to balance the computational load
across several machines, dividing up units of work and spreading it across multiple
processors. To the user, it made little difference which CPU executed an application.
Cluster management software ensured that the CPU with the most available processing
capability at that time was used to run the code.
A key to efficient cluster management was engineering where the data was to be held.
This process became known as data residency.
Computers in the cluster were usually physically connected to magnetic disks that stored
and retrieved a data while the CPUs performed input/output (I/O) processes quickly and
efficiently.
The issues of storage management, migration of data, and security provisioning were key
to any proposed solution in order for a grid model to succeed.
A toolkit called Globus21 was created to solve these issues, but the infrastructure
hardware available still has not progressed to a level where true grid computing can be
wholly achieved. The Globus Toolkit is an open source software toolkit used for building
grid systems and applications.
The cloud is helping to propagate the grid computing model. Cloud-resident entities such
as data centers have taken the concepts of grid computing and bundled them into service
offerings that appeal to other entities that do not want the burden of infrastructure but do
want the capabilities hosted from those data centers.
One of the most well-known of the new cloud service providers is Amazon’s S3 (Simple
Storage Service) third party storage solution. Amazon S3 is storage for the Internet.
1.3.3. Server Virtualization
● Virtualization is a method of running multiple independent virtual operating systems on a
single physical computer. This approach maximizes the return on investment for the
computer.
● The creation and management of virtual machines has often been called platform
virtualization.
● Platform virtualization is performed on a given computer (hardware platform) by
software called a control program.
● Parallel processing is performed by the simultaneous execution of multiple program
instructions that have been allocated across multiple processors with the objective of
running a program in less time.
● The next advancement in parallel processing was multiprogramming.
● In a multiprogramming system, multiple programs submitted by users are allowed to use
the processor for a short time, each taking turns and having exclusive time with the
processor in order to execute instructions.
● This approach is called as round robin scheduling (RR scheduling). It is one of the oldest,
simplest, fairest, and most widely used scheduling algorithms, designed especially for
time-sharing systems.
● Vector processing was developed to increase processing performance by operating in a
multitasking manner.
● Matrix operations were added to computers to allow a single instruction to manipulate
two arrays of numbers performing arithmetic operations. This was valuable in certain
types of applications in which data occurred in the form of vectors or matrices.
● The next advancement was the development of symmetric multiprocessing systems
(SMP) to address the problem of resource management in master or slave models. In
SMP systems, each processor is equally capable and responsible for managing the
workflow as it passes through the system.
● Massive parallel processing (MPP) is used in computer architecture circles to refer to a
computer system with many independent arithmetic units or entire microprocessors,
which run in parallel.
1.4 Underlying Principles of Parallel and Distributed Computing
1.4.1 Elements of parallel computing
What is parallel processing?
Processing of multiple tasks simultaneously on multiple processors is called parallel processing.
The parallel program consists of multiple active processes (tasks) simultaneously solving a given
problem. A given task is divided into multiple subtasks using a divide-and-conquer technique,
and each subtask is processed on a different central processing unit (CPU).
Programming on a multiprocessor system using the divide-and-conquer technique is called
parallel programming.
The development of parallel processing is being influenced by many factors. The prominent
among them include the following:
Computational requirements are ever increasing in the areas of both scientific and
business computing. The technical computing problems, which require high-speed
computational power, are related to life sciences, aerospace, geographical information
systems, mechanical design and analysis, and the like.
Sequential architectures are reaching physical limitations as they are constrained by the
speed of light and thermodynamics laws. The speed at which sequential CPUs can
operate is reaching saturation point (no more vertical growth), and hence an alternative
way to get high computational speed is to connect multiple CPUs (opportunity for
horizontal growth).
Hardware improvements in pipelining, superscalar, and the like are non-scalable and
require sophisticated compiler technology. Developing such compiler technology is a
difficult task.
Vector processing works well for certain kinds of problems. It is suitable mostly for
scientific problems (involving lots of matrix operations) and graphical processing. It is
not useful for other areas, such as databases.
The technology of parallel processing is mature and can be exploited commercially; there
is already significant R&D work on development tools and environments.
Significant development in networking technology is paving the way for heterogeneous
computing.
1.4.2 Hardware architectures for parallel processing
The core elements of parallel processing are CPUs. Based on the number of instruction and data
streams that can be processed simultaneously, computing systems are classified into the
following four categories:
Single-instruction, single-data (SISD) systems
Single-instruction, multiple-data (SIMD) systems
Multiple-instruction, single-data (MISD) systems
Multiple-instruction, multiple-data (MIMD) systems
1.4.2.1 Single-instruction, single-data (SISD) systems
An SISD computing system is a uniprocessor machine capable of executing a single instruction,
which operates on a single data stream. (in Figure 1.7)
In SISD, machine instructions are processed sequentially; hence computers adopting this model
are popularly called sequential computers.
Figure 1.7 Single-instruction, single-data (SISD) architecture.
Most conventional computers are built using the SISD model. All the instructions and data to be
processed have to be stored in primary memory.
The speed of the processing element in the SISD model is limited by the rate at which the
computer can transfer information internally. Dominant representative SISD systems are IBM
PC, Macintosh, and workstations.
1.4.2.2 Single-instruction, multiple-data (SIMD) systems
An SIMD computing system is a multiprocessor machine capable of executing the same
instruction on all the CPUs but operating on different data streams (see Figure 1.8).
Machines based on an SIMD model are well suited to scientific computing since they involve
lots of vector and matrix operations. For instance, statements such as
Ci = Ai * Bi
can be passed to all the processing elements (PEs); organized data elements of vectors A and B
can be divided into multiple sets (N-sets for N PE systems); and each PE can process one data
set. Dominant representative SIMD systems are Cray’s vector processing machine and Thinking
Machines’ cm.
Figure 1.8 Single-instruction, multiple-data (SIMD) architecture.
1.4.2.3. Multiple-instruction, single-data (MISD) systems
An MISD computing system is a multiprocessor machine capable of executing different
instructions on different PEs but all of them operating on the same data set (see Figure 1.9). For
instance, statements such as y = sin(x) + cos(x) + tan(x)
Figure 1.9 Multiple-instruction, single-data (MISD) architecture.
perform different operations on the same data set. Machines built using the MISD model are not
useful in most of the applications; a few machines are built, but none of them are available
commercially. They became more of an intellectual exercise than a practical configuration.
1.4.2.4 Multiple-instruction, multiple-data (MIMD) systems
An MIMD computing system is a multiprocessor machine capable of executing multiple
instructions on multiple data sets (see Figure 1.10).
Each PE in the MIMD model has separate instruction and data streams; hence machines built
using this model are well suited to any kind of application.
Unlike SIMD and MISD machines, PEs in MIMD machines work asynchronously.
MIMD machines are broadly categorized into shared-memory MIMD and distributed-memory
MIMD based on the way PEs are coupled to the main memory.
Figure 1.10: Multiple-instructions, multiple-data (MIMD) architecture
1.4.3 Shared memory MIMD machines
In the shared memory MIMD model, all the PEs are connected to a single global memory and
they all have access to it (see Figure 1.11).
Systems based on this model are also called tightly coupled multiprocessor systems. The
communication between PEs in this model takes place through the shared memory; modification
of the data stored in the global memory by one PE is visible to all other PEs.
Dominant representative shared memory MIMD systems are Silicon Graphics machines and
Sun/IBM’s SMP (Symmetric Multi-Processing).
Figure 1.11 Shared (left) and distributed (right) memory MIMD architecture.
1.4.4 Distributed memory MIMD machines
In the distributed memory MIMD model, all PEs have a local memory. Systems based on
this model are also called loosely coupled multiprocessor systems.
The communication between PEs in this model takes place through the interconnection
network.
The network connecting PEs can be configured to tree, mesh, cube, and so on. Each PE
operates asynchronously, and if communication/synchronization among tasks is
necessary, they can do so by exchanging messages between them.
The shared-memory MIMD architecture is easier to program but is less tolerant to
failures and harder to extend with respect to the distributed memory MIMD model.
Failures in a shared-memory MIMD affect the entire system, whereas this is not the case
of the distributed model, in which each of the PEs can be easily isolated.
Moreover, shared memory MIMD architectures are less likely to scale because the
addition of more PEs leads to memory contention. This is a situation that does not happen
in the case of distributed memory, in which each PE has its own memory. As a result,
distributed memory MIMD architectures are most popular today.
1.4.5 Levels of parallelism
Levels of parallelism are decided based on the lumps of code (grain size) that can be a potential
candidate for parallelism.
Table 1.1 lists categories of code granularity for parallelism. All these approaches have a
common goal: to boost processor efficiency by hiding latency. To conceal latency, there must be
another thread ready to run whenever a lengthy operation occurs.
The idea is to execute concurrently two or more single-threaded applications, such as compiling,
text formatting, database searching, and device simulation.
Table 1.1: Levels of Parallelism
As shown in the table and depicted in Figure 1.12, parallelism within an application can be
detected at several levels:
Large grain (or task level)
Medium grain (or control level)
Fine grain (data level)
Very fine grain (multiple-instruction issue)
Figure 1.12 Levels of Parallelism
1.4.6 Laws of caution
Here are two important guidelines to take into account:
• Speed of computation is proportional to the square root of system cost; they never increase
linearly. Therefore, the faster a system becomes, the more expensive it is to increase its speed
(Figure 1.13).
• Speed by a parallel computer increases as the logarithm of the number of processors (i.e.,
y = k* log(N)). This concept is shown in Figure 8.
Cost versus speed. Number processors versus speed.
Figure 1.13 Laws of caution
1.4.7 Elements of distributed computing
1.4.7.1 General concepts and definitions
A distributed system is a collection of independent computers that appears to its users as a single
coherent system.
A distributed system is one in which components located at networked computers communicate
and coordinate their actions only by passing messages.
1.4.7.2 Architectural styles for distributed computing
Architectural styles are mainly used to determine the vocabulary of components and connectors
that are used as instances of the style together with a set of constraints on how they can be
combined. The architectural styles into two major classes:
• Software architectural styles
• System architectural styles
The first class relates to the logical organization of the software; the second class includes all
those styles that describe the physical organization of distributed software systems in terms of
their major components.
1.4.7.3 Component and connectors
A component represents a unit of software that encapsulates a function or a feature of the
system. Examples of components can be programs, objects, processes, pipes, and filters.
A connector is a communication mechanism that allows cooperation and coordination
among components. Differently from components, connectors are not encapsulated in a
single entity, but they are implemented in a distributed manner over many system
components.
1.4.7.4 Software architectural styles
Software architectural styles are based on the logical arrangement of software components. They
are helpful because they provide an intuitive view of the whole system, despite its physical
deployment.
They also identify the main abstractions that are used to shape the components of the system and
the expected interaction patterns between them.
According to Garlan and Shaw , architectural styles are classified as shown in Table 1.2.
Table 1.2: Architectural styles
1.4.7.5. Data centered architectures
These architectures identify the data as the fundamental element of the software system, and
access to shared data is the core characteristic of the data-centered architectures.
Therefore, especially within the context of distributed and parallel computing systems, integrity
of data is the overall goal for such systems.
1.4.7.6 Repository
The repository architectural style is the most relevant reference model in this category. It is
characterized by two main components: the central data structure, which represents the current
state of the system, and a collection of independent components, which operate on the central
data.
The ways in which the independent components interact with the central data structure can be
very heterogeneous.
In particular, repository-based architectures differentiate and specialized into subcategories
according to the choice of control discipline to apply for the shared data structure. Of particular
interest are databases and blackboard systems.
The blackboard architectural style is characterized by three main components:
i) Knowledge sources. These are the entities that update the knowledge base that is maintained
in the blackboard.
ii) Blackboard. This represents the data structure that is shared among the knowledge sources
and stores the knowledge base of the application.
iii) Control. The control is the collection of triggers and procedures that govern the interaction
with the blackboard and update the status of the knowledge base.
1.4.7.7 Data-flow architectures
In the case of data-flow architectures, it is the availability of data that controls the computation.
With respect to the data-centered styles, in which the access to data is the core feature, data-flow
styles explicitly incorporate the pattern of data flow, since their design is determined by an
orderly motion of data from component to component, which is the form of communication
between them.
Styles within this category differ in one of the following ways: how the control is exerted, the
degree of concurrency among components, and the topology that describes the flow of data.
Batch Sequential Style
Pipe-and-Filter Style.
1.4.7.8 Virtual machine architectures
The virtual machine class of architectural styles is characterized by the presence of an abstract
execution environment (generally referred as a virtual machine) that simulates features that are
not available in the hardware or software.
Rule-Based Style
Interpreter Style.
Architectural styles based on independent components
This class of architectural style models systems in terms of independent components that have
their own life cycles, which interact with each other to perform their activities.
There are two major categories within this class—communicating processes and event systems—
which differentiate in the way the interaction among components is managed.
Communicating Processes
Event Systems
1.4.7.9 Call & return architectures
This category identifies all systems that are organised into components mostly connected
together by method calls.
The activity of systems modeled in this way is characterized by a chain of method calls whose
overall execution and composition identify the execution of one or more operations. The internal
organization of components and their connections may vary.
Nonetheless, it is possible to identify three major subcategories, which differentiate by the way
the system is structured and how methods are invoked: top-down style, object-oriented style, and
layered style.
1.4.7.10 System architectural styles
System architectural styles cover the physical organization of components and processes over a
distributed infrastructure. They provide a set of reference models for the deployment of such
systems and help engineers not only have a common vocabulary in describing the physical layout
of systems but also quickly identify the major advantages and drawbacks of a given deployment
and whether it is applicable for a specific class of applications.
The two fundamental reference styles are : client/server and peer-to-peer.
1.4.7.10.1 Client/server
This architecture is very popular in distributed computing and is suitable for a wide variety of
applications.
As depicted in Figure 9 the client/server model features two major components: a server and a
client. These two components interact with each other through a network connection using a
given protocol.
The communication is unidirectional: The client issues a request to the server, and after
processing the request the server returns a response. There could be multiple client components
issuing requests to a server that is passively waiting for them. Hence, the important operations in
the client-server paradigm are request, accept (client side), and listen and response (server side).
The client/server model is suitable in many-to-one scenarios, where the information and the
services of interest can be centralized and accessed through a single access point: the server.
In general, multiple clients are interested in such services and the server must be appropriately
designed to efficiently serve requests coming from different clients.
This consideration has implications on both client design and server design.
Figure 1.14 Client Server Architecture
For the client design, we identify two major models:
i) Thin-client model. In this model, the load of data processing and transformation is put on the
server side, and the client has a light implementation that is mostly concerned with retrieving and
returning the data with no considerable processing.
ii) Fat-client model. In this model, the client component is also responsible for processing and
transforming the data before returning it to the user, whereas the server features a relatively light
implementation that is mostly concerned with the management of access to the data.
The three major components in the client-server model: presentation, application logic, and data
storage. In the thin-client model, the client embodies only the presentation component, while the
server absorbs the other two.
In the fat-client model, the client encapsulates presentation and most of the application logic,
and the server is principally responsible for the data storage and maintenance.
Presentation, application logic, and data maintenance can be seen as conceptual layers, which are
more appropriately called tiers. The mapping between the conceptual layers and their physical
implementation in modules and components allows differentiating among several types of
architectures, which go under the name of multitiered architectures.
Two major classes exist:
1.4.7.10.2 Two tier and Multi-tier
i) Peer – to - Peer
The peer-to-peer model, depicted in Figure 10 , introduces a symmetric architecture in
which all the components, called peers, play the same role and incorporate both client and
server capabilities of the client/server model.
More precisely, each peer acts as a server when it processes requests from other peers and
as a client when it issues requests to other peers. With respect to the client/ server model
that partitions the responsibilities of the IPC between server and clients, the peer-to peer
model attributes the same responsibilities to each component. Therefore, this model is
quite suitable for highly decentralized architecture, which can scale better along the
dimension of the number of peers.
The disadvantage of this approach is that the management of the implementation of
algorithms is more complex than in the client/server model.
Despite the differences among these networks in coordinating nodes and sharing
information on the files and their locations, all of them provide a user client that is at the
same time a server providing files to other peers and a client downloading files from
other peers.
To address an incredibly large number of peers, different architectures have been
designed that divert slightly from the peer-to-peer model.
For example, in Kazaa not all the peers have the same role, and some of them are used to
group the accessibility information of a group of peers. Another interesting example of
peer-to-peer architecture is represented by the Skype network.
The system architectural styles presented constitute a reference model that is enhanced or
diversified according to the specific needs of the application to be designed and
implemented.
For example, the client/server architecture, which originally included only two types of
components, has been extended and enriched by developing multitier architectures as the
complexity of systems increased.
Currently, this model is still the predominant reference architecture for distributed
systems and applications. The server and client abstraction can be used in some cases to
model the macro scale or the micro scale of the systems.
Figure 1.15 Peer – to - Peer Architecture
For peer-to-peer systems, pure implementations are very hard to find and, for the case of Kazaa,
evolutions of the model, which introduced some kind of hierarchy among the nodes, are
common.
1.5 Cloud Characteristics
Cloud Computing is getting more and more popularity day by day. The reason behind is the
gradual growth of the companies which are in need of the place to store their data.
Therefore, companies are in competition to provide large space to store data along with the
various features and quality service.
It has been found that Cloud Computing is a model for enabling ubiquitous, convenient, on-
demand network access the computing resources. There are many services and features of cloud
computing.
Following are the characteristics of Cloud Computing:
a. On-demand self-service: It is one of the important and valuable features of Cloud
Computing as the user can continuously monitor the server uptime, capabilities, and
allotted network storage. With this feature, the user can also monitor the computing
capabilities.
b. Resources Pooling: It means that the Cloud provider pulled the computing resources to
provide services to multiple customers with the help of a multi-tenant model. There are
different physical and virtual resources assigned and reassigned which depends on the
demand of the customer. The customer generally has no control or information over the
location of the provided resources but is able to specify location at a higher level of
abstraction.
c. Easy Maintenance: The servers are easily maintained and the downtime is very low and
even in some cases, there is no downtime. Cloud Computing comes up with an update
every time by gradually making it better. The updates are more compatible with the
devices and perform faster than older ones along with the bugs which are fixed.
d. Large Network Access: The user can access the data of the cloud or upload the data to
the cloud from anywhere just with the help of a device and an internet connection. These
capabilities are available all over the network and accessed with the help of internet.
e. Availability: The capabilities of the Cloud can be modified as per the use and can be
extended a lot. It analyzes the storage usage and allows the user to buy extra Cloud
storage if needed for a very small amount.
f. Automatic System: Cloud computing automatically analyzes the data needed and
supports a metering capability at some level of services. We can monitor, control, and
report the usage. It will provide transparency for the host as well as the customer.
g. Economical: It is the one-time investment as the company (host) has to buy the storage
and a small part of it can be provided to the many companies which save the host from
monthly or yearly costs. Only the amount which is spent is on the basic maintenance and
a few more expenses which are very less.
h. Security: Cloud Security, is one of the best features of cloud computing. It creates a
snapshot of the data stored so that the data may not get lost even if one of the servers gets
damaged. The data is stored within the storage devices, which cannot be hacked and
utilized by any other person. The storage service is quick and reliable.
i. Pay as you go: In cloud computing, the user has to pay only for the service or the space
they have utilized. There is no hidden or extra charge which is to be paid. The service is
economical and most of the time some space is allotted for free.
j. Measured Service: Cloud Computing resources used to monitor and the company uses it
for recording. This resource utilization is analyzed by supporting charge-per-use
capabilities. This means that the resource usages which can be either virtual server
instances that are running in the cloud are getting monitored measured and reported by
the service provider.
1.6 Elasticity in Cloud
Cloud Computing or Cloud is defined as using various services such as software
development platforms, servers, storage, over the Internet.
Elastic computing is nothing but a concept in cloud computing in which computing resources
can be scaled up and down easily by the cloud service provider. Cloud service provider gives
you provision to flexible computing power when and wherever required.
The elasticity of these resources depends upon the following factors such as processing power,
storage, bandwidth, etc.
When service demand increases, elastic cloud platforms dynamically add resources Thus,
elasticity adds a dynamic component to scalability - but how does this dynamic component
look like? On an ideal elastic platform, as application workload intensity increases, the
distribution of the response times of an application service should remain stable as additional
resources are made available to the application.
Such an idealistic view is shown by the synthetic example in Figure. 1.16, which also includes
dynamic un-provisioning of resources as the application workload decreases.
Note that the dynamic adaptation is a continuous (non-discrete) process in Figure. 1.16
Figure 1.16 Schematic Example of an (unrealistically) ideal elastic System with
immediate and fully-compensating elasticity:
However, in reality, resources are actually measured and provisioned in larger discrete
units (i.e. one processor core, processor time slices, one page of main memory, etc.), so a
continuous idealistic scaling/elasticity cannot be achieved. On an elastic cloud platform, the
performance metric (here: response time) will rise as workload intensity increases until a certain
threshold is reached at which the cloud platform will provide additional resources.
Until the application detects additional resources and starts making use of them, the
performance will recover and improve - for example, response times will drop.
This means that in an elastic cloud environment with changing workload intensity, the
response time is in fact not as stable as it was in Figure 1.16.
Now that we have determined a major property of elastic systems, the next question
is: how to quantify elasticity of a given execution platform?
Figure 1.17 Schematic Example of an Elastic System
The answer to this question is provided by Figure 1.17 - notice that it reflects the previously
mentioned fact that the performance increases at certain discrete points.
When quantifying to define and to measure elasticity, it will be necessary to quantify the
temporal and quantitative properties of those points at which performance is increased.
1.6.1 Definition
Changes in resource demands or explicit scaling requests trigger run time adaptations of the
amount of resources that an execution platform provides to applications.
The magnitude of these changes depends on the current and previous state of the execution
platform, and also on the current and previous behaviour of the applications running on that
platform.
Consequently, elasticity is a multi-valued metric that depends on several run time factors. This is
reflected by the following definitions, which are illustrated by Fig 1.18.
Elasticity of execution platforms consists of the temporal and quantitative properties of runtime
resource provisioning and un-provisioning, performed by the execution platform; execution
platform elasticity depends on the state of the platform and on the state of the platform-hosted
applications.
Figure 1.18 Elasticity in cloud
Reconfiguration point is a time point at which a platform adaptation (resource provisioning or
un-provisioning) is processed by the system.
1.6.2 Elasticity Metrics
There are several characteristics of resource elasticity, which are parametrised by the
platform state/history, application state/history and workload state/history:
i) Effect of reconfiguration is quantified by the amount of added/removed resources and thus
expresses the granularity of possible reconfigurations/adaptations.
ii) Temporal distribution of reconfiguration points describes the density of reconfiguration
points over a possible interval of a resource’s usage amounts or over a time interval in relation to
the density of changes in workload intensity.
iii)Provisioning time or reaction time is the time interval between the instant when a
reconfiguration has been triggered/requested until the adaptation has been completed. An
example for provisioning time would be the time between the request for an additional thread
and the instant of actually holding it.
1.6.3 Direct and Indirect Measuring of Elasticity Metrics
1.6.3.1 Directly on the execution platform
In general, the effects of scalability are visible to the user/client via changing response times or
throughput values at a certain scaling level of the system.
On the other hand, the elasticity, namely the resource resizing actions, may not be directly visible
to the client due to their shortness or due to client’s limited access to an execution platform’s
state and configuration.
Therefore, measuring resource elasticity from a client’s perspective by observing throughput and
response times, requires indirect measurements and approximations, whereas measuring the
resource elasticity on the “server side” can be more exact, if the execution platform provides
information about held resources and resource provisioning and un-provisioning.
1.6.3.2 Independent workload element
For elasticity measurements on any elastic system, it is necessary to fill the system with a
variable intensity of workloads. The workload itself consists of small independent
workload elements that are supposed to run concurrently and designed to stress mainly
one specific resource type (like Fibonacci calculation for CPU or an array sort for
memory).
“Independent workload element” means in this case that there is no interdependency
between the workload elements that would require communication or synchronisation
and therefore induce overheads. It is necessary to stress mainly the “resource under test”,
to avoid bottlenecks elsewhere in the system.
As the concepts of resource elasticity are validated in the following example using Java
thread pools as virtual resources provided by a Java Virtual Machine. Java thread pools
are designed to grow and shrink dynamically in size, while still trying to reuse idle
resources.
In general , differentiate between the following orders of values and can be applied to the
Java thread pool example.
1st order values - client side are all workload attributes and workload events that can directly be
measured and logged precisely even on the client-side like timestamps, number of workload
elements submitted and finished and their waiting and processing times.
For the example of Java thread pools, client-side 1st order values would be:
• attributes: a workload element’s start time, waiting time and processing time
• events: time stamp and values of any change in numbers of submitted or finished workload
elements.
1st order values - execution system side include the above-mentioned events and attributes, that
are visible at the client side too, and in addition the direct exact measurement of provided
resource entities at a certain point in time.
The execution system should be able to accurately provide these values, otherwise an additional
measurement tool must run on the execution platform.
Resource events: time stamp and values of any change in numbers of provided thread resources
2nd order values - execution system side are values that can directly be calculated from the 1 th
order values. They include amount and time point of increase / decrease of workload or resource
entities as well as the rate of reconfigurations in relation to the rate of workload changes. Even
though these values are not directly visible to a client, they can be considered as precise due to
their direct deduction from measurable values.
For the Java thread pool example, 2nd order values are:
i) Workload intensity: time stamp and value of right now executing workload elements as the
difference of submitted minus finished ones.
ii) Resource events: time interval of two successive measurement samples and amount of added
or removed thread resources
iii) Resizing ratio: number of changes in thread pool size in relation to changes in workload
intensity within a certain time interval
3rd order values - execution system side are values that cannot be directly calculated from 1st or
2nd order values. These values need to be approximated in a suitable way.
The system’s provisioning time is a delay between an internal trigger event and the visibility of a
resource reallocation.
Time points of internal trigger events and information about execution of such an event are
system internal and often not logged.
For the Java thread pool example, 3rd order values are:
Approximation for the provisioning time of a thread pool size change.
Response times of the basic workload elements should be logged and split up in waiting
and processing times.
Waiting time of a workload element as the duration from feeding a workload task to the
execution system until the system finally schedules the workload task and begins its
processing. This definition of waiting time does not include any waiting times of
interruptions by hardware contention or system scheduling.
Waiting and processing times are intuitively interpretable if the size of tasks is not too small so
that the processing time values do not show high variability due to system scheduling influences.
When taking response time as a performance metric, it is necessary to exercise elasticity
measurements only on elastic platforms, where the level of concurrency within the workload can
be covered by physically provided resources with no hardware contention at the maximal
possible system configuration (upper bound for scaling).
This approach is illustrated in an idealized way in the following Fig.1.19 on the left side.
A suitable performance metric for the resource under test (like response time for CPU bound
tasks) declines, the system automatically reacts by provisioning of more resources and then the
performance metric recovers again.
The provisioning time could be approximated by the time interval from the time points where the
performance metric declines until system reacts.
Figure 1.19 Two different Approaches for Measuring Provisioning Times
If we measure elasticity of a virtual resource that shares physical resources with other tasks, no
precise view on a correlation between cause and effect will be given anymore when trying to
interpret the characteristics of waiting and processing times.
In this case observing response times does not allow direct and exact extraction of elasticity
metrics.
The provisioning times of a elastic system, which were defined as the delay between a trigger
event and the visibility of a resource reallocation, cannot be measured directly without having
access to system internal log files and setting them in relation with measured resource amounts.
If a new workload task is added and cannot be served directly by the system, we assume that a
trigger event for resizing is created within the execution platform.
Not every trigger event results in a resource reallocation. In addition, the measurement log files
on execution platform side must be enabled to keep track of any changes in resource amounts.
As illustrated in Fig. 3.5 on the right side, it is possible to intuitively find a mapping between a
trigger event and its effect manually.
1.6.4 Benefits/Pros of Elastic Cloud Computing
Elastic Cloud Computing has numerous advantages. Some of them are as follow: -
Cost Efficiency: - Cloud is available at much cheaper rates than traditional approaches
and can significantly lower the overall IT expenses. By using cloud solution companies
can save licensing fees as well as eliminate overhead charges such as the cost of data
storage, software updates, management etc.
Convenience and continuous availability: - Cloud makes easier access of shared
documents and files with view and modify choice. Public clouds also offer services that
are available wherever the end user might be located. Moreover it guaranteed continuous
availability of resources and In case of system failure; alternative instances are
automatically spawned on other machines.
Backup and Recovery: - The process of backing up and recovering data is easy as
information is residing on cloud simplified and not on a physical device. The various
cloud providers offer reliable and flexible backup/recovery solutions.
Cloud is environmentally friendly:-The cloud is more efficient than the typical IT
infrastructure and it takes fewer resources to compute, thus saving energy.
Scalability and Performance: - Scalability is a built-in feature for cloud deployments.
Cloud instances are deployed automatically only when needed and as a result enhance
performance with excellent speed of computations.
Increased Storage Capacity: -The cloud can accommodate and store much more data
compared to a personal computer and in a way offers almost unlimited storage capacity.
1.6.5 Disadvantages/Cons of Elastic Cloud Computing: -
Security and Privacy in the Cloud: - Security is the biggest concern in cloud
computing. Companies essentially hide their private data and information over cloud as
remote based cloud infrastructure is used, it is then up to the cloud service provider to
manage, protect and retain data confidential.
Limited Control: - Since the applications and services are running remotely companies,
users and third party virtual environments have limited control over the function and
execution of the hardware and software.
Dependency and vendor lock-in: - One of the major drawbacks of cloud computing is
the implicit dependency on the provider. It is also called “vendor lock-in”. As it becomes
difficult to migrate vast data from old provider to new. So, it is advisable to select vendor
very carefully.
Increased Vulnerability: - Cloud based solutions are exposed on the public internet
therefore are more vulnerable target for malicious users and hackers. As we know
nothing is completely secure over Internet even the biggest organizations also suffer from
serious attacks and security breaches.
1.7 On-demand provisioning
● On-demand provisioning is the single most important characteristic of cloud computing,
it allows the users to request or release resources whenever they want.
● These demands are thereafter automatically granted by a cloud provider’s service and the
users are only charged for their usage, i.e., the time they were in possession of the
resources.
● The reactivity of a cloud solution, with regard to resource provisioning is indeed of prime
importance as it is closely related to the cloud’s pay-as-you-go business model.
● It is one of the important and valuable features of Cloud Computing as the user can
continuously monitor the server uptime, capabilities, and allotted network storage. With
this feature, the user can also monitor the computing capabilities.
It simply requires these two things to be true:
The service must be always available (or some reasonable approximation of always)
The service received must be modifiable by the client organization without contacting the
hosting provider. It is the second that is typically the most difficult to meet.
While the public providers like Amazon, Google, and Microsoft have this facet, smaller niche
providers typically do not. This is more likely when the provider is also supplying services or
managed hosting for the application itself, especially during an Infrastructure as a Service (IaaS)-
type scenario.
In enterprise application hosting scenarios, there are also potential contractual issues to consider
when decreasing (or even possibly increasing) capacity without interacting with the vendor.
It is important to determine these issues before making changes to your own environment. If
your service/uptime SLAs require a certain level of hardware to support, remember to ensure that
you do not compromise them by unduly changing the capacity available to your applications.
In On-demand provisioning, open nebula is used as the engine.
1.7.1 Local on-Demand Resource Provisioning
1.7.1.1 The OpenNEbula Virtual Infrastructure Engine
OpenNEbula creates a distributed virtualization layer
o Extend the benefits of VM Monitors from one to multiple resources
o Decouple the VM (service) from the physical location
Transform a distributed physical infrastructure into a flexible and elastic virtual
infrastructure, which adapts to the changing demands of the VM (service) workloads
Any service, not
only cluster
working nodes
Figure 1.20 The Engine for the Virtual Infrastructure
1.7.1.2 Virtualization of Cluster and HPC Systems
Separation of Resource Provisioning from Job Management
New virtualization layer between the service and the infrastructure layers
Seamless integration with the existing middleware stacks.
Completely transparent to the computing service and so end users
Figure 1.21 A Virtualization of Cluster and HPC Systems
1.7.1.3 Benefits of Local on-demand resource provisioning
i) User Requests
SGE interface
Virtualization overhead
Figure 1.22 User Requests
ii) Cluster Consolidation
Heuristics for dynamic capacity proviosin leveraging VMM functionality (eg. Live
migration)
Reduce space, administration effort, power and cooling requirement or support the
shutdown of systems without interfering workload.
Figure 1.22 Cluster Consolidation
iii) Cluster Partitioning
Dynamic partition of the infrastructure
Isolate workloads (several computing clusters)
Dedicated HA partitions
Figure 1.23 Cluster Partitioning
iv) Support of Heterogeneous Workloads
Custom worker-node configurations (queues)
Dynamic provision of cluster configurations
Example on-demand VO worker nodes in Grids
Figure 1.24 Support of Heterogeneous Workloads
1.7.1.4 Benefits for Existing Grid Infrastructures (EGEE, TeraGrid…)
• The virtualization of the local infrastructure supports a virtualized alternative to
contribute resources to a Grid infrastructure
• Simpler deployment and operation of new middleware distributions
• Lower operational costs
• Easy provision of resources to more than one infrastructure or VO
• Easy support for VO-specific worker nodes
• Performance partitioning between local and grid clusters
• Solve many obstacles for Grid adoption
i) Integration of Job Execution Managers with Virtualization
VMs to Provide pre-Created Software Environments for Jobs
Extensions of job execution managers to create per-job basis VMs so as to provide a pre-defined
environment for job execution
Those approaches still manage jobs
The VMs are bounded to a given PM and only exist during job execution
Condor, SGE, MOAB, Globus GridWay
ii) Job Execution Managers for the Management of VMs
Job execution managers enhanced to allow submission of VMs
Those approaches manage VMs as jobs
Condor, “pilot” backend in Globus VWS
iii) Differences between VMs and Jobs as basic Management Entities
VM structure: Images with fixed and variable parts for migration…
VM life-cycle: Fixed and transient states for contextualization, live migration…
VM duration: Long time periods (“forever”)
VM groups (services): Deploy ordering, affinity, rollback management…
VM elasticity: Changing of capacity requirements and number of VMs
iv) Different Metrics in the Allocation of Physical Resources
Capacity provisioning: Probability of SLA violation for a given cost of provisioning including
support for server consolidation, partitioning…
HPC scheduling: Turnaround time, wait time, throughput
1.7.1.5 Other Tools for VM Management
VMware DRS, Platform Orchestrator, IBM Director, Novell ZENworks, Enomalism, Xenoserver
1.7.1.6 Advantages:
Open-source (Apache license v2.0)
Open and flexible architecture to integrate new virtualization technologies
Support for the definition of any scheduling policy (consolidation, workload balance, affinity,
SLA…)
LRM-like CLI and API for the integration of third-party tools
1.7.2 Remote on-Demand Resource Provisioning
1.7.2.1 Access to cloud-systems
Provision of virtualized resources as a service
VM Management Interfaces
Submission
Control
Monitoring
Figure 1.25 Access to cloud systems
1.7.2.2 Infrastructure Cloud Computing Solutions
Commercial Cloud: Amazon EC2
Scientific Cloud: Nimbus (University of Chicago)
Open-source Technologies
o Globus VWS (Globus interfaces)
o Eucalyptus (Interfaces compatible with Amazon EC2)
o OpenNEbula (Engine for the Virtual Infrastructure)
1.7.2.3 On-demand Access to Cloud Resources
• Supplement local resources with cloud resources to satisfy peak or fluctuating demands
Figure 1.26 On-demand access to cloud resources
1.7.2.4 Grid and Cloud are Complementary
Grid interfaces and protocols enable the interoperability between the clouds or
infrastructure providers
Grid as technology for federation of administrative domains (not as infrastructure for job
computing)
Grid infrastructures for computing are one of the service use cases that could
run on top of the cloud
1.7.2.5 The VEE Manager (OpenNEbula based)
• Generic and independent of the underlying virtualization technology
• Open source and based on standards (Grid & Virtualization OGF WG)
• Automatic provision of VEEs to meet pre-defined infrastructure site policies for SLA
commitment
• VEE groups (forming a single service) with affinity rules, deployment ordering
rules, rollback policies, elasticity management…
• Access to remote grid sites, supporting on-demand access and federation of data-
centers (GT4 Interfaces are being evaluated)
TWO MARK QUESTIONS
1. Define utility computing.
● Utility computing is the provision of computational resources and storage resources
as a metered service, similar to those provided by a traditional public utility company.
● This is not a new idea.
● This form of computing is growing in popularity, however, as companies have begun
to extend the model to a cloud computing paradigm providing virtual servers that IT
departments and users can access on demand.
2. What is Grid Computing?
● Grid computing is often confused with cloud computing.
● Grid computing is a form of distributed computing model that implements a virtual
supercomputer made up of a cluster of networked or Inter networked computers
involved to perform very large tasks.
3. Define Cloud computing.
● Cloud computing is a model for delivering IT services in which resources are
retrieved from the internet through web based tools and applications rather than a
direct connection to the server.
4. Define Cloud.
● Cloud refers to software, platform, and Infrastructure that are sold as a service. The
services accessed remotely through the Internet
● The cloud users can simply log on to the network without installing anything. They do
not pay for hardware and maintenance. But the service providers pay for physical
equipment and maintenance.
5. What is the purpose of NCP?
● The first networking protocol that was used on the ARPANET was the Network
Control Program (NCP).
● The NCP provided the middle layers of a protocol stack running on an ARPANET
connected host computer.
6. How to increase the performance using multiprogramming?
● In a multiprogramming system, multiple programs submitted by users are allowed to
use the processor for a short time, each taking turns and having exclusive time with
the processor in order to execute instructions.
● This approach is called as round robin scheduling
7. Differentiate between Vector processing and Massive parallel processing
● Vector processing was developed to increase processing performance by operating
in a multitasking manner.
● Massive parallel processing (MPP) is used in computer architecture circles to refer to
a computer system with many independent arithmetic units or entire
microprocessors, which run in parallel.
8. List the four key elements in parallel and distributed computing.
● The four key elements of computing developed during these eras are architectures,
compilers, applications, and problem solving environments.
9. Differentiate between parallel and distributed computing.
● The terms parallel computing and distributed computing are often used
interchangeably, even though which meant somewhat different things. Parallel
implies a tightly coupled system, whereas distributed refers to a wider class of
system which includes tightly coupled systems.
● The term distributed computing encompasses any architecture or system that allows
the computation to be broken down into units and executed concurrently on different
computing elements, whether these are processors on different nodes, processors
on the same computer, or cores within the same processor.
10. Categorize computing systems base on Flynn’s classification.
● Single Instruction Single Data systems (SISD)
● Single Instruction Multiple Data systems (SIMD)
● Multiple Instruction Single Data systems (MISD)
● Multiple Instruction, Multiple Data systems (MIMD)
11. List the most prominent parallel programming approaches.
● Data parallelism
● Process parallelism
● Farmer-and-worker model
12. What is farmer and worker model?
● A job distribution approach is used in which one processor is configured as master
and all other remaining processing elements are designated as slaves.
● The master assigns jobs to slave processing elements and, on completion, they
inform the master, which in turn collects results.
13. Differentiate between component and connector.
● A component represents a unit of software that encapsulates a function or a feature of
the system.
● A connector is a communication mechanism that allows cooperation and
coordination among components.
14. Classify architectural styles according to Garlan and Shaw.
● Data-centered
● Data flow
● Virtual machine
● Call and return
● Independent components
15. What is repository architectural style?
● The repository architectural style is the most relevant reference model in this
category.
● It is characterized by two main components: the central data structure, which
represents the current state of the system, and a collection of independent
components, which operate on the central data.
16. When the computing paradigm adapt client / server mode?
● The client/server model is suitable in many-to-one scenarios.
● The client/server model features two major components: a server and a client.
● These two components interact with each other through a network connection using
a given protocol.
● The communication is unidirectional.
17. Differentiate between Thin client and Fat client model.
● Thin client model, the load of data processing and transformation is put on the server
side, and the client has a light implementation that is mostly concerned with
retrieving and returning the data, with no considerable processing.
● Fat client model, the client component is also responsible for processing and
transforming the data before returning it to the user.
18. Differentiate between two tier and three tier architecture.
● Two-tier architecture partitions the systems into two tiers, which are located one in
the client component and the other on the server.
● Three-tier architecture separates the presentation of data, the application logic, and
the data storage into three tiers.
19. What is point-to-point model?
● This model organizes the communication among single components.
● Each message is sent from one component to another, and there is a direct
addressing to identify the message receiver.
● In a point-to-point communication model it is necessary to know the location of or
how to address another component in the system.
20. List the strategies for dispatching the event to the subscribers
● Push strategy. In this case it is the responsibility of the publisher to notify all the
subscribers.
● Pull strategy. In this case the publisher simply makes available the message for a
specific event.
21. What is request-reply model?
● The request-reply message model identifies all communication models in which, for
each message sent by a process, there is a reply.
● This model is quite popular and provides a different classification that does not focus
on the number of the components involved in the communication but rather on how
the dynamic of the interaction evolves.
22. What is the purpose of Distributed object frameworks?
● Distributed object frameworks extend object-oriented programming systems by
allowing objects to be distributed across a heterogeneous network and provide
facilities so that they can coherently act as though they were in the same address
space.
23. List the key characteristics of cloud.
● On-demand provisioning Universal access
● Enhanced Reliability Measures Services
● Multitentency Resource Pooling
● Elasticity Scalability
● High Availability Maintenance
● Security