Fig 18 : Anatomy of the Aneka container
Aneka is a platform and a framework for developing distributed applications on the Cloud.
It harnesses the spare CPU cycles of a heterogeneous network of desktop PCs and servers or datacenters on demand.
Aneka provides developers with a rich set of APIs for transparently exploiting such resources and expressing the business logic of applications by using the preferred programming abstractions.
System administrators can leverage on a collection of tools to monitor and control the deployed infrastructure. This can be a public cloud available to anyone through the Internet, or a private cloud constituted by a set of nodes with restricted access.
The Aneka based computing cloud is a collection of physical and virtualized resources connected through a network, which are either the Internet or a private intranet.
Each of these resources hosts an instance of the Aneka Container representing the runtime environment where the distributed applications are executed.
The container provides the basic management features of the single node and leverages all the other operations on the services that it is hosting.
The services are broken up into
- Foundation, and
Fabric services directly interact with the node through the Platform Abstraction Layer (PAL) and perform hardware profiling and dynamic resource provisioning.
Foundation services identify the core system of the Aneka middleware, providing a set of basic features to enable Aneka containers to perform specialized and specific sets of tasks.
Execution services directly deal with the scheduling and execution of applications in the Cloud.
One of the key features of Aneka is the ability of providing different ways for expressing distributed applications by offering different programming models;
Execution services are mostly concerned with providing the middleware with an implementation for these models.
Additional services such as persistence and security are transversal to the entire stack of services that are hosted by the Container.
At the application level, a set of different components and tools are provided to:
- Simplify the development of applications (SDK);
- Porting existing applications to the Cloud; and
- Monitoring and managing the Aneka
A common deployment of Aneka is presented at the side. An Aneka based Cloud is constituted by a set of interconnected resources that are dynamically modified according to the user needs by using resource virtualization or by harnessing the spare CPU cycles of desktop machines.
If the deployment identifies a private Cloud all the resources are in house, for example within the enterprise. This deployment is extended by adding publicly available resources on demand or by interacting with other Aneka public clouds providing computing resources connected over the Internet.
Fig 19: Services
Parallelism for single machine computation
Parallelism has been a technique for improving the performance of computers since the early 1960’s, when Burroughs Corporation designed the D825, the first MIMD multiprocessor ever produced. From there on, a variety of parallel strategies have been developed. In particular, multiprocessing, which is the use of multiple processing units within a single machine, has gained a good deal of interest and gave birth to several parallel architectures.
One of the most important distinctions is made in terms of the symmetry of processing units. Asymmetric multi-processing involves the concurrent use of different processing units that are specialized to perform different functions. Symmetric multiprocessing features the use of similar or identical processing units to share the computation load.
Other examples, are non uniform memory access (NUMA) and clustered multi processing, which, respectively, define a specific architecture for accessing a shared memory between processors and the use of multiple computers joined together as a single virtual computer.
Symmetric and asymmetric multiprocessing are the techniques used to increase the performance of commodity computer hardware. The introduction of graphical processing units(GPUs), which are de facto processors, is an application of asymmetric processing, whereas multi core technology is the latest evolution of symmetric multiprocessing. Multiprocessor and especially multi core technologies are now of fundamental importance because of the physical constraint imposed on frequency scaling, which has been the common practice for performance gain in recent years.
It became no longer possible to increase the frequency of the processor clock without paying in terms of power consumption and cooling, and this condition became unsustainable in May 2004, when Intel officially cancelled the development of two new microprocessors in favor of multi core development.
This date is generally considered the end of the frequency-scaling era and the beginning of multi core technology. Other issues also determined the end of frequency scaling, such as the continuously increasing gap between processor and memory speeds and the difficulty of increasing the instruction-level parallelism in order to keep a single high-performance core busy. Multicore systems are composed of a single processor that features multiple processing cores that share the memory.
Each core has generally its own L1 cache, and the L2 cache is common to all the cores, which connect to it by means of a shared bus. Dual- and quad-core configurations are quite popular nowadays and constitute the standard hardware configuration for commodity computers. Architectures with multiple cores are also available but are not designed for the commodity market.
Multicore technology has been used not only as a support for processor design but also in other devices, such as GPUs and network devices, thus becoming a standard practice for improving performance. Multitasking and multithreading can be implemented on top of computer hardware that is constituted of a single processor and a single core, as was the common practice before the introduction of multi core technology.
In this case, the operating system gives the illusion of concurrent execution by interleaving the execution of instructions of different processes, and of different threads within the same process.
This is also the case in multiprocessor/multicore systems, since the number of threads or processes is higher than the number of processors or cores. Nowadays, almost all the commonly used operating systems support multitasking and multithreading. Moreover, all the mainstream programming languages incorporate the abstractions of process and thread within their APIs, whereas direct support of multiple processors and cores for developers is very limited and often reduced and confined to specific libraries, which are available for a subset of the programming languages such as C/C++.
Programming Applications with Threads
- Modern applications perform multiple operations at the same time. Developers organize pro- grams in terms of threads in order to express intra process concurrency.
- The use of threads might be implicit or explicit .
- Implicit threading happens when the underlying APIs use internal threads to perform specific tasks supporting the execution of applications such as graphical user interface (GUI) rendering, or garbage collection in the case of virtual machine-based languages.
- Explicit threading, is characterized by the use of threads within a program by application developers, who use this abstraction to introduce
- A thread identifies a single control flow, which is a logical sequence of instructions, within a sequence.
- By logical sequence of instructions, we mean a sequence of instructions that have been designed to be executed one after the other
- More commonly, a thread identifies a kind of yarn, that is used for sewing, and the feeling of continuity that is expressed by the interlocked fibers of that yarn is used to recall the concept that the instructions of thread express a logically continuous sequence of operations.
- Operating systems that supports multithreading identify threads as the minimal building blocks for expressing running.
- This means that, despite their explicit use by developers, any sequence of instruction that is executed by the operating system is within the context of a thread.
- As a consequence, each process contains at least one thread but, in several cases, is composed of many threads having variable lifetimes. Threads within the same process share the memory space and the execution context; besides this, there is no substantial difference between threads belonging to different processes.
- In a multitasking environment the operating system assigns different time slices to each process and interleaves their execution.
- The process of temporarily stopping the execution of one process, saving all the information in the registers (and in general the state of the CPU in order to restore it later), and replacing it with the information related to another process is known as a context switch.
- This operation is generally considered demanding, and the use of multithreading minimizes the latency imposed by context switches, thus allowing the execution of multiple tasks in a lighter.
- The state representing the execution of a thread is minimal compared to the one describing a process.
Multithreading with Aneka
As applications become increasingly complex, there is greater demand for computational power that can be delivered by a single multi-core machine.
- Often, this demand cannot be addressed with the computing capacity of a single
- It is then necessary to leverage distributed infrastructures such as
- Decomposition techniques can be applied to partition a given application into several units of work that, rather than being executed as threads on a single node, can be submitted for execution by leveraging
Even though a distributed facility can dramatically increase the degree of parallelism of applications, its use comes with a cost in term of application design and performance.
- For example, since the different units of work are not executing within the same process space but on different nodes both the code and the data needs to be moved to a different execution
- The same happens for results that need to be collected remotely and brought back to the master
- Moreover, if there is any communication among the different workers it is necessary to redesign the communication model eventually by leveraging the APIs provided by the middleware if any.
- In other words, the transition execution to a distributed from a single execution is process multi- threaded not transparent and application redesign and re-implementation are often
The amount of effort required to convert an application often depends on the facilities offered by the middleware managing the distributed infrastructure.
- Aneka, as a middleware for managing clusters, Grids, and Clouds, provides developers with advanced capabilities for implementing distributed applications.
- In particular, it takes traditional thread programming a step further. It lets you write multi-threaded applications in the traditional way, with the added twist that each of these threads can now be executed outside the parent process and on a separate machine.
- In reality, these “threads” are independent processes executing on different nodes, and do not share memory or other resources, but they allow you to write applications using the same thread constructs for concurrency and synchronization as with traditional
- Aneka threads, as they are called, let you easily port existing multi-threaded compute intensive applications to distributed versions that can run faster by utilizing multiple machines simultaneously, with a minimum conversion effort.
Economics of cloud computing
Cloud computing economics depends on four customer population metrics:
- Number of Unique Customer Sets
- Customer Set Duty Cycles
- Relative Duty Cycle Displacement
- Customer Set Load
These above metrics allow the cloud-providers to use less IT resources and obtain maximum IT resource.
Proper balancing & handling of these above resources can save up to 30% of the IT resources. For economic planning, Booz Allen Hamilton, a leading strategy, and technology consulting firm, has a clear understanding of and models for effective Cloud Computing-based life-cycle cost and economic modeling.
This firm addresses every aspect of cost related efforts & questions such as:
- If you are migrating current systems to a cloud, how will you handle (and cost) the migration?
- Will you migrate all IT related tasks into the cloud, or it will be partially migrated?
- What IT chores should remain in the current environment?
- Will you use a public cloud, or you will need a private cloud?
- If you are migrating IT requirements into a cloud, how will you handle and budget for the short- term operations of distributed and cloud infrastructures?
- What can special-purpose computing tasks be enabled in the cloud technology that wasn't possible in the current environment?
- Can the cloud provide levels of service commensurate with existing service-level agreements? Cloud technology provides users with strong facilities & economic The selection for implementing the private, public, community or hybrid cloud solely depends on the customer's specification for applications they want to use, the performance they need, the security they want to take & compliance requirement. Proper deployment model can save monetary value as well as time in a significant manner, provide better IT services & provide a higher level of reliability.
Achieve Cloud Economics for Operation & Services
Users get frustrated when they need to secure their resources to business requirements. Even if they're willing to pay the attributed cost, they may find that technology cannot deliver resources to address their needs. Frustrated by the unavailability of resources required to fulfill their needs, and for that, they opt for the options to obtain resources are as follows:
To obtain sufficient resources for enabling the business opportunities
Hire a senior IT manager or an IT management team to put their request. This may help in letting the business proceed forward with the full initiative. But doing this fosters disrespect for the existing cloud process.
- Request to the senior corporate manager for raising the technology and resources (in case of cloud- security, or cloud-infrastructure).
Economic Characteristics of Cloud
- Scalability: Access to unlimited computer resources without thinking about the economic This feature needs planning & provisioning.
- Low Entry barrier: Users can gain access to systems for small investments also; which allows the offer to access global resources to small ventures.
- Flexibility: Cloud provides high economic Users can re-size their resources based on their need. This feature allows optimizing the system & captures all possible requirements.
- Utility: As cloud providers 'pay-as-you-go' model, users can match their needs & resources on an ongoing This eliminates waste and added benefits of shifting risks from the client.
It refers to the software along with the hardware components such as storage drive, hardware, servers, virtual software, other cloud management software, and other networking devices;
All work together to support the computing requirement of the cloud computing model.
Moreover, the cloud technology holds a software abstraction layer that virtualizes the cloud resource & presents them to users locally.
Cloud Infrastructure Management Interface (CIMI) is an open standard API that is used to manage the cloud infrastructure. It enables its users to handle the entire cloud infrastructure easily by providing a means to interact with the provider & their consumer or developer.
The hypervisor can be defined as the firmware (a permanent set of instruction or code programmed into the read-only memory & is a low-level program) that acts as a manager for the virtual machine. It is also called Virtual Machine Monitor (VMM) which creates & runs the virtual machine. It provides the guest OS with a virtual operating platform to manages the execution of other applications.
There are two types of the hypervisor. These are:
- Native Hypervisor
- Hosted Hypervisor
In cloud technology, virtualized resources are kept & maintained by the service provider or the department of IT; these resources comprise of servers, memory, network switches, firewalls, load- balancers & storage. In the cloud computing architecture, the cloud infrastructure referred to the back-end components of the cloud.
Management Software firstly helps to configure the infrastructure then maintaining it. The Deployment software, on the other hand, is used to deploy & combine all applications on the cloud.
Network, as we all know is the key part of cloud technology allowing users to connect to the cloud via the internet. Multiple copies of data are kept stored in the cloud. This is because, if any storage resource fails - then the data can be extracted from another one. So, storage is another essential component of cloud infrastructure.
Server helps to handle & compute all cloud resources & offer services like allocation, de-allocation, sharing and monitoring the cloud resources and in some cases used to provide security.
Restrictions or Limitations of Cloud Infrastructures
The limitations of cloud technology concerning infrastructure are:
- Intelligent Monitoring