CC Notes
CC Notes
P2P systems
A P2P system, every node acts as both a client and a server, providing part of the system
resources. Peer machines are simply client computers connected to the Internet. All client
machines act autonomously to join or leave the system freely. There is no master-slave
relationship exists among the peers. No central coordination or central database is needed, no
peer machine has a global view of the entire P2P system. The system is self-organizing with
distributed control. The peers are totally unrelated. Each peer machine joins or leaves the P2P
network voluntarily. Only the participating peers form the physical network at any time. Unlike
the cluster or grid, a P2P network does not use a dedicated interconnection network.
High-Performance Computing For many years, HPC systems emphasize the raw speed
performance. The speed of HPC systems has increased from Gflops in the early 1990s to now
Pflops in 2010. This improvement was driven mainly by the demands from scientific,
engineering, and manufacturing communities. HPC systems are usually implemented using
clusters.
Cluster:
A simple cluster of computers built with commodity components and fully supported with
desired SSI features and HA capability.
The processing nodes are commodity workstations, PCs, or servers.
These commodity nodes are easy to replace or upgrade with new generations of hardware.
The node operating systems should be designed for multiuser, multitasking, and
multithreaded applications.
The nodes are interconnected by one or more fast commodity networks.
These networks use standard communication protocols and operate at a speed that should
be two orders of magnitude faster than that of the current TCP/IP speed over Ethernet.
The network interface card is connected to the node’s standard I/O bus (e.g., PCI).
When the processor or the operating system is changed, only the driver software needs to
change.
The desire to have a platform-independent cluster operating system, sitting on top of the
node platforms.
A cluster middleware can be used to glue together all node platforms at the user space. An
availability middleware offers HA services.
An SSI layer provides a single entry point, a single file hierarchy, a single point of control.
Design Principles Of Computer Clusters
Single-System Image Features:
SSI does not mean a single copy of an operating system image residing in memory, as in
an SMP or a workstation.
Single system:
The entire cluster is viewed by users as one system that has multiple processors.
The user could say, “Execute my application using five processors.” This is different from
a distributed system.
Single control:
Logically, an end user or system user utilizes services from one place with a single
interface.
Single Entry Point:
The single-entry point enables users to log in (e.g., through Telnet, rlogin, or HTTP) to
a cluster as one virtual host, although the cluster may have multiple physical host nodes
to serve the login sessions.
The system transparently distributes the user’s login and connection requests to
different physical hosts to balance the load.
Clusters could substitute for mainframes and supercomputers.
Example: Four nodes of a cluster are used as host nodes to receive users’ login requests.
Single File Hierarchy:
Single system
There is just one file hierarchy from the user’s viewpoint.
Symmetry
A user can access the global storage (e.g., /scratch) using a cluster service from any
node.
In other words, all file services and functionalities are symmetric to all nodes and all
users, except those protected by access rights.
Single Networking:
A properly designed cluster should behave as one system (the shaded area). In other
words, it is like a big workstation with four network connections and four I/O
devices.
The system administrator should be able to configure, monitor, test, and control the
entire cluster and each individual node from a single point.
Many clusters help with this through a system console that is connected to all nodes
of the cluster.
Single Memory Space:
Single memory space gives users the illusion of a big, centralized main memory,
which in reality may be a set of distributed local memory spaces.
These are clusters designed mainly for collective computation over a single large job.
A good example is a cluster dedicated to numerical simulation of weather conditions.
The compute clusters do not handle many I/O operations, such as database services.
When a single compute job requires frequent communication among the cluster nodes,
the cluster must share a dedicated network, and thus the nodes are mostly homogeneous
and tightly coupled.
This type of clusters is also known as a Beowulf cluster.
High-Availability clusters
Load-balancing clusters
These clusters shoot for higher resource utilization through load balancing among all
participating nodes in the cluster.
All nodes share the workload or function as a single virtual machine (VM).
Requests initiated from the user are distributed to all node computers to form a cluster.
Shared-memory cluster is much more difficult to realize. The nodes could be connected by
a scalable coherence interface (SCI) ring, which is connected to the memory bus of each
node through an NIC module. In the other two architectures, the interconnect is attached to
the I/O bus. The memory bus operates at a higher frequency than the I/O bus.
• Single job management system All cluster jobs can be submitted from any node to a single
job management system.
• Single user interface The users use the cluster through a single graphical interface. Such an
interface is available for workstations and PCs. A good direction to take in developing a cluster
GUI is to utilize web technology.
• Single process space All user processes created on various nodes form a single process space
and share a uniform process identification scheme. A process on any node can create (e.g.,
through a UNIX fork) or communicate with (e.g., through signals, pipes, etc.) processes on
remote nodes.
• Middleware support for SSI clustering various SSI features are supported by middleware
developed at three cluster application levels:
• Management level This level handles user applications and provides a job
management system such as GLUnix, MOSIX, Load Sharing Facility (LSF), or Codine.
• Programming level This level provides single file hierarchy (NFS, xFS, AFS, Proxy)
and distributed shared memory (TreadMark, Wind Tunnel).
Implementation level This level supports a single process space, checkpointing, process
migration, and a single I/O space. These features must interface with the cluster hardware
and OS platform.
Centralized vs decentralized
In a centralized cluster, all the nodes are owned, controlled, managed, and administered
by a central operator.
In a decentralized cluster, the nodes have individual owners.
Exposed vs Enclosed
Intra-cluster communication can be either exposed or enclosed.
In an exposed cluster, the communication paths among the nodes are exposed to the
outside world.
An outside machine can access the communication paths, and thus individual nodes,
using standard protocols (e.g., TCP/IP).
Such exposed clusters are easy to implement, but have several disadvantages:
o Being exposed, intra-cluster communication is not secure, unless the
communication subsystem performs additional work to ensure privacy and
security.
o Outside communications may disrupt intra-cluster communications in an
unpredictable fashion.
o Standard communication protocols tend to have high overhead.
Dedicated versus Enterprise Clusters
A dedicated cluster is typically installed in a deskside rack in a central computer room.
It is homogeneously configured with the same type of computer nodes and managed by
a single administrator group like a frontend host.
An enterprise cluster is mainly used to utilize idle resources in the nodes. Each node is
usually a full-fledged SMP, workstation, or PC, with all the necessary peripherals
attached. The nodes are typically geographically distributed, and are not necessarily in
the same room or even in the same building. The nodes are individually owned by
multiple owners.
Failover cluster This is probably the most important feature demanded in current
clusters for commercial applications. When a component fails, this technique allows
the remaining system to take over the services originally provided by the failed
component. A failover mechanism must provide several functions, such as failure
diagnosis, failure notification, and failure recovery. Failure diagnosis refers to the
detection of a failure and the location of the failed component that caused the failure. A
commonly used technique is heartbeat, whereby the cluster nodes send out a stream of
heartbeat messages to one another. If the system does not receive the stream of heartbeat
messages from a node, it can conclude that either the node or the network connection
has failed.
MODULE 3
Virtualization levels
User-Application Level
Virtualization at the application level virtualizes an application as a VM. On a traditional OS,
an application often runs as a process. Therefore, application-level virtualization is also
known as process-level virtualization. The most popular approach is to deploy high level
language (HLL) VMs. In this scenario, the virtualization layer sits as an application program
on top of the operating system, and the layer exports an abstraction of a VM that can run
programs written and compiled to a particular abstract machine definition.
vCUDA
CUDA is a programming model and library for general-purpose GPUs. The vCUDA employs
a client-server model to implement CUDA virtualization. It consists of three user space
components: the vCUDA library, a virtual GPU in the guest OS (which acts as a client), and
the vCUDA stub in the host OS (which acts as a server). The vCUDA library resides in the
guest OS as a substitute for the standard CUDA library. It is responsible for intercepting and
redirecting API calls from the client to the stub. vCUDA also creates vGPUs and manages
them.
Live VM migration:
Steps 0 and 1: Start migration. This step makes preparations for the migration, including
determining the migrating VM and the destination host. Although users could manually make
a VM migrate to an appointed host, in most circumstances, the migration is automatically
started by strategies such as load balancing and server consolidation.
Steps 2: Transfer memory. Since the whole execution state of the VM is stored in memory,
sending the VM’s memory to the destination node ensures continuity of the service provided
by the VM. All of the memory data is transferred in the first round, and then the migration
controller recopies the memory data which is changed in the last round. These steps keep
iterating until the dirty portion of the memory is small enough to handle the final copy.
Although pre-copying memory is performed iteratively, the execution of programs is not
obviously interrupted.
Step 3: Suspend the VM and copy the last portion of the data. The migrating VM’s
execution is suspended when the last round’s memory data is transferred. Other nonmemory
data such as CPU and network states should be sent as well. During this step, the VM is stopped
and its applications will no longer run. This “service unavailable” time is called the “downtime”
of migration, which should be as short as possible so that it can be negligible to users.
Steps 4 and 5: Commit and activate the new host. After all the needed data is copied, on the
destination host, the VM reloads the states and recovers the execution of programs in it, and
the service provided by this VM continues. Then the network connection is redirected to the
new VM and the dependency to the source host is cleared. The whole migration process finishes
by removing the original VM from the source host.
Xen Architecture
VMs at the operating system level have minimal startup/shutdown costs, low resource
requirements, and high scalability and
OS-level VM, it is possible for a VM and its host environment to synchronize state
changes when necessary.
These benefits can be achieved via two mechanisms of OS-level virtualization:
All OS-level VMs on the same physical machine share a single operating system
kernel.
The virtualization layer can be designed in a way that allows processes in VMs to
access as many resources of the host machine as possible, but never to modify them.
The callout box in top of shows the architecture of a typical public cloud.
Private Clouds:
A private cloud is built within the domain of an intranet owned by a single organization.
Therefore, it is client owned and managed, and its access is limited to the owning clients and
their partners. A private cloud is supposed to deliver more efficient and convenient cloud
services. It may impact the cloud standardization, while retaining greater customization and
organizational control.
Hybrid Clouds:
A hybrid cloud is built with both public and private clouds. A hybrid cloud provides access to
clients, the partner network, and third parties. In summary, public clouds promote
standardization and offer application flexibility. Private clouds attempt to achieve
customization and offer higher efficiency, resiliency, security, and privacy. Hybrid clouds
operate in the middle, with many compromises in terms of resource sharing.
Service models:
Infrastructure as a Service:
This model allows users to use virtualized IT resources for computing, storage, and networking.
In short, the service is performed by rented cloud infrastructure. The user can deploy and run
his applications over his chosen OS environment. The user does not manage or control the
underlying cloud infrastructure, but has control over the OS, storage, deployed applications,
and possibly select networking components. This IaaS model encompasses storage as a service,
compute instances as a service, and communication as a service.
Platform-as-a-service
To be able to develop, deploy, and manage the execution of applications using provisioned
resources demands a cloud platform with the proper software environment. Such a platform
includes operating system and runtime library support. The platform cloud is an integrated
computer system consisting of both hardware and software infrastructure. The user application
can be developed on this virtualized cloud platform using some programming languages and
software tools supported by the provider (e.g., Java, Python, .NET). The user does not manage
the underlying cloud infrastructure. The cloud provider supports user application development
and testing on a well-defined service platform.
The best examples of SaaS services include google workspace, Microsoft SharePoint, and the
CRM software from Salesforce.com.
• Low cost to both users and providers The cost to users and providers of the cloud system
built over the data centers should be reduced, including all operational costs.
• Security enforcement and data protection Data privacy and security defense mechanisms
must be deployed to protect the data center against network attacks and system interrupts and
to maintain data integrity from user abuses or network attacks.
• Green information technology Saving power consumption and upgrading energy efficiency
are in high demand when designing and operating current and future data centers.
MODULE 5
Three-tier architecture
Enterprise applications often use multitier architecture to encapsulate and integrate various
functionalities. Multitier architecture is a kind of client/server architecture in which the
presentation, the application processing, and the data management are logically separate
processes. The traditional two-tier, client/server model requires clustering and disaster recovery
to ensure resiliency. While the use of fewer nodes in an enterprise simplifies manageability,
change management is difficult as it requires servers to be taken offline for repair, upgrading,
and new application deployments. The business logic and data can be shared by both automated
and GUI clients. The only differences are the nature of the client and the presentation layer of
the middle tier. Separating business logic from data access enables database independence.
• Presentation layer: Presents information to external entities and allows them to interact with
the system by submitting operations and getting responses.
• Resource management layer: Also known as the data layer, deals with and implements the
different data sources of an information system.
UDDI specifications define a way to describe, publish, and discover information about web
services by creating a platform-independent, open framework. The UDDI specification is
focused on the definition of a collection of services supporting the description and discovery
of: Businesses, organizations, and other web services providers, the web services they make
available, and the technical interfaces which may be used to access those services. There are
two primary types of registries. A public registry is a logically centralized distributed service
that replicates data with other public registries on a regular basis. A private registry is only
accessible within a single organization or is shared by a group of business partners for a special
purpose. Data in a UDDI registry is organized as instance types:
• subscription A standing request to keep track of changes to the entities in the subscription.
• UDDI Publishers API This enables add, modify, and delete entries by providing save_ and
delete_ operations. In addition to the aforementioned look-up APIs, UDDI also defines general
purpose operation types, such as the next 4 specialized APIs.
• UDDI Security API Allows users to get and discard authentication tokens (get_autToken,
discard_autToken)
• UDDI Custody and Ownership Transfer API Enables registries to transfer the custody of
information among themselves and to transfer ownership of these structures one another
(transfer_entities, transfer_custody)