deepti project report - copy

Upload: taslim-alam

Post on 05-Apr-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 Deepti Project Report - Copy

    1/63

    AProject Report on

    Load Balancing in Cloud Computing

    In Partial Fulfillment of the Requirement for8 th Semester, B.E. (Computer Science and Engineering)

    Submitted by

    DeeptiAgrawalSwati Nasre

    Vibhuti Kumar UpadhyayMohammed TaslimAlam Ansari

    Under the guidance of Prof . S.D. Chaudhari

    DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

    J. L. CHATURVEDI COLLEGE OF ENGINEERING846, New Nandanvan Layout, Nagpur 440 009.

    Session 2011-2012

  • 8/2/2019 Deepti Project Report - Copy

    2/63

    CERTIFICATE

    This is to certify that the Project entitled

    Load Balancing in Cloud Computing

    is submitted by

    DeeptiAgrawalSwati Nasre

    Vibhuti Kumar UpadhyayMohammed TaslimAlam Ansari

    to RashtrasantTukadojiMaharaj Nagpur University, in the partial fulfillment of

    the requirement for Project in 8 th semester " Computer Science and Engineering "

    for the academic year 2011 2012.

    This report is a record of the work carried out by them and underwent requisite

    directions as per the University Curriculum.

    Under Guidance of

    Prof . S.D. Chaudhari

    Prof.S.D.Chaudharni Dr. S.S.Salankar(Head of Department) (Principal)

  • 8/2/2019 Deepti Project Report - Copy

    3/63

    i

    i

    ACKNOWLEDGEMENT

    The success of any work depends on efforts of many individuals. Wewould like to take this opportunity to express our deep gratitude to thosewho extended their support and have guided us to complete this projectwork.

    We wish to express our sincere and deepest gratitude to our guideProf.S.D. Chaudhari for his invaluable and unique guidance. We wouldalso like to thank her for the constant source of help, inspiration andencouragement in the successful completion of project. It has been ourprivilege and pleasure to work under her expert guidance.

    We like to thank Prof.S.D.Chaudhari (HOD) for providing us thenecessary information about topic. We would again like to thank Dr.S.S.Salankar , Principal of our College, for providing us the necessaryhelp and facilities we needed.

    We express our thanks to all the staff members of CSE Department whohave directly or indirectly extended their kind co-operation in thecompletion of our project Report.

    Date:Place:

    DeeptiAgrawal Swati Nasre

    Vibhuti Kumar UpadhyayMohammed TaslimAlam Ansari

  • 8/2/2019 Deepti Project Report - Copy

    4/63

    INDEX

    No . Chapters Page No.

    1. Problem Definition 1 2. Introduction2.1 Cloud Computing2.2 Cloud Components2.3 Types of Clouds2.4 Virtualization2.5 Services provided by Cloud Computing2.6 Characteristics of Cloud Computing

    2.7 Load Balancing

    24579

    1213

    3. Platform, Tools & Techniques (Hardware &Software)

    3.1 Back End3.2 Front End3.3 Hardware

    15

    4. Data Flow Diagrams 165. Project Methodology

    5.1 The stages of SDLC5.2 Planning & Analysis stage5.3 Development stage5.4 Integration and testing stage

    2020212631

    6. Screen Shots 367. Advantages & Applications 428. Future Scope & Conclusion 439. Publications 44

    10. Bibliography 47

  • 8/2/2019 Deepti Project Report - Copy

    5/63

  • 8/2/2019 Deepti Project Report - Copy

    6/63

    LIST OF TABLES

    Tableno.

    Table Title Page No.

    5.1

    5.2

    5.3

    Method Summary of CpuInfo class of

    SIGAR.

    Method Summary of Mem class of SIGAR.

    Method Summary of SysInfo class of SIGAR.

    26

    26

    27

  • 8/2/2019 Deepti Project Report - Copy

    7/63

    Problem Definition

  • 8/2/2019 Deepti Project Report - Copy

    8/63

    Problem Definition

    The goal of a cloud-based architecture is to provide some form of elasticity,

    the ability to expand and contract capacity on-demand. The implication is that at some

    point additional instances of an application will be needed in order for the architecture

    to scale and meet demand. That means there needs to be some mechanism in place tobalance requests between two or more instances of that application. The mechanism

    most likely to be successful in performing such a task is a load balancer.

    The challenges of attempting to build such architecture without a load

    balancer are staggering. There's no other good way to take advantage of additional

    capacity introduced by multiple instances of an application that's also efficient in

    terms of configuration and deployment. All other methods require modifications and

    changes to multiple network devices in order to properly distribute requests across

    multiple instances of an application. Likewise, when the additional instances of that

    application are de-provisioned, the changes to the network configuration need to be

    reversed.

    A load balancer provides the means by which instances of applications can be

    provisioned and de-provisioned automatically, without requiring changes to the

    network or its configuration. It automatically handles the increases and decreases incapacity and adapts its distribution decisions based on the capacity available at the

    time a request is made.

    Because the end-user is always directed to a virtual server, or IP address, on

    the load balancer the increase or decrease of capacity provided by the provisioning

    and de-provisioning of application instances is non-disruptive. As is required by even

    the most basic of cloud computing definitions, the end user is abstracted by the load

    balancer from the actual implementation and needs not care about the actual

    implementation. The load balancer makes one, two, or two-hundred resources -

    whether physical or virtual - appear to be one resource; this decouples the user from

    the physical implementation of the application and allows the internal implementation

    to grow, to shrink, and to change without any obvious effect on the user.

    Choosing the right load balancer at the beginning of such an initiative is

    imperative to the success of more complex implementations later. The right load

  • 8/2/2019 Deepti Project Report - Copy

    9/63

    balancer will be able to provide the basics required to lay the foundation for

    more advanced cloud computing architectures in the future, while supporting even the

    most basic architectures today. The right load balancer will be extensible.

    Figure 1.1: A Typical Load Balancer used in Cloud Computing

    Load balancing ensures that all the processor in the system or every node in

    the network does approximately the equal amount of work at any instant of time. This

    technique can be sender initiated, receiver initiated or symmetric type (combination of

    sender initiated and receiver initiated types).

    Our objective is to develop an effective load balancing algorithm maximize or

    minimize different performance parameters (throughput, latency for example) for theclouds of different sizes (virtual topology depending on the application requirement).

    The system will take the service as input which is requested by the

    cloud customer and then the role of load balancer begins. It will communicate with

    the clients present in its network and assign the load to the least loaded one.

    Client

    VirtualServer

    PhysicalServe

  • 8/2/2019 Deepti Project Report - Copy

    10/63

    Introduction

  • 8/2/2019 Deepti Project Report - Copy

    11/63

    2.1 Cloud Computing

    Cloud computing is the delivery of computing as a service rather than a product,

    whereby shared resources, software, and information are provided to computers and other

    devices as a utility (like the electricity grid) over a network (typically the Internet).

    Cloud computing provides computation, software applications, data access, data

    management and storage resources without requiring cloud users to know the location and

    other details of the computing infrastructure.

    End users access cloud based applications through a web browser or a light weight

    desktop or mobile app while the business software and data are stored on servers at a remote

    location. Cloud application providers strive to give the same or better service andperformance as if the software programs were installed locally on end-user computers.

    At the foundation of cloud computing is the broader concept of infrastructure

    convergence (or Converged Infrastructure) and shared. This type of data centre environment

    allows enterprises to get their applications up and running faster, with easier manageability

    and less maintenance, and enables IT to more rapidly adjust IT resources (such as servers,

    storage, and networking) to meet fluctuating and unpredictable business demand.

    In case of Cloud computing services can be used from diverse and widespread resources,

    rather than remote servers or local machines. There is no standard definition of Cloud

    computing. Generally it consists of a bunch of distributed servers known as masters,

    providing demanded services and resources to different clients known as clients in a network

    with scalability and reliability of data center. The distributed computers provide on-demand

    services. Services may be of software resources (e.g. Software asa Service, SaaS) or physical

    resources (e.g. Platform as a Service, PaaS) or hardware/infrastructure (e.g. Hardware as a

    Service, HaaS or Infrastructure as a Service, IaaS ). Amazon EC2 (Amazon Elastic ComputeCloud) is an example of cloud computing services.

    2.2 Cloud Components

    A Cloud system consists of 3 major components such as clients, datacenter, and

    distributed servers. Each element has a definite purpose and plays a specific role.

  • 8/2/2019 Deepti Project Report - Copy

    12/63

    Figure 2.1: Three components make up a cloud computing solution.

    2.2.1 Clients

    End users interact with the clients to manage information related to the cloud. Clients

    generally fall into three categories:

    Mobile: Windows Mobile Smartphone, Smartphones, like a Blackberry, or an iPhone.

    Thin: They dont do any computation work. They only display the information.

    Servers do all the works for them. Thin clients dont have any internal memory.

    Thick: These use different browsers like IE or Mozilla Firefox or Google Chrome to

    connect to the Internet cloud.

    Now-a-days thin clients are more popular as compared to other clients because of

    their low price, security, low consumption of power, less noise, easily replaceable and

    repairable etc.

    2.2.2 Datacenter

    Datacenter is nothing but a collection of servers hosting different applications. An end

    user connects to the datacenter to subscribe different applications. A datacenter may exist at a

    large distance from the clients.

  • 8/2/2019 Deepti Project Report - Copy

    13/63

    Now-a-days a concept called virtualisation is used to install software that allows multiple

    instances of virtual server applications.

    2.2.3 Distributed Servers

    Distributed servers are the parts of a cloud which are present throughout the Internet

    hosting different applications. But while using the application from the cloud, the user will

    feel that he is using this application from its own machine.

    2.3 Type of Clouds

    Based on the domain or environment in which clouds are used, clouds can be dividedinto following categories:

    Public Cloud Private Cloud Hybrid Cloud Community cloud

    2.3.1.Public Cloud

    Applications, storage, and other resources are made available to the general public by

    a service provider. Public cloud services may be free or offered on a pay-per-usage model.

    There are limited service providers like Microsoft, Google etc owns all Infrastructures at their

    Data Center and the access will be through Internet mode only. No direct connectivity

    proposed in Public Cloud Architecture.

    2.3.2. Private Cloud

    Private cloud is infrastructure operated solely for a single organization, whether

    managed internally or by a third-party and hosted internally or externally.

    They have attracted criticism because users "still have to buy, build, and manage them" and

    thus do not benefit from less hands-on management, essentially "[lacking] the economic

    model that makes cloud computing such an intriguing concept".

  • 8/2/2019 Deepti Project Report - Copy

    14/63

    2.3.3. Hybrid Cloud

    Hybrid cloud is a composition of two or more clouds (private, community or public)

    that remain unique entities but are bound together, offering the benefits of multiple

    deployment models.

    2.3.4. Community cloud

    Community cloud shares infrastructure between several organizations from a specific

    community with common concerns (security, compliance, jurisdiction, etc.), whether

    managed internally or by a third-party and hosted internally or externally. The costs are

    spread over fewer users than a public cloud (but more than a private cloud), so only some of

    the cost savings potential of cloud computing are realized.

    Figure 2.2: Types of Cloud

    2.4 VirtualizationIt is a very useful concept in context of cloud systems. Virtualisation means

    something which isnt real , but gives all the facilities of a real. It is the software

    implementation of a computer which will execute different programs like a real machine.

    Virtualisation is related to cloud, because using virtualisation an end user can use

    different services of a cloud. The remote datacenter will provide different services in a full or

    partial virtualised manner.

  • 8/2/2019 Deepti Project Report - Copy

    15/63

    Two types of virtualization are found in case of clouds are:

    Full virtualization Partial virtualization

    2.4.1 Full Virtualization

    In case of full virtualisation a complete installation of one machine is done on the

    machine. It will result in a virtual machine which which will have all the softwarethat are

    present in the actual server.

    Figure 2.3: Full Virtualization

    Here the remote datacenter delivers the services in a fully virtualised manner. Full

    virtualization has been successful for several purposes:

    Sharing a computer system among multiple users Isolating users from each other and from the control program Emulating hardware on another machine

    2.4.2 Partial virtualization

    In partial virtualisation, the hardware allows multiple operating systems to run on

    single machine by efficient use of system resources such as memory and processor. e.g.

    VMware software. Here all the services are not fully available, rather the services are

    provided

    partially.

  • 8/2/2019 Deepti Project Report - Copy

    16/63

    Figure 2.4: Partial virtualization.

    Partial virtualization has the following advantages:

    Disaster recovery: In the event of a system failure, guest instances are moved to

    another hardware until the machine is repaired or replaced.

    Migration: As the hardware can be replaced easily, hence migrating or moving the

    different parts of a new machine is faster and easier.

    Capacity management: In a virtualised environment, it is easier and faster to add

    more hard drive capacity and processing power. As the system parts or hardware can

    be moved or replaced or repaired easily, capacity management is simple and easier.

    2.5 Services provided by Cloud computing

    Service means different types of applications provided by different servers across the

    cloud. It is generally given as as a service . Services in a cloud are of 3 types:

    Software as a Service (SaaS) Platform as a Service (PaaS) Hardware as a Service (HaaS) or Infrastructure as a Service (IaaS)

    2.5.1 Software as a Service (SaaS)

  • 8/2/2019 Deepti Project Report - Copy

    17/63

    In SaaS, the user uses different software applications from different servers through

    the Internet. The user uses the software as it is without any change and do not needs to make

    lots of changes or doesnt require integration to other systems. The provider does all the

    upgrades and patching while keeping the infrastructure running.

    Figure 2.5: Software as a service (SaaS).

    The client will have to pay for the time he uses the software. The software that does a

    simple task without any need to interact with other systems makes it an ideal candidate for

    Software as a Service. Customer who isn t inclined to perform software development but

    needs high-powered applications can also be benefitted from SaaS.

    Some of these applications include:

    Customer resource management (CRM) Video conferencing IT service management Accounting Web analytics Web content management

    Benefits :

    The biggest benefit of SaaS is costing less money than buying the whole application.

    The service provider generally offers cheaper and more reliable applications as compared to

  • 8/2/2019 Deepti Project Report - Copy

    18/63

  • 8/2/2019 Deepti Project Report - Copy

    19/63

    It is also known as Infrastructure as a Service (IaaS). It offers the hardware as a

    servicetoa organisation so that it can put anything into the hardware according to its will.

    HaaS allows the user to rent resources as

    Server space Network equipment Memory CPU cycles Storage space

    Figure 2.7: Hardware as a service (HaaS)

    Cloud computing provides a Service Oriented Architecture (SOA) and Internet of

    Services (IoS) type applications, including fault tolerance, high scalability, availability,

    flexibility, reduced information technology overhead for the user, reduced cost of ownership,

    on demand services etc. Central to these issues lies the establishment of an effective load

    balancing algorithm.

    2.6 Characteristics of Cloud Computing

    Virtualization: Virtualizationtechnology allows servers and storage devices to be shared

    and utilization is increased. Applications can be easily migrated from one physical server

    to another.

    Multi-tenancy: Multi-tenancyenables sharing of resources and costs across a large pool

    of users thus allowing for:

    Centralization of infrastructure in locations with lower costs (such as real estate,

    electricity, etc.)

  • 8/2/2019 Deepti Project Report - Copy

    20/63

    Peak-load capacity increases (users need not engineer for highest possible load-

    levels)

    Utilization and efficiency improvements for systems that are often only 10 20%

    utilized.

    Reliability: Reliability is improved if multiple redundant sites are used, which makes

    well-designed cloud computing suitable for business continuity and disaster recovery.

    Scalability: Scalability and Elasticity via dynamic ("on-demand")provisioning of

    resources on a fine-grained, self-service basis near real-time, without users having to

    engineer for peak loads.

    Performance: Performance is monitored and consistent and loosely coupled

    architectures are constructed using web services as the system interface.

    Security: Security could improve due to centralization of data, increased security-

    focused resources, etc., but concerns can persist about loss of control over certain

    sensitive data, and the lack of security for stored kernels. Private cloud installations are

    in part motivated by users' desire to retain control over the infrastructure and avoid losing

    control of information security.

    Maintenance: Maintenance of cloud computing applications is easier, because they do

    not need to be installed on each user's computer and can be accessed from different

    places.

    2.7 Load balancing

    It is a process of reassigning the total load to the individual nodes of the collective

    system to make resource utilization effective and to improve the response time of the job

    simultaneously removing a condition in which some of the nodes are over loaded while some

    others are under loaded. A load balancing algorithm which is dynamic in nature does not

    consider the previous state or behaviour of the system, that is, it depends on the present

    behaviour of the system. The important things to consider while developing such algorithm

    are : estimation of load, comparison of load, stability of different system, performance of

    system, interaction between the nodes, nature of work to be transferred, selecting of nodes

  • 8/2/2019 Deepti Project Report - Copy

    21/63

    and many other ones. This load considered can be in terms of CPU load, amount of memory

    used, delay or Network load.

    2.7.2 Goals of Load balancing

    The goals of load balancing are:

    To improve the performance substantially

    To have a backup plan in case the system fails even partially

    To maintain the system stability

    To accommodate future modication in the system

    2.7.3 Types of Load balancing algorithms

    Depending on who initiated the process, load balancing algorithms can be of three

    categories:

    Sender Initiated: If the load balancing algorithm is initialised by the sender

    Receiver Initiated: If the load balancing algorithm is initiated by the receiver

    Symmetric: It is the combination of both sender initiated and receiver initiated

    Depending on the current state of the system, load balancing algorithms can be divided into 2

    categories:

    Static Load Balancing Algorithm Dynamic Load Balancing Algorithm

    Here we will concentrate upon the later type of algorithm.

    Dynamic Load balancing algorithm

    In a distributed system, dynamic load balancing can be done in two different

    ways: distributed and non-distributed. In the distributed one, the dynamic load

    balancing algorithm is executed by all nodes present in the system and the task of load

    balancing is shared among them. The interaction among nodes to achieve load

    balancing can take two forms: cooperative and non-cooperative]. In the first one, the

    nodes work side-by-side to achieve a common objective, for example, to improve the

  • 8/2/2019 Deepti Project Report - Copy

    22/63

    overall response time, etc. In the second form, each node works independently toward

    a goal local to it, for example, to improve

    the response time of a local task. Dynamic load balancing algorithms of

    distributed nature, usually generate more messages than the non-distributed ones

    because, each of the nodes in the system needs to interact with every other node. A

    benefit, of this is that even if one or more nodes in the system fail, it will not cause the

    total load balancing process to halt, it instead would affect the system performance to

    some extent.

  • 8/2/2019 Deepti Project Report - Copy

    23/63

    Platform, Tools &Techniques(Hardware & Software)

  • 8/2/2019 Deepti Project Report - Copy

    24/63

    3.1 Back End

    MySQL Version 5.1.36

    3.2 Front End

    Java 1.6 (jdk 1.6.0_04)

    3.3 Hardware

    Port Fast Ethernet Switch (DLink) LAN Wires

  • 8/2/2019 Deepti Project Report - Copy

    25/63

    Data Flow Diagrams

  • 8/2/2019 Deepti Project Report - Copy

    26/63

    Data Flow Diagrams

    Figure: 4.1 The Data Flow Diagram of The System.

  • 8/2/2019 Deepti Project Report - Copy

    27/63

    NOT FOUND

    FOUND

    GOODBYE SYSTEMINFORMATION

    WELCOME

    YES

    Figure 4.2. Flow Chart For getting details of clients connected to the server.

    BIND TO MULTISOCKETADDRESS

    CHECK FORCLIENT

    CONNECTION

    CHECKPROTOCOL

    TYPE

    REMOVE NAMEFROM DATABASE

    ADD NAME TODATABASE

    DOES ENTRYALREADY

    EXIST?

    INSERT NEWENTRY INTODATABASE

    UPDATE THEDATABASE

    UPDATE THE MAINWINDOW

    EXIT

    START

  • 8/2/2019 Deepti Project Report - Copy

    28/63

    FILE READ

    FACTORIAL

    Figure: 4.3. Flow Chart for Task Execution.

    INPUT NUMBER FOR FACTORIALENTER THE FILE NAME

    TYPE OFTASK

    AA

    SEARCH FORTHE

    APPROPRIATECLIENT

    ASSIGN JOB

    SEARCH IN THE RMIREGISTRY

    EXECUTE THE JOB

    A

    RERURN THE FACTORIALOF THE NUMBER

    RETURN THE CONTENT OFFILE

    EXIT

    START

  • 8/2/2019 Deepti Project Report - Copy

    29/63

    END-OF-LIST

    NO

    YES

    NO

    YES

    Figure 4.4. Flow Chart for Selecting the appropriate client for jobassignment.

    START

    GET THE DATABASEENTRIES

    WHILE (CLIEINTINFORMATION DTO)

    IS CPU USAGEMINIMUM

    ?

    IS RAM USAGEMINIMUM

    ?

    RETURN THE CLIENTNAME

  • 8/2/2019 Deepti Project Report - Copy

    30/63

    Project Methodology

  • 8/2/2019 Deepti Project Report - Copy

    31/63

    The stages of SDLC- Agile model:Agile Modeling is a practice-based methodology for modeling and documentation of

    software-based systems. It is intended to be a collection of values, principles, and practices

    for Modeling software that can be applied on a software development project in a more

    flexible manner than traditional Modeling methods.

    Agile software development is a group of software development methods based on

    iterative and incremental development, where requirements and solutions evolve through

    collaboration between self-organizing, cross-functional teams. It promotes adaptive planning,

    evolutionary development and delivery, a time-boxed iterative approach, and encourages

    rapid and flexible response to change. It is a conceptual framework that promotes foreseen

    interactions throughout the development cycle.

    Characteristics:

    Agile methods break tasks into small increments with minimal planning and do not

    directly involve long-term planning. Iterations are short time frames (timeboxes) that

    typically last from one to four weeks. Each iteration involves a team working through a full

    software development cycle, including planning,requirements analysis, design, coding, unit

    testing, and acceptance testing when a working product is demonstrated to stakeholders. This

    minimizes overall risk and allows the project to adapt to changes quickly.

    Team composition in an agile project is usually cross-functional and self-organizing,

    without consideration for any existing corporate hierarchy or the corporate roles of team

    members.

    Agile methods emphasize face-to-face communication over written documents when

    the team is all in the same location.Agile development emphasizes working software as the

    primary measure of progress. This, combined with the preference for face-to-face

    communication, produces less written documentation than other methods.

    Testing in Agile and Waterfall:One of the similarities of the agile and traditional methods, such as the waterfall

    model of software design, is to conduct the testing of the software as it is being

    developed.The key difference is that in the agile method, the customer and developers are in

    close communication, whereas in the traditional method, the customer is initially represented

    by the requirement and design documents.

    http://en.wikipedia.org/wiki/Software_development_process_modelshttp://en.wikipedia.org/wiki/Software_development_process_models
  • 8/2/2019 Deepti Project Report - Copy

    32/63

    5.1 The Planning & Analysis Stage:

    5.1.1 Opearational Feasibility Study:

    The important things to consider while developing a load balancing algorithm are :estimation of load, comparison of load, stability of different system, performance of system,

    interaction between the nodes, nature of work to be transferred, selecting of nodes and many

    other ones. This load considered can be in terms of CPU load, amount of memory used, delay

    or Network load.

    Depending on the current state of the system, load balancing algorithms can be

    divided into 2 categories as given below:

    Static Load Balancing : It doesn t depend on the current state of the system. Prior knowledge

    of the system is needed.

    Dynamic Load Balancing : Decisions on load balancing are based on current state of the

    system. No prior knowledge is needed. So it is better than static approach.

    For the design of the dynamic load balancer we need some way of fetching out the

    current state of the system frequently so that the balancing decision can be based upon it.

    The entire system of balancing is divided into following 3 basic tasks:

    Take out the information: The part of the dynamic load balancing algorithm responsible for

    collecting information about the nodes in the system.

    Select an appropriate system: It specifies the processors involved in the load exchange, i.e.

    the part of the load balancing algorithm which selects a destination node for a transferred

    task.

    Execution of task: The part of the dynamic load balancing algorithm which selects a job for

    transferring from a local node to a remote node.

  • 8/2/2019 Deepti Project Report - Copy

    33/63

    5.1.2 Technical Feasibility Study:

    Specific Technology Keywords:

    JAVA

    Java is a high-level, third generation programming language, like C, FORTRAN,

    Smalltalk, Perl, and many others. User can use Java to write computer applications that

    crunch numbers, process words, play games, store data or do any of the thousands of

    other things computer software can do.Compared to

    other programming languages, Java is most similar to C. However although Java shares

    much of C's syntax, it is not C. Knowing how to program in C or, better yet, C++, will

    certainly help user to learn Java more quickly, but user don't need to know C to learn

    Java. Unlike C++ Java is not a superset of C. A Java compiler won't compile C code, and

    most large C programs need to be changed substantially before they can become Java

    programs.What's most special about Java in relation to other programming languages is

    that it lets One write special programs called applets that can be downloaded from the

    Internet and played safely within a web browser.

    . A Java applet cannot write to hard disk without permission. It cannot write to

    arbitrary addresses in memory and thereby introduce a virus into your computer. It should

    not crash system.

    Java is the blend of the best elements of its rich heritages combined with the

    innovative concepts required by its unique environment. It is the language grounded in

    the needs and experiences of the people who devised it. Java is cohesive and logically

    consistent. It gives the programmer full control. Its a language for professional

    programmers. Java enhances and refines the object-oriented paradigm used by C++.

    The original impetus for java was not the internet. Instead the primary motivation was

    the nee d for platform independent. The goal for java developers was write once, run

    anywhere any time forever .

    Java code runs on variety of CPU under differing environments. It doesnt require

    the expensive compiler to be built for each CPU separately.

    In java there are clearly defined ways to accomplish a given task. It has various

    packages and classes along with the grateful methods to implement vast requirements.

    When developing a Java program it is important to select the appropriate Java Graphical

    User Interface (GUI) components.

  • 8/2/2019 Deepti Project Report - Copy

    34/63

    Users have no way of checking these programs for bugs or for out-and-out

    malicious behavior before downloading and running them. Java solves this problem by

    severely restricting what an applet can do. Java was designed to make it much easier to

    write bug free code. According to The most important part of helping programmers write

    bug-free code is keeping the language simple.

    Java is easy to learn:

    Java was designed to be easy to use and is therefore easy to write, compile, debug,

    and learn than other programming languages.

    Java is object-oriented:

    This allows you to create modular programs and reusable code.

    Java is platform-independent:

    One of the most significant advantages of Java is its ability to move easily from one

    computer system to another. The ability to run the same program on many different systems

    is crucial to World Wide Web software, and Java succeeds at this by being platform-

    independent at both the source and binary levels.

    Java is distributed:

    Java is designed to make distributed computing easy with the networking capability

    that is inherently integrated into it. Writing network programs in Java is like sending and

    receiving data to and from a file.

    Java is secure:

    Java considers security as part of its design. The Java language, compiler, interpreter,

    and runtime environment were each developed with security in mind.

    Java is robust:

    Robust means reliability. Java puts a lot of emphasis on early checking for possible

    errors, as Java compilers are able to detect many problems that would first show up during

    execution time in other languages.

    Java is multithreaded:

    Multithreaded is the capability for a program to perform several tasks simultaneously

    within a program. In Java, multithreaded programming has been smoothly integrated into it,

    while in other languages, operating system-specific procedures have to be called in order to

    enable multithreading.

  • 8/2/2019 Deepti Project Report - Copy

    35/63

    The Sigar API

    The Sigar API provides a portable interface for gathering system information such as:

    System memory, swap, cpu, load average, uptime, logins Per-process memory, cpu, credential info, state, arguments, environment, open

    files

    File system detection and metrics Network interface detection, configuration info and metrics TCP and UDP connection tables Network route table This information is available in most operating systems, but each OS has their

    own way(s) providing it.

    SIGAR provides developers with one API to access this information regardless of the

    underlying platform.The core API is implemented in pure C with bindings currently

    implemented for Java, Perl, Ruby, Python, Erlang, PHP and C#.

    MySQL 5.1

    The following are the features that make MySQL worth sing in the project:

    I. Partitioning:

    This capability enables distributing portions of individual tables across a file system,

    according to rules which can be set when the table is created.

    II. Row-based replication:

    Replication capabilities in MySQL originally were based on propagation of SQL

    statements from master to slave. This is called statement-based replication .

    III. Plugin API:

    MySQL 5.1 adds support for a very flexible plugin API that enables loading and

    unloading of various components at runtime, without restarting the server.

    Although the work on this is not finished yet, plugin full-text parsers are a first step in

    this direction. This permits users to implement their own input filter on the indexed text,

    enabling full-text search capability on arbitrary data such as PDF files or other document

    formats.

    IV. Event scheduler:

    MySQL Events are tasks that run according to a schedule. When you create an event,

    you are creating a named database object containing one or more SQL statements to be

  • 8/2/2019 Deepti Project Report - Copy

    36/63

    executed at one or more regular intervals, beginning and ending at a specific date and

    time.

    V. Server log tables:

    Before MySQL 5.1, the server writes general query log and slow query log entries to

    log files.

    JDBCJDBC is a Java-based data access technology (Java Standard Edition platform) from Sun

    Microsystems, Inc.. It is not an acronym as it is unofficially referred to as Java Database

    Connectivity. This technology is an API for the Java programming language that defines

    how a client may access a database. It provides methods for querying and updating data in

    a database. JDBC is oriented towards relational databases. A JDBC-to-ODBC bridge

    enables connections to any ODBC-accessible data source in the JVM host environment.

    JDBC allows multiple implementations to exist and be used by the same application. The

    API provides a mechanism for dynamically loading the correct Java packages and

    registering them with the JDBC Driver Manager. The Driver Manager is used as a

    connection factory for creating JDBC connections.

    JDBC connections support creating and executing statements. These may be update

    statements such as SQL's CREATE, INSERT, UPDATE and DELETE, or they may be

    query statements such as SELECT. Additionally, stored procedures may be invoked

    through a JDBC connection.

    NET BEANS 6.7

    The following windows and tools are central to performing your daily

    development tasks in the IDE:

    Projects window Files window Runtime window Navigator window Source Editor GUI Builder Compiler

  • 8/2/2019 Deepti Project Report - Copy

    37/63

  • 8/2/2019 Deepti Project Report - Copy

    38/63

    long getUsed ()Get the Total used system memory.

    double getUsedPercent ()Get the Percent total used system memory.

    Table 5.2: Method Summary of Mem class of SIGAR.

    SysInfo: this class has following methos that take out the information about OperatingSystem:

    java.lang.String getDescription ()Get the description.

    java.lang.String getMachine ()Get the machine.

    java.lang.String getName ()Get the name.

    java.lang.String getPatchLevel ()Get the patch_level.

    java.lang.String getVendor ()Get the vendor.

    java.lang.String getVendorCodeName ()Get the vendor_code_name.

    java.lang.String getVendorName ()Get the vendor_name.

    java.lang.String getVendorVersion ()Get the vendor_version.

    java.lang.String getVersion ()Get the version.

    Table 5.3: Method Summary of SysInfo class of SIGAR.

    5.3.2. Module 2 Implementation of the Location Policy:

    After receiving the details of all the clients connected in a network by using the

    information policy, the location policy now transfers for the job to that respective

    client. For this we use the following technology:

    RMI:Java Remote Method Invocation

    This is a technical literature study which purpose is to describe the basic parts

    of Java Remote Method Invocation. Remote Method Invocation, abbreviated as RMI

    provides support for distributed objects in Java, i.e. it allows objects to invoke

    methods on remote objects. The calling objects can use the exact same syntax as for

    http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsed()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsed()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsedPercent()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsedPercent()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getDescription()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getDescription()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getMachine()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getMachine()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getPatchLevel()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getPatchLevel()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendor()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendor()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorCodeName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorCodeName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorVersion()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendorCodeName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getVendor()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getPatchLevel()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getName()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getMachine()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/SysInfo.html%23getDescription()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsedPercent()http://c/Users/PRASHU/Desktop/Cloudproject/hyperic-sigar-1.6.4/docs/javadoc/org/hyperic/sigar/Mem.html%23getUsed()
  • 8/2/2019 Deepti Project Report - Copy

    39/63

    local invocations. The Java RMI model has two general requirements. The first

    requirement is that the RMI model shall be simple and easy to use and the second

    requirement it that the model shall fit into the Java language in a natural way.

    Distributed Object Application : An RMI application is often composed of two

    separate programs, a server and a client. The server creates remotes objects and makes

    references to those objects accessible. Then it waits for clients to invoke methods on

    the objects. The client gets remote references to remote objects in the server and

    invokes methods on those remote objects. The RMI model provides an distributed

    object application to the programmer. It is a mechanism that the server and the client

    use to communicate and pass information between each other. A distributed object

    application has to handle the following properties:

    Locate remote objects: The system has to obtain references to remote objects.

    This can be done in two ways. Either by using RMIs naming facility, the

    rmiregistry, or by passing and returning remote objects.

    Communicate with remote objects: The programmer doesnt have to handle

    communication between the remote objects since this is handled by the RMI

    system. The remote communication looks like an ordinary method invocation for

    the programmer.

    Load class bytecodes for objects that are passed as parameters or return

    values: All mechanisms for loading an objects code and transmitting data is

    provided by the RMI system. Figure 2.1, below, illustrates an RMI distributed

    application. In this example the RMI registry is used to obtain references to a

    remote object. First the server associates a name with a remote object in the RMI

    registry. When a client wants access to a remote object it looks up the object, by

    its name, in the registry. Then the client can invoke methods on the remote object

    at the server.

  • 8/2/2019 Deepti Project Report - Copy

    40/63

    Figure 5.1: An illustration of a distributed object application

    Interfaces and Classes: Since Java RMI is a single-language system, the programming

    of distributed application in RMI is rather simple. All interfaces and classes for the RMI

    system are defined in the java.rmi package. Figure 2.2, below, illustrates the relationship

    between some of the classes and interfaces. The RemoteObject class implements the

    Remote interface while the other classes extend RemoteObject .

    Figure 5.2: Interfaces and Classes in java.rmi package

    The Remote Interface: A remote interface is defined by extending the Remote interface

    that is provided in the java.rmi package. The remote interface is the interface that

    declares methods that clients can invoke from a remote virtual machine. The remote

    interface must satisfy the following conditions:

    It must extend the interface Remote . Each remote method declaration in the remote interface must include the exception

    RemoteException (or one of its superclasses) in its thrown clause.

  • 8/2/2019 Deepti Project Report - Copy

    41/63

    The RemoteObject Class: RMI server functions are provided by the class

    RemoteObject and its subclasses RemoteServer , UnicastRemoteObject and Activatable .

    Here is a short description of what the different classes handle:

    RemoteObject provides implementations of the methods hashCode , equals and

    toString in the class java.lang.Object .

    The classes UnicastRemoteObject and Activatable create remote objects and export

    them, i.e. the classes make the remote objects available to remote clients.

    The RemoteException Class: The class RemoteException is a superclass of the

    exceptions that the RMI system throws during a remote method invocation. Each remote

    method that is declared in a remote interface must specify RemoteException (or one of

    itssuperclasses) in its throws clause to ensure the robustness of applicatio ns in the RMI

    system. When a remote method invocation fails, the exception RemoteException is

    thrown. Communication failure, protocol errors and failure during marshalling or

    unmarshalling of parameters or return values are some reasons for RMI failure.

    RemoteException is an exception that must be handled by the caller of the remote method,

    i.e. it is a checked exception. The compiler ensures that the programmer have handled

    these exceptions.

    Implementation of a simple RMI system: This is a simple RMI system with a client and

    a server. The server contains one method ( helloWorld ) that returns a string to the client.

    To build the RMI system all files has to be compiled. Then the stub and the skeleton,

    which are standard mechanisms communication with remote objects, are created with the

    rmic compiler. This RMI system contains the following files

    HelloWorld.java: The remote interface.

    HelloWorldClient.java: The client application in the RMI system. HelloWorldServer.java: The server application in the RMI system.

    When all files are compiled, performing the following command will create the stud and

    the skeleton:

    rmicHelloWorldServer

    Then the two classes will be created, HelloWorldServer_Stub.class and

    HelloWorldServer_Skel.class , where the first class represents the client side of the RMI

    System and the second file represents the server side of the RMI system.

  • 8/2/2019 Deepti Project Report - Copy

    42/63

    5.4 The Integration & Testing Stage:

    MESSAGE

    UPDATE

    Figure 5.3: Integration of the system.

    APPLICATIONMANAGER

    DATABASE

    COMMUNICATIONMANAGER

    GUIMANAGER

    RECEIVER MAIN WINDOW

    WELCOME GOODBYE SYSTEMINFORMATION

  • 8/2/2019 Deepti Project Report - Copy

    43/63

    5.4.1 Integration of the system

    The system is integrated in such a way that when its execution starts the application manager

    is invoked. The application manager starts every time the application starts. The

    application manager has two sub managers inside it named Communication manager and the

    GUI manager.

    The communication manager receives the packet coming from the node and tests it

    for its category that is what the type of protocol is has that the data contained in.

    The communication manager has 3 types of protocols namely Welcome protocol,

    Goodbye protocol and SystemInformation protocol. The welcome protocol adds the name of

    the client into the database, the Boodbye protocol deletes the name of client from the

    database whereas the SystemInformation protocol updates database by adding current status

    of the client machine. This is done by the handle protocol that is present inside all these three

    protocols.

    The operations performed by communication manager are taken into account by the

    GUI manager that throws all the modifications done onto the screen and user sees the result.

    5.4.2 Testing of the system

    During the software development process, errors are inevitably introduced and some of them

    are even amplified as a project progresses. Software Testing is the process of executing a

    program or system with the intent of finding errors.

    . Planning for software testing involves organizing testing at three levels unit, integration,

    and high-order. The intent and scope of testing varies for these three levels. Planning for

    software testing also involves procuring tools to automate testing and identifying the people

    who will perform testing.

    A problem with software testing is that testing all combinations of inputs and

    preconditions is not feasible when testing anything other than a simple product. This means

    that the number of defects in a software product can be very large and defects that occur

    infrequently are difficult to find in testing.

    More significantly, par functional dimensions of quality--for example, usability,

    scalability, performance, compatibility, reliability--can be highly subjective; something that

    constitutes sufficient value to one person may be intolerable to another.

  • 8/2/2019 Deepti Project Report - Copy

    44/63

    Software bugs will almost always exist in any software module with moderate size:

    not because programmers are careless or irresponsible, but because the complexity of

    software is generally intractable -- and humans have only limited ability to manage

    complexity. It is also true that for any complex systems, design defects can never be ruled out

    completely.

    When Testing Is Carried Out?

    A common practice of software testing is that it is performed by an independent group

    of testers after the functionality is developed but before it is shipped to the customer. This

    practice often results in the testing phase being used as project buffer to compensate for

    project delays, thereby compromising the time devoted to testing. Another practice is to start

    software testing at the same moment the project starts and it is a continuous process until the

    project finishes.

    . Testing is usually performed for the following purposes:

    To improve quality

    As computers and software are used in critical applications, the outcome of a bug can be

    severe. Bugs can cause huge losses. Bugs in critical systems have caused airplane crashes,

    allowed space shuttle missions to go awry, halted trading on the stock market, and worse.

    Bugs can kill. In a computerized embedded world, the quality and reliability of software is a

    matter of life and death.

    Quality means the conformance to the specified design requirement. the minimum

    requirement of quality, means performing as required under specified circumstances.

    Debugging, a narrow view of software testing, is performed heavily to find out design defects

    by the programmer. Finding the problems and get them fixed is the purpose of debugging in

    programming phase.

    For Verification & Validation

    Testing can serve as metrics. It is heavily used as a tool in the Verification & Validation

    process. Testers can make claims based on interpretations of the testing results, which either

    the product works under certain situations, or it does not work. We can also compare the

    quality among different products under the same specification, based on results from the

    same test.

  • 8/2/2019 Deepti Project Report - Copy

    45/63

    We cannot test quality directly, but we can test related factors to make quality visible. Quality

    has three sets of factors -- functionality, engineering, and adaptability. These three sets of

    factors can be thought of as dimensions in the software quality space. Each dimension may be

    broken down into its component factors and considerations at successively lower levels of

    detail.

    For reliability estimation

    Software reliability has important relations with many aspects of software, including the

    structure, and the amount of testing it has been subjected to. Based on an operational profile

    (an estimate of the relative frequency of use of various inputs to the program testing can serve

    as a statistical sampling method to gain failure data for reliability estimation.

    The system is tested in steps, in line with the planned build and release strategies,

    from individual units of code through integrated subsystems to the deployed releases and to

    the final system. Testing proceeds through various physical levels of the application

    development lifecycle. Each completed level represents a milestone on the project plan and

    each stage represents a known level of physical integration and quality. These stages of

    integration are known as test levels. Levels of testing include the following:

    1. Unit Test - Verifies the program specifications to the internal logic of the program or

    module and validates the logic.

    2. Integration Test - Verifies proper execution of application components including

    interfaces. Communication between modules within the sub-system is tested in a controlled

    and isolated environment within the project. String testing is part of the Integration testing

    level/phase which is both the detection as well as the correction of programming/code

    generation problems. Once a series of components or unit, which must eventually work or

    communicate with each other have been coded and unit tested, performance of an initial

    "string" test is conducted. This "stringing" together of the components or units for execution

    as a unit, tends to be a somewhat informal process directed at finding any communication or

    parameter passing problems which may not yet have been detected. A "sign-off" should not

    be given until the entirety of the connected/integrated units or components are working as a

    smooth, seamless, and error free module.

    3. System Test - Verifies proper execution of the entire application components including

    interfaces to other applications. Both functional and structural types of tests are performed to

    verify that the system is functionally and operationally sound.

  • 8/2/2019 Deepti Project Report - Copy

    46/63

    4. System Integration Test - Verifies the integration of all applications, including interfaces

    internal and external to the organization, with their hardware, software and infrastructure

    components in a production-like environment.

    5. User Acceptance Test - Verifies that the system meets user requirements as specified. It

    simulates the user environment and emphasizes security, documentation and regression tests.

    6. Operability Test - Verifies that the application can operate in the production environment.

    Operability tests are performed after, or concurrent with User Acceptance Tests.

    When to stop testing?

    Testing is potentially endless. We cannot test till all the defects are unearthed and

    removed -- it is simply impossible. At some point, we have to stop testing and ship the

    software. The question is when.

    Realistically, testing is a trade-off between budget, time and quality. It is driven by profit

    models. The pessimistic and unfortunately most often used approach is to stop testing

    whenever some or any of the allocated resources -- time, budget, or test cases -- are

    exhausted. The optimistic stopping rule is to stop testing when either reliability meets the

    requirement, or the benefit from continuing testing cannot justify the testing cost. This will

    usually require the use of reliability models to evaluate and predict reliability of the software

    under test. Each evaluation requires repeated running of the following cycle: failure data

    gathering -- modelling -- prediction. This method does not fit well for ultra-dependable

    systems, however, because the real field failure data will take too long to accumulate.

  • 8/2/2019 Deepti Project Report - Copy

    47/63

  • 8/2/2019 Deepti Project Report - Copy

    48/63

    Figure 6.1: Main Window (1)

    The output screen shows a scenario where there is only one client is connected to the

    server.

    The table on the screen shows the system details of the client connected to it.

  • 8/2/2019 Deepti Project Report - Copy

    49/63

    Figure 6.2: Main Window (2)

    The output screen shows a scenario where there are three clients connected to the

    server. The table on the screen shows the system details of the clients connected to it.

  • 8/2/2019 Deepti Project Report - Copy

    50/63

    Figure 6.3: Task Placement Window

    This window allows the user to choose a task or application that he/she desires to use

    on the cloud. Here weve two small applications: One is Factorial calculation and

    another is the File Read Service.

  • 8/2/2019 Deepti Project Report - Copy

    51/63

    Figure 6.4: Factorial Task Placement

    The figure shows that the task is placed to the client which was least loaded and gives

    client-name and total time required for the execution along with the result.

  • 8/2/2019 Deepti Project Report - Copy

    52/63

    Figure 6.5: File Read Task Placement

    The figure shows that the task is placed to the client which was least loaded and gives

    client-name and total time required for the execution along with the result.

  • 8/2/2019 Deepti Project Report - Copy

    53/63

    Figure 6.6: The About Window

  • 8/2/2019 Deepti Project Report - Copy

    54/63

    Advantages & Applications

  • 8/2/2019 Deepti Project Report - Copy

    55/63

    Advantages

    In complex and large systems, there is a tremendous need for load balancing. For

    simplifying load balancing globally (e.g. in a cloud), one thing which can be done is,

    employing techniques would act at the components of the clouds in such a way that the

    load of the whole cloud is balanced.

    Applications

    This application is useful in all types of load balancing applications whether it is

    sender initiated or receiver initiated or symmetric load balancing technique where the

    parameters like CPU usage, memory usage, network load, etc. have got greater significance.

    The application can also be modified so that it can modularize the task and assign its

    subparts to different clients present in the network.

    This module can be useful with both centralized and decentralized computing

    environment. The modularization of the tasks into smaller subtasks speeds up the computing

    process and improves the performance.

  • 8/2/2019 Deepti Project Report - Copy

    56/63

    Future Scope & Conclusion

  • 8/2/2019 Deepti Project Report - Copy

    57/63

    Future Work

    Cloud Computing is a vast concept and load balancing plays a very important role in

    case of Clouds. There is a huge scope of improvement in this area. We have discussed onlytwo divisible load scheduling algorithms that can be applied to clouds, but there are still other

    approaches that can be applied to balance the load in clouds. The performance of the given

    algorithms can also be increased by varying different parameters.

    This module can further be refined by adding feature of modularizing of the

    larger tasks into smaller ones so that services that need more time and hardware may be

    executed by different clients on the network and thereby improving performance and

    reducing execution time.

    ConclusionCloud computing provides a Service Oriented Architecture (SOA) and Internet of

    Services (IoS) type applications, including fault tolerance, high scalability, availability,

    flexibility, reduced information technology overhead for the user, reduced cost of ownership,

    on demand services etc. Central to these issues lies the establishment of an effective load

    balancing algorithm.

    A load balancer provides the means by which instances of applications can beprovisioned and de-provisioned automatically, without requiring changes to the network or its

    configuration. It automatically handles the increases and decreases in capacity and adapts its

    distribution decisions based on the capacity available at the time a request is made.

  • 8/2/2019 Deepti Project Report - Copy

    58/63

    Publications

  • 8/2/2019 Deepti Project Report - Copy

    59/63

    Paper 1: Deepti Agrawal, Swati Nasre, Vibhuti Kumar Upadhyay, Mohammed Taslim Alam Ansari Presented a paper on topic Load Balancing in Cloud Computing on a national level event SPITZE 2012 on 18/2/2012 held at J. L. Chaturvedi College of Engineering,

    Nagpur.

  • 8/2/2019 Deepti Project Report - Copy

    60/63

    Load Balancing in Cloud ComputingDeepti Agrawal Vibhuti Upadhyay Md. Taslim Alam Ansari Swati Nasre B.E. (CSE) B.E. (CSE) B.E. (CSE) B.E. (CSE)

    J. L. C. C. E., J. L. C. C. E., J. L. C. C. E., J. L. C. C. E.,Nagpur Nagpur Nagpur Nagpur

    Abstract: Managing large compute clusters requiresbenchmarks with representative work- loads toevaluate performance metrics such as taskscheduling delays and machine resourceutilizations, machine configurations, and schedulingalgorithms. Existing approaches to workloadcharacterization for high performance computingand grids focus on requirements for CPU, memory,disk, I/O and network. However, in addition toresource requirements, cloud computing workloadscommonly include task placement constraints. Taskplacement constraints (hereafter, just constraints)address machine heterogeneity, diverse applicationrequirements, application optimization, and faulttolerance. Constraints limit the machines on which atask can run. A load balancer provides the means bywhich instances of applications can be provisioned andde-provisioned automatically, without requiringchanges to the network or its configuration. Itautomatically handles the increases and decreases incapacity and adapts its distribution decisions based onthe capacity available at the time a request is made.Because the end-user is always directed to a virtualserver, or IP address, on the load balancer the increaseor decrease of capacity provided by the provisioningand de-provisioning of application instances is non-disruptive. As is required by even the most basic of cloud computing definitions, the end user is abstractedby the load balancer from the actual implementationand needs not care about the actual implementation.The load balancer makes one, two, or two-hundredresources - whether physical or virtual appear to beone resource; this decouples the user from the physicalimplementation of the application and allows theinternal implementation to grow, to shrink, and tochange without any obvious affect on theuser.

    Introduction

    Cloud computing is where software applications,processing power, data and potentially even artificialintelligence are accessed over the Internet. Today thecloud computing is gaining much more importance inthe IT field as it provide different types of servicesnamely Saas (Software as a service), Paas (Platformas a service) and Iaas (Infrastructure as a service )also known as Haas (Hardware as a service). Due toon demand service by the cloud vendor the use of cloud computing as tremendously increased and inturn there is a basic need to balance the load of thetask placed by the client. This requires certain

    benchmarks like CPU Utilization, RAM utilization,Operating system needed. In order to understand

    these concepts in better way consider the examplegiven below.

    Figure 1: Illustration of the impact of constraints onmachine utilization in a Load Balancing in CloudComputing By combination of the line thickness andstyle. Task can be scheduled only on the machinesthat have the corresponding line thickness and style.Figure 1 illustrates the impact of constraints onmachine utilization in a compute cluster. There aresix machines M1, , M6 (depicted by squares) and

    ten tasks T1, , T10 (Depicted by circles). There arefour constraints c1, , c4. Constraints are indicatedby the combinations of line thickness and line styles.In this example, each task requests a singleconstraint, and each machine satisfies a singleconstraint. A task can only be assigned to a machinethat satisfies its constraint; that is, the line style andthickness of a circle must be the same as itscontaining square. One way to quantify machineutilization is the ratio of tasks to styles. In thisexample, each task requests a single constraint, andeach machine satisfies a single constraint. A task canonly be assigned to a machine that satisfies its

    constraint; that is, the line style and thickness of acircle must be the same as its containing square. Oneway to quantify machine utilization is the ratio of tasks to machines. Proposed Architecture: Theproposed architecture for load balancing comprisesof client side program, a central server program andclustered server program. The several clusterconnected with the central server sends its OS,RAM and CPU information to the central server.When the client issues any request the centralserver checks the configuration of the entiremachine and send the task for execution to thatmachine whose response time is less than a second.

    Those clusters whose response time is very highwill not be given the task for execution as it canincrease the scheduling delay in the

  • 8/2/2019 Deepti Project Report - Copy

    61/63

    Application:1. Efficiently manages the task placement in computecluster.2. Efficiently manages the task placement in distributednetwork.

    References:1. M. F. Arlitt and C. L. Williamson. Web serverworkload characterization: the search for invariants. InProceedings of the ACM SIGMETRICS international

    conference on Measurement and modeling of computersystems, 1996.2. P. Barford and M. Crovella. Generating representativeweb workloads for network and server performanceevaluation. In Proceedings of the ACM SIGMETRICSinternational conference on Measurement and modelingof computer systems, 1998.3. M. Calzarossa and D. Ferrari. A sensitivity study of the clustering approach to workload modeling.SIGMETRICS Performance Evaluation Review, 1986.

  • 8/2/2019 Deepti Project Report - Copy

    62/63

    Bibliography

  • 8/2/2019 Deepti Project Report - Copy

    63/63