+ All Categories
Home > Documents > MOBILE CLOUD COMPUTING: CASE STUDIES

MOBILE CLOUD COMPUTING: CASE STUDIES

Date post: 28-Jan-2023
Category:
Upload: independent
View: 1 times
Download: 0 times
Share this document with a friend
56
MOBILE CLOUD COMPUTING: CASE STUDIES by ELIZABETH HALASH THESIS Submitted to the Graduate School of Wayne State University, Detroit, Michigan in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE 2010 MAJOR: COMPUTER ENGINEERING Approved by: _____________________________________ Advisor Date _____________________________________ _____________________________________ _____________________________________ _____________________________________
Transcript

ŀ MOBILE CLOUD COMPUTING: CASE STUDIES

by

ELIZABETH HALASH

THESIS

Submitted to the Graduate School

of Wayne State University,

Detroit, Michigan

in partial fulfillment of the requirements

for the degree of

MASTER OF SCIENCE

2010

MAJOR: COMPUTER ENGINEERING

Approved by:

_____________________________________ Advisor Date _____________________________________ _____________________________________ _____________________________________ _____________________________________

UMI Number: 1490482

All rights reserved

INFORMATION TO ALL USERS The quality of this reproduction is dependent upon the quality of the copy submitted.

In the unlikely event that the author did not send a complete manuscript

and there are missing pages, these will be noted. Also, if material had to be removed, a note will indicate the deletion.

UMI 1490482

Copyright 2011 by ProQuest LLC. All rights reserved. This edition of the work is protected against

unauthorized copying under Title 17, United States Code.

ProQuest LLC 789 East Eisenhower Parkway

P.O. Box 1346 Ann Arbor, MI 48106-1346

ii

Acknowledgements

I would like to especially thank my family for supporting me throughout my academic

career, everyone studying in the Cloud and Internet computing Lab at Wayne State for all of

their help and great technical discussions, and D. Cheng-Zhong Xu for encouraging me to

continue my research and for guiding me throughout my work.

iii

TABLE OF CONTENTS

ACKNOWLEDGMENTS ............................................................................................................................................. ii

List of Figures ............................................................................................................................................................ vi

List of Tables ............................................................................................................................................................ vii

Chapter 1 Introduction and Motivation........................................................................................................................1

1.1 Background of Cloud Computing......................................................................................................................1

1.2 Challenges of Cloud Computing .......................................................................................................................4

1.3 Objective ...........................................................................................................................................................5

1.4 Summary of Contribution ..................................................................................................................................6

1.5 Thesis Organization ..........................................................................................................................................7

Chapter 2 Related Work .............................................................................................................................................9

2.1 Survey of the State of the Art ...........................................................................................................................9

2.2 Current Market Cloud Providers .................................................................................................................... 10

2.2.1 Google App Engine................................................................................................................................. 10

2.2.2 Microsoft Azure ....................................................................................................................................... 10

2.2.3 Amazon Elastic Compute Cloud ............................................................................................................. 11

2.3 Mobile Cloud Computing ............................................................................................................................... 12

2.3.1 Mobile Cloud Computing Categories ...................................................................................................... 13

2.3.2 Mobile Cloud Architecture ...................................................................................................................... 16

2.4 Sidebar on Google’s High Speed Network .................................................................................................... 18

Chapter 3 System Design ........................................................................................................................................ 19

3.1 Remote Execution Methods .......................................................................................................................... 19

3.2 Dynamic vs. Static Code Offload ................................................................................................................... 19

3.3 Communication Protocols .............................................................................................................................. 19

3.4 Code Partitioning ........................................................................................................................................... 20

3.5 Extraction Requirements ............................................................................................................................... 21

3.6 Architecture Choices ..................................................................................................................................... 21

Chapter 4 System Implementation .......................................................................................................................... 22

iv

4.1 Outline ........................................................................................................................................................... 22

4.2 Java RMI NASA Benchmark ......................................................................................................................... 22

4.2.1 Java RMI ................................................................................................................................................. 22

4.2.2 NASA Benchmarks ................................................................................................................................. 23

4.2.3 Remotely: Desktop to WSU servers ....................................................................................................... 24

4.2.4 iPhone Implementation Using a Distributed File System ....................................................................... 24

4.3 Java RMI Chess Game ................................................................................................................................. 25

4.3.1. Small HTTP Server for Dynamic Code Offload ..................................................................................... 26

4.3.2 Sending Multiple Requests ..................................................................................................................... 26

4.4. Java RMI Security......................................................................................................................................... 26

4.5 Google Android to App Engine Chess Game ................................................................................................ 27

4.5.1 Communication Protocol: HTTP ............................................................................................................. 27

4.5.2 Android Development Mobile Device ..................................................................................................... 28

4.5.3 Google App Engine as the Remote Server ............................................................................................ 29

4.5.4 Remote Execution .................................................................................................................................. 29

4.5.5 The Client Android Application – App Inventor ....................................................................................... 30

Chapter 5 Evaluation ............................................................................................................................................... 31

5.1 Evaluation Methodologies ............................................................................................................................. 32

5.2 NASA Benchmarks Evaluation ...................................................................................................................... 33

5.3 Android App Evaluation ................................................................................................................................. 36

5.4 Discussion ..................................................................................................................................................... 37

5.4.1 Performance ........................................................................................................................................... 37

5.4.2 Reliability ................................................................................................................................................ 39

5.4.3 Replication .............................................................................................................................................. 39

5.4.4 Consistency ............................................................................................................................................ 39

5.4.5 Mobility .................................................................................................................................................... 40

5.4.6 Security ................................................................................................................................................... 40

Chapter 6 Conclusions and Future Work ................................................................................................................ 41

v

6.1 Conclusions and Contributions ...................................................................................................................... 41

6.2 Future Work ................................................................................................................................................... 43

References .............................................................................................................................................................. 45

ABSTRACT .............................................................................................................................................................. 47

AUTOBIOGRAPHICAL STATEMENT ..................................................................................................................... 48

vi

LIST OF FIGURES

FIGURE 1: CLOUD COMPUTING MANAGEMNET OFFERINGS [2]GGGGGGGGGGGGGGGGGGG.. 2

FIGURE 2: JAVA RMI COMMUNICATION FLOWGGGGGGGGGGGGGGGGGGGGGGGGGGG 23

FIGURE 3: RMI USING A DISTRIBUTED FILE SYSTEMGGGGGGGGGGGGGGGGGGGGGGGG 25

FIGURE 4: CHESS GAME EXECUTIONGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 25

FIGURE 5: GOOGLE ANDROID TO APP ENGINEGGGGGGGGGGGGGGGGGGGGGGGGGG.. 27

FIGURE 6: ANDROID EMULATOR RUNNING THE CHESS GAMEGGGGGGGGGGGGGGGGGGG. 28

FIGURE 7: APP INVENTOR INTERFACE IN CHROME BROWSERGGGGGGGGGGGGGGGGGGG 30

FIGURE 8: MG BENCHMARK RUN TIMES GGGGGGGGGGGGGGGGGGGGGGGGGGGGG..33

FIGURE 9: BG BENCHMARK TESTGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG34

FIGURE 10: DYNAMIC VS. DEDICATED SERVER GGGGGGGGGGGGGGGGGGGGGGGGGG35

vii

LIST OF TABLES

TABLE 1: MG BENCHMARK RUN TIMESGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG. 33

TABLE 2: EXECUTION TIMES OF SERVER, LAPTOP, AND IPHONE RUNNING A NASA BENCHMARK

TEST. GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG36

TABLE 3: EXECUTION TIMES OF MOBILE DEVICE AND APP ENGINE SERVERGGGGGGGGGGGG.. 36

TABLE 4: GOOGLE APP ENGINE SERVER RTT INFO GGGGGGGGGGGGGGGGGGGGGGGG.37

TABLE 5: HUMAN-COMPUTER INTERACTION EVALUATIONS. LEFT-SUBJECTIVE OPINIONS RELATED

TO RESPONSE TIMES. RIGHT-SURVEY OF OPIIONS RELATED TO RTTGG........................................ 38

1

Chapter 1 Introduction and Motivation

In the early days of computing technology, when computers took up the space of an entire room,

many ’dumb’ terminals, or clients, would be connected to a main computer. Many clients could utilize the

computational power and storage of the mainframe at the same time. As transistors and CPUs came into

play, shrinking personal computers, it became more feasible for a user to purchase their own computer.

However, today, mobile devices are becoming smaller and smaller and we are seeing that there

is either a physical or economic limit to the amount of storage and processing power that can fit into these

devices. It seems that the original model of client-mainframe computing may be a good answer for this

situation. However, we can now utilize existing wireless networks to connect mobile devices to servers in

massive datacenters, rather than hardwiring all clients to a server. This idea of connecting to unseen

data may be where the term “cloud” came from, since it seems that the extra power is coming out of

nowhere.

Companies are only just beginning to investigate the possibilities of the cloud and provide cloud

services for business and personal use. There is much potential in utilizing the resources of the cloud,

most of which has not been researched yet. Client machines can become much more powerful by

connecting to these cloud datacenters, but what are the options of doing so? Furthermore, integrating

mobile devices with the cloud could prove even more advantageous. As these devices become smaller

and smaller, consumers are conversely demanding more functionality and features. Bridging the gap

between high-end servers and mobile devices could solve the computing problem, though research is

needed to identity the advantages and limitations.

1.1 Background of Cloud Computing

Cloud computing is the combination of hardware and software provided remotely as a service.

When people refer to the “cloud,” they are usually referring to a datacenter of servers that provide the

storage and processing power of the applications contained in the “cloud.” From an IT perspective, it has

the potential to transform a large portion of the industry. This is due to both relative ease of use and

economics.

Any application needs a computation

communication. In order to achieve

virtualized to hide their implementation.

on the requirements of the programmer and the level

following list and figure 1 provides three examples of cloud providers across the spectrum of user control:

1) Users have nearly full contro

2) General purpose computing, no access to underlying operating system (Microsof

3) Specific application, less control, but faster automatic scaling of resources (Google AppE

An important question is why cloud computing is becoming popular now. One of the biggest

factors needed to enable cloud computing is high speed pervasive broadband internet. Without a

connection between the client and server, cloud computing would be impossible. Other important factors

are related to new business strategies. These strategies involve a pay

allows customers to only pay for the cloud services that they use. This allows a bus

productivity without worrying about being able to meet higher demand at a moment’s notice. Also, new

unprecedented economies of scale have allowed massive datacenters to be built for much less than a

company trying to maintain their own

the creation and use of virtual machines. Additionally, the growing use of these technologies has led to

the standardization of certain software stacks.

FIGURE

2

Any application needs a computation engine, physical and virtual storage space

communication. In order to achieve the illusion of infinite capacity, each of these resources

implementation. Different utility computing offerings will be distinguished based

the programmer and the level of management needed by the IT profession

provides three examples of cloud providers across the spectrum of user control:

Users have nearly full control of software stack (Amazon EC2)

General purpose computing, no access to underlying operating system (Microsof

Specific application, less control, but faster automatic scaling of resources (Google AppE

An important question is why cloud computing is becoming popular now. One of the biggest

factors needed to enable cloud computing is high speed pervasive broadband internet. Without a

server, cloud computing would be impossible. Other important factors

are related to new business strategies. These strategies involve a pay-as-you-go billing model that

allows customers to only pay for the cloud services that they use. This allows a bus

productivity without worrying about being able to meet higher demand at a moment’s notice. Also, new

unprecedented economies of scale have allowed massive datacenters to be built for much less than a

company trying to maintain their own room of servers. [2] Fast x86 virtualization has allowed process in

the creation and use of virtual machines. Additionally, the growing use of these technologies has led to

software stacks.

FIGURE 1: CLOUD COMPUTING MANAGEMNET OFFERINGS [2]

space, and a model of

each of these resources needs to be

computing offerings will be distinguished based

of management needed by the IT professional. The

provides three examples of cloud providers across the spectrum of user control:

General purpose computing, no access to underlying operating system (Microsoft Azure)

Specific application, less control, but faster automatic scaling of resources (Google AppEngine)

An important question is why cloud computing is becoming popular now. One of the biggest

factors needed to enable cloud computing is high speed pervasive broadband internet. Without a

server, cloud computing would be impossible. Other important factors

go billing model that

allows customers to only pay for the cloud services that they use. This allows a business to increase

productivity without worrying about being able to meet higher demand at a moment’s notice. Also, new

unprecedented economies of scale have allowed massive datacenters to be built for much less than a

has allowed process in

the creation and use of virtual machines. Additionally, the growing use of these technologies has led to

3

Another reason cloud computing is becoming popular now is because of user demand. Cloud

computing promises many benefits to users, such as the Illusion of limitless resources and accessible

data from anywhere. Application developers are able to add more resources to their apps on demand, as

needed. Start-up companies do not need to pay a large up-front commitment to use the cloud, instead

using a pay-as-needed model. Performance does not need to be reduced due to cost as the cost of 1000

servers/1 hour = cost of 1 server for 1000 hours.

This presents a very attractive quality of cloud computing: its economics. Previously, the only

options were either over-provisioning or under-provisioning. Over-provision refers to buying more

resources than normally needed so that peak load can always be handled. Though service interruptions

are avoided and peak demand is always met, resources are wasted the majority of the time. On the other

hand, under-provisioning means that resources are purchased based on the average load. In this

situation business is lost during peak demand, and resources are still wasted during times of low demand,

though not as dramatically as over-provisioning. Neither of these situations is ideal. Fortunately, cloud

computing does provide a near-ideal solution. Since cloud resources can be added and removed on

demand, users can allocate resources to meet their customer demand. Thus, businesses only pay for

what they use and do not lost any business during peak times,

Cloud computing also provides the opportunity for new types of applications. Parallel processing

and mobile applications stand to benefit the most. Processes that analyze terabytes of data that took

hours to finish could take a fraction of the time to complete if the resources of the cloud are used. Lastly,

mobile interactive applications could provide real time data by connecting to the cloud. Such services

need the power of the cloud because they rely on large data sets that need to be highly available. This is

especially true of applications that rely on multiple data sources.

Mobile Cloud Computing

Mobile devices, such as smart phones, PDAs and netbooks, continue to grow in popularity.

However, cell phones are no longer considered to be simple communication devices. Today most mobile

devices incorporate various functions, such as music players or games. A shortcoming of mobile devices

is their limited computing capabilities due to portability and cost issues. Bridging the gap between high-

4

end servers and mobile devices could solve the computing problem and is an important research focus of

distributed computing.

Cloud computing is the key technology that enables a seamless integration of high performance

servers and mobile devices. It is a style of computing in which dynamically scalable resources are

provided as a service over the Internet. Mobile devices can extend their computing capabilities by

exporting the service from computing clouds. In this cloud computing model, mobile devices are thin-

clients that only provide the interfaces or consoles to the complex applications. [4] The computational-

heavy processing like 3D image rendering in games or mathematical optimization in scientific simulations

is actually processed in the cloud. Thus, mobile applications could become more complex while the actual

devices could become smaller. [1]

1.2 Challenges of Cloud Computing

From this cloud computing model, it is easy to see the great possibility of this technology.

However, there are obstacles to address before cloud computing can be deemed reliable. Challenges

related to network latency and bandwidth limitations must tackled. The biggest issue is availability of

service. People will not want to move all of their data to the cloud if they do not feel they can always

reliably access and modify it. Other network-related issues include deadzones, and poor, slow internet

connections. There are many points along a network that can bottleneck transfer speeds.

Another key issue is data confidentiality and security. Users must be assured that their privacy

will remain intact. This will require various types of encryption and layers of firewalls.

Manageability is particularly important in cloud environments. Relative to traditional systems, it is

complicated by three factors: limited human intervention, high-variance workloads, and a variety of

shared infrastructures. [3] In the majority of cases, there will be no system administrators to assist

developers with their cloud-based applications; the platform will have to do much of that work

automatically. Mixed workloads have always been difficult to tune, but may be unavoidable in this context.

Even a single customer’s workload can vary widely over time due to short bursts of work. Furthermore,

unknown bugs seem to occur as datacenters scale upward. Finding these issues and fixing them is a

very difficult task on such a large scale.

5

As more cloud providers enter the market, more proprietary software is offered to users. Variable

storage standards will ultimately hinder cloud computing from growing. Instead, cloud computing needs

standardization. Lastly, from a business perspective, a good software payment model has yet to be

proposed. Will users want to pay buy the hour in order to use Microsoft Word?

1.3 Objective

The goal of this project is to stretch the usual implementation of client-server communications

using the common communication platforms of both JAVA RMI and HTTP (hypertext transfer protocol). It

will create an infrastructure-as-a-service model and analyze the benefits of cloud computing. JAVA RMI

is used as one of the main communication protocols to connect and pass information between the client

and server. The results of the project should show decreased execution times when a client offloads

applications, such as the computationally intensive NASA benchmark tests or chess engine calculations,

to a more powerful server. The capabilities of the server are measured by executing multithreaded

versions of the benchmark tests and by increasing the search depth of the chess engine. A chess game

demonstration will provide a visual and interactive model that displays the advantages of cloud computing

and providing infrastructure-as-a-service. The scalability of this model is also tested by sending multiple

requests on different ports and measuring any execution delay. Finally, security issues will be addressed

by working with the Java security manager and policy file options.

In addition to using a laptop computer as the client machine, an iPhone mobile device as well as

a Google Android mobile device emulator are used to initiate server execution. This mobile cloud

computing framework should further prove the possibilities of IaaS.

The goal of this work is not only to offer an IaaS model, but also to evaluate its potential. Thus,

this research attempts to answer the questions: is Infrastructure as a service a time efficient, viable option

and what are the advantages and limitations of mobile cloud computing?

Research Phases

The first step of this research is to study and identify mobile cloud computing options. This

includes a survey of the existing cloud providers, such as Google and Microsoft, as well as current

research implementations of mobile cloud computing. Next, I build my own small-scale examples.

Implementations begin on desktop machines since this is the most familiar and accessible platform. From

6

there, applications can be ported to mobile devices such as an Apple iPhone and Google Android mobile

device. The applications used as benchmarks include the NASA Benchmark tests and a chess game.

Both were chosen because they involve computationally-intensive code execution and easily changeable

degrees of computation. The CPU power can be tested by increasing the depth of search of these

applications. Two communication protocols are used to implement these cloud computing examples: 1)

JAVA RMI for its accessible use of socket programming and 2) HTTP because of its widespread and

ubiquitous use.

Next, I evaluate those implementations by measuring the advantage through execution times.

The goal of the evaluation step is to answer two main questions: Is cloud computing feasible and

quantitatively advantageous and what are the advantages and limitations of mobile cloud computing? For

comparison purposes, the NASA benchmarks are run on a common desktop machine, the android

device, and remotely on CIC lab servers. The clients used for remote execution include the desktop

machine and the iPhone. Both static and dynamic code offload execution times are recorded in order to

measure the cost of using dynamic code offload.

Remote chess game execution is accomplished through the use of both Java RMI and HTTP.

The Java RMI implementation is only run using a desktop machine as the client and the CIC lab servers

as the remote cloud. It provides an example of dynamic code offload for an interactive application.

Finally, a system using an Android device as the client, Google’s App Engine as the remote server, and

HTTP as the communication protocol is created. Execution times are measured, comparing local mobile-

device-only runtimes with runtimes using the App Engine. This provides a real-world example of mobile

cloud computing and a quantitative analysis of the current power of the cloud.

The quantitative analysis of each of the above experiments will provide the first evidence of the

advantages of cloud computing. In addition, I evaluate the obstacles related to cloud computing, such as

security, network reliability, and infrastructure and programming issues.

1.4 Summary of Contribution

My results show that mobile cloud computing is indeed a viable option and a time-efficient way

to perform CPU-intensive operations. Several cloud computing systems were created and evaluated.

7

Java RMI and HTTP were used in new implementations, as was Google’s App Engine, which is used to

support a mobile application rather than a web-based application. Evaluation results show clear

advantages of cloud computing. Computing execution time on a server vs. a local client machine, the

server completes its calculation in 40% less time. The results are even more drastic comparing a mobile

device with using the cloud, with as much as 99% less time measured by server vs. the mobile device.

Lastly, running a chess game’s decision engine took 30 times longer on an Android mobile device

compared to running it on the Google App Engine. Thus, mobile cloud computing was studied in details

and determined to promise great possibilities

1.5 Thesis Organization

Now I outline the road map of this thesis. Chapter 2 reviews related work in Cloud Computing

and Mobile Cloud Computing. I first discuss current market cloud providers, including Google’s App

Engine, Microsoft Azure , and Amazon’s Elastic Compute Cloud. Then I discuss implementations of

mobile cloud computing including MAUI and a 3-tiered architecture involving cloudlets.

Chapter 3 discusses the design options of cloud computing. Design Options include remote

execution methods, dynamic vs. static code offload, communication protocols, code partitioning, and

number of architecture tiers. These options are discussed with the relevance of mobile cloud

computing in mind.

Chapter 4 outlines the different research implementations of cloud computing. Java RMI is used

to remotely execute NASA Benchmark tests from both a desktop client machine and a mobile device

client machine. Java RMI is also used to remotely execute a desktop chess game. The creation of an

android application that communicates with Google’s App Engine is also summarized. This application is

a chess game and the computer engine is executed remotely on Google’s servers.

8

Chapter 5 summarizes the test results of the above implementations. The execution times of

the NASA Benchmark tests are compared and analyzed. The time to remotely execution code from the

android device is also measured.

Chapter 6 offers further discuss related to the evaluation in the context of cloud computing in

broader terms. Cloud computing performance, reliability, replication, consistency, mobility, and security

are reviewed.

Chapter 7 presents conclusions of this research work. The contributions to this area are also

reviewed. Finally, possible future work is mentioned. In particular, this research could be expanded in

the areas of scheduling, scalability, security, and reliability.

9

Chapter 2 Related Work

2.1 Survey of the State of the Art

Cloud computing is the combination of hardware and software provided remotely as a service;

however, as can be imagined, this can be offered in a wide variety of forms [9]:

Software as a service (SaaS): Complete application systems delivered over the Internet on some

form of "on-demand" billing system. Examples include Salesforce.com, which provides software for

tracking sales, accounts, contacts, etc. and WebEx, which provides online desktop sharing and

conference calling.

Platform as a service (PaaS): Vendors provide development platforms and middleware, allowing

developers to simply code and deploy without directly interacting with underlying infrastructure. Examples

include Google AppEngine and Microsoft Azure,

Infrastructure as a service (IaaS): Raw infrastructure, such as servers and storage, is provided

directly as an on-demand service. Examples include Amazon Web Services and GoGrid.

There are two different ways providers and users view IaaS. The cloud can either act as a

datacenter, strictly providing the hardware to users, or it can provide more services, but less user control.

Cloud Infrastructure providers are in the business of providing you equivalent datacenter functionality in

the cloud using their scale for cost-effective service delivery. They must also package this functionality to

provide you a high level of control as it’s no longer your datacenter.

“Cloudcenters,” datacenters in the cloud, focus on making your Cloud Infrastructure look very

much like infrastructure you already have or are already familiar with, while Infrastructure Web Services

ask you to embrace a new paradigm. Cloudcenters provide a direct equivalent to traditional datacenters

and hence are usually more desirable for IT staff, systems operators, and other datacenter savvy folks.

Infrastructure Web Services on the other hand are more analogous to Service-Oriented-Architectures

(SOA), require significant programming skills, and are much more comfortable for software developers.

The three most popular consumer cloud providers currently are: Microsoft Azure, Google AppEngine, and

Amazon’s EC2. Microsoft Azure and Google AppEngine are closer to the definition of Platform-as-a-

Service then Infrastructure-as-a-Service. In terms of providing IaaS, those two services are limited. Even

10

Amazon’s web service used proprietary protocols, forcing the user to learn and adapt to their methods.

Each is described in more detail below.

2.2 Current Market Cloud Providers

2.2.1 Google App Engine

This is a platform for developing and hosting web applications in Google-managed data centers.

Google-managed is the key word in that sentence because Google maintains tight control over this

service. Below is an example of some of the Google’s restrictions:

• Threads cannot be created; one can only modify the existing thread state.

• Direct network connections are not allowed; URL connections can be used instead.

• Direct file system writes are not allowed; memory, memcache, and the datastore are used

instead. (Apps can read files which are uploaded as part of the apps.)

• Java2D is not allowed.

• Native Code not is allowed; only pure Java libraries are allowed.

Google even places restrictions of the timing of requests. Each request gets a maximum of 30

seconds in which it has to complete or the AppEngine will throw an exception. If you are building a web

application which requires large number of datastore operations, you have to figure out how to break

requests into small chunks such that it does complete in 30 seconds. You also have to design a way to

detect failures such that clients can reissue the request if they fail.

Though seemingly very restrictive, Google App Engine does provide a simple gateway to cloud

computing. Google provides a free software development kit that allows a user to easily setup a servlet

programming environment. Inexperienced web programmers can have their own server running on the

internet fairly quickly. Communication between the client and the app engine uses HTTP requests. Thus,

if required, java objects can be passed to the server using serialization and xml documents. Its

availability and accessibly made App Engine a great choice as a commercial server to use with the

mobile chess application demonstration.

2.2.2 Microsoft Azure

11

Microsoft Azure is an application platform in the cloud that allows applications to be hosted and

run at Microsoft datacenters. It provides a cloud operating system called Windows Azure that serves as a

runtime for the applications and provides a set of services that allows development, management and

hosting of applications remotely. All services and applications run on top of the Windows Azure OS.

As this is a Microsoft product, it is not surprising that development is limited to Microsoft software. Users

must develop on Windows 7, Vista, or Server 2008 and use Microsoft visual studio to write code.

In support of the Azure OS, Microsoft also created three core components:

Microsoft SQL Azure: database

AppFabric platform: connects cloud services and applications running on the platform

Codename “Dallas”: information marketplace for data and web services

As these are all Microsoft-created products, it will take time to become familiar with them. For example,

even though Microsoft’s database is similar to SQL, it is modified with Microsoft functionality. Also, one

can only build apps with .NET, PHP, and Java.

I setup my own azure account and found my experience with Google’s App Engine better overall.

Google provides a great user experience and developer software, which is constantly updated and

supported. Microsoft’s demanding use of their proprietary software was Azure biggest setback.

2.2.3 Amazon Elastic Compute Cloud

EC2 is the central part of Amazon's cloud computing platform, Amazon Web Services (AWS).

EC2 allows users to rent VMs to run their own computer applications. EC2 provides a web service

enabling a user to boot an Amazon Machine Image to create a virtual machine, which Amazon calls an

"instance", containing any software desired.

A user can create, launch, and terminate server instances as needed, paying by the hour for

active servers, hence the term "elastic". EC2 provides users with control over the geographical location of

instances which allows for latency optimization and high levels of redundancy. For example, to minimize

downtime, a user can set up server instances in multiple zones which are insulated from each other for

most causes of failure.

Although this service is more in-line with the IaaS definition, Amazon does introduce proprietary

measures. It provides Xen hosting machines, but image management and storage is completely Amazon

12

customized. Amazon also customized the file system, database, and message protocol, rather than

sticking with industry standards. It does support different kinds of applications, usually a batch processing

or web application of some kind. Amazon’s language of choice is python, but others are supported.

Thus, although Amazon’s features may be familiar, they are not exactly the same as industry standards.

Offloading your work to their cloud will likely require some workarounds, rather than being seamless.

Returning to the idea of cloudcenters, using them should be a comparatively easy transition.

Cloudcenters provide the same kinds of tools that all datacenter and server operators are already

accustomed to, but with all the traditional advantages of cloud (i.e. self-service, pay-as-you-go, and

scalability). Instead of creating completely new paradigms, cloudcenters are a methodology by which

you, the customer, can have a virtual datacenter hosted ‘in the sky’.

Besides the obvious advantage of ‘looking like’ your current datacenter, cloudcenters allow for

strategies like using the Cloud for off-site disaster recovery. It will be much easier to model a copy of your

current datacenter to a cloudcenter than it would be to model a copy onto an Infrastructure Web

Service. It is the Cloud of choice for sysadmins, operators, and Enterprise IT staff who need

infrastructure that looks just their current datacenter infrastructure.

Other research in this area has manly focused on large-scale IaaS, examining VM migration and

scheduling. Instead, this work focuses on IaaS in terms of applications and thread-level management.

2.3 Mobile Cloud Computing

One of the key areas that presents great possibilities for cloud computing is the mobile handset

market. The global mobile phones market grew by 12% in 2006 to reach a value of $104.3 billion at a

volume of 800.2 million units. In 2009 its value was 1.26 billion. In 2011, the global mobile phones

market is forecast to have a value of $211.9 billion at 1.804 billion units, an increase of 103.1% since

2006. [13] In addition, users continue to expect an experience more and more similar to their desktop

computers or laptops when using their mobile devices. Demand is increasing for resource-intensive

applications, such as video games, navigation guides, or location-based social networking. Other

applications could see widespread use if offered, such as augmented reality apps, which automatically

provide the user data from just a picture, or behavior-corrective apps that real-time fact checking.

Healthcare also provides an untapped market. For example, body-worn sensors could become more

13

sensitive through the use of the cloud and doctors could quickly access full databases of patient histories

and receive real-time updates of patient statues.

Computational power and battery consumption are the two main limiting factors of mobile

applications. At any level of technology, considerations of size, weight, battery life, and ease of use lead

to compromises when it comes to computational resources such as processor speed, memory size, and

disk capacity. While mobile hardware continues to evolve and improve, it will always be resource poor

compared to static hardware. Thus many different research teams are investigating ways to connect

mobile devices to the vast resources of the cloud, thereby granting such devices with seemingly limitless

computational power and energy.

2.3.1 Mobile Cloud Computing Categories

It is possible for mobile devices to use the cloud for a variety of services. The three main areas

mobile cloud computing can enhance are computation, data storage and search, and communication.

These are the three focus areas since cloud computing offers seemingly limitless resources through

remote computation, remote memory management and search, and communication methods that utilize

internet networks and the web.

Utility Computing: Remote Computation

Often called utility computing since it adds functionality, using the cloud for remote computation

introduces many benefits for mobile computing. One huge advantage is that the mobile devices can save

a considerable amount of energy and battery life since their CPUs are required to do less work. Also, it

gives cell phones the illusion of unlimited computing power since programs can run on clusters of servers

rather than a single gigahertz processor.

Mobile cloud computing achieves remote execution through code replication, process/function

migration, or VM migration of the entire operating system. Through remote execution applications can

take advantage of the resource-rich infrastructure by delegating code execution to remote servers. Code

replication creates a copy of the program code on the server prior to execution. When communication is

possible, the program executes all or certain parts of the code, determined by the programmer, on the

server and delivers the results back to the client. Process, or function, migration offloads the

computationally intensive parts of the code to the server at runtime. Again, this method relies on the

14

programmer to choose which methods are resource or CPU-intensive and should be executed on a more-

powerful server. The third popular technique is to use full process or full VM migration in which individual

applications or entire OSs are offloaded on run on the cloud infrastructure.

Example applications that could utilize offloading computation to the cloud include entertainment

applications, such as video games, high resolution image rendering, and scientific data analysis.

Specially, applications that can efficiently utilize parallel computing.

MAUI

One research implementation of remote execution is MAUI. [15] MAUI focuses on energy

savings. It can best be described as a dynamic system that decides whether methods should be

migrated and run remotely. It relies on the programmer to choose which methods are considered

“remotable,” then, based on network conditions, offloads those methods at runtime. It uses code

portability to create two versions of a smartphone application: one that runs locally on the smartphone

and the others that runs remotely in the infrastructure. If a disconnect occurs, MAUI resumes running the

method on the local smartphone. The MAUI system is broken up into three parts on the client: the

interface, proxy, and profiler, and four parts on the server: the proxy, profiler, solver, and coordinator.

The profiler runs on both because it instruments the program and collects measurements of the

program’s energy and data transfer requirements. The solver is a decision engine which periodically

determines the practicality of running remotely.

Since my project focuses on time rather than energy, I made a few different decisions while

implementing remote execution. Instead of requiring the smartphone to profile the program while running,

I remove all decision-making requirements from the phone so as to avoid any time penalty. Both the

NASA Benchmark application and the android application will always contact the server to run the CPU-

intensive code. Due to the nature of the chess game application, slight lag due to network latency is

tolerable. This removes any extra time needed to profile the program and decide whether or not to

offload. Also unlike MAUI, the android application does not maintain constant contact with the server.

Instead, the application contacts the server when it’s the computer player’s turn and closes contact once

it retrieves the computer’s move.

Data

15

Due to physical size limits, mobile devices offer limited local memory for storing data. The cloud

offers vast amounts of memory for storing personal user data. It can also provide automated data

management with sophisticated algorithms that can automatically organize your data to your

specifications. Not only does the cloud offer unlimited storage and control of personal data, but also

access to clusters full of world knowledge and peer user’s public data. Access to this much information

would be impossible on a mobile device alone. By connecting to the cloud, a user is able to initiate

searches on the data in the cloud, like performing a google search of the web or finding a location in

google maps. This type of search is related to the Software as a Service class of cloud computing. By

being able to perform these searches virtually anyway, cell phones become “powerful killer application

enablers.” [19] Cell phones more and more are becoming information hubs – a user’s link to all of their

personal data. As information hubs, they are the crossroads of personal information such as mail,

schedule, address, picture, and music. Therefore, cloud computing provides enhanced storage and

usage of personal data. One key factor to realize and capitalize on is context awareness: how all of that

information is connected and related. Context awareness can translate into targeted advertizing and new

ways to generate revenue for the cloud. An example is an application that teaches users lyrics of stored

music also promotes a social network that allows users to add, edit and synchronize lyrics to audio and

video files in all languages; and displays location based charts and maps of music played around the

globe. Mobile cloud computing could also help the health industry by enabling remote diagnostics

through access to patient data in the cloud, as well as enabling universal patient files that are always

complete and current.

Just as google provides a gateway to search websites on the internet, you’ll be able to search

information provided by fellow mobile device users connected to the cloud. Mobile device users are

capable of creating and adding to a pool of real-time information. In addition to being able to access vast

amounts of static data, a user will also be able to benefit from more relevant, real time data. For

example, information about parking spots or traffic. Or a user could search his peer’s information for the

best local restaurant with the shortest wait times. Since mobile devices are always on hand, they provide

a way to change and take advantage of dynamic information; i.e, information that is always changing,

such as traffic or social news.

16

The Mobile Web

As mentioned In an IEEE panel discussion about “Mobile, cloud, and Crowd Computing,” the

panelists discuss using cell phones to create a sensor hub. Using cell phones as sensors makes sense

since most smartphones are not being equipped with various I/O devices, such as GPS, picture and video

cameras, and microphones. Combining this information with a user’s data as well as other peer’s data in

the cloud creates a real-time content acquisition and delivery network. This virtual mobile sensor network

is the clear distinction between mobile web and internet web. Most users have their mobile device with

them at all times. However, applications such as speech diction need backend servers to perform the

computationally intensive work that a small mobile device cannot. Furthermore, visual of pictures taken

from camera phones need to be able to access the vast amounts of information in the cloud in order to

produce the best information. For example, the Google Goggle application is capable of integrated

character recognition and finger print identification of CD titles and sightseeing picture. Another

application could track a user’s location, automatically updating their social media status and prompting

ads for local business.

The key factors of the mobile web are obtaining and aggregating information in one place and

reaching critical mass via total number of users so that the data can be turned into a system service. But,

none of this could be possible without cloud computing

2.3.2 Mobile Cloud Architecture

Due to network reliability issues it may be necessary to incorporate a third tier in between the

existing 2-tier platform. The current cloud computing model includes only the mobile device connecting to

more-powerful servers in the cloud. By adding a go-between layer, latency observed by the mobile

device may diminish.

Cloudlets

There are many discussions about the limits of the cloud, especially as it pertains to mobile

devices. One such article was published in IEEE’s Pervasive Computing journal: “The Case for VM-

based Cloudlets in Mobile Computing” (November 2009, co-authored by MSR’s Paramvir Bahl along with

colleagues from Carnegie Mellon University, AT&T Research, and Lancaster University). The authors of

this paper make a valid point about mobile devices; they argue that “Resource poverty is a fundamental

17

constraintG On hardware that people carry or wear for extended periods of time, improving size, weight

and battery life are higher priorities than enhancing compute power. This is not just a temporary limitation

of current mobile hardware technology, but is intrinsic to mobility. Computation on mobile devices will

always be a compromise.” The authors of this paper propose what they call “cloudlets,” which represents

a 3-tier model of mobile cloud computing. Instead of the traditional 2-tier model that connects the mobile

device directly to the cloud, they introduce a third, middle tier. They propose this model to solve the issue

of poor or slow connections to the cloud. The reasoning behind this involves the speeds of Wireless LAN

bandwidths (400 Mbps) compared to wireless Internet bandwidth (2 Mbps) available on a mobile device.

From the viewpoint of use interaction, latency at these bandwidths can vary significantly: 80 ms versus 16

seconds for a 4MB JPEG image. [16] This difference can be drastic for a deeply immersive application.

One requirement for the cloudlet to be effective is physical proximity of the mobile device. Only this

enables fast end-to-end, predictable response times of applications executing in the cloudlet. If no

cloudlet is available nearby, the mobile device can fallback to using a distant cloud or, in the worst case,

solely its own resources. As soon as a nearby cloudlet is discovered, the mobile device will automatically

join it to increase performance.

The authors argue that Cloudlets could provide easier and quicker VM migration. They focus on

VM migration instead of process migration because it is less brittle, less restrictive, and more general than

language-based virtualization approaches that require applications be written in a specific language such

as Java or C++. Their mobile cloud system preloads a base VM on the cloudlet. Called dynamic VM

synthesis, the client device delivers a small VM overlay to the cloudlet, which then applies the overlay and

begins execution right where it left off on the mobile device. Their biggest challenges entail deployment

and performance issues.

While the authors of this paper resent a novel idea, they made many assumptions about both the

hardware and software infrastructure needed for Tier-3 model. More “datacenter-in-a-box” devices will

need to be added to create the cloudlet. This alone could be a large undertaking when you consider the

economic, legal, and even political issues to overcome. They also anticipate that a relatively small

number of base VMs will be popular worldwide. It may be awhile before such standards are achieved in

such a competitive market. In the end, the future of technology is always a guessing-game no one can

18

reliably predict. However, it seems that the consumer’s demand for faster network speeds will be more

important than the more focused market of mobile devices. With this in mind, cloudlets may not be

implemented as the authors envision. Since high speed wireless broadband networks could solve the

same problem, cloudlets may or may not be needed to link mobile devices to the high speed cloud. Thus,

my research has a more narrow focus on the applications rather than the rapidly changing internet

delivery network.

2.4 Sidebar on Google’s High Speed Network

Google’s 1 GB network fights claims of low bandwidth. Google is currently testing an ultra high-

speed broadband network in a small number of locations across the United States. This network delivers

speeds of 1 GB per second using fiber-to-the-home connections, which provides speeds more than 100

times faster than the average American can access to today. They want to experiment with new ways of

making Internet access faster and better for everyone. Google is focusing on three specific points for this

experiment: next-generation apps, new deployment techniques, and openness and choice. With 1 GB

speeds next-generation apps may allow streaming of three-dimensional medical imaging over the web or

downloading a high-definition feature film in less than five minutes. [17]

Google already offers free citywide Wi-Fi in Mountain View, CA, the headquarters of the

company. Partnering with the city, Google has mounted over 500 nodes, mostly on light poles, to setup

the network. There, they are testing applications, such as Wi-Fi in polices cars, a cheaper and faster

alternative to cell phones, or Wi-Fi water meters, eliminating the need for manual readers. [18] If this new

high speed Wi-Fi network grows and is adapted by more communities, the question becomes how mobile

devices will fit into the picture. Will it be easier to have the devices connect to distant, already-in-place

datacenters, as in the Tier-2 architecture, or will it still be advantageous to have the devices connect to

local machines over the local area network as in the cloudlet model? It all depends on whether the

network is provided wirelessly and not just through fiber optic cable, which would allow Wi-Fi-enabled

mobile devices access to it.

19

Chapter 3 System Design

3.1 Remote Execution Methods

The first choice that needed to be made is how to implement remote execution. As mentioned

previously, there are two main options: method/function migration and VM migration of the entire OS. I

chose to work with function migration as the focus of my research has a more narrow scope dealing with

individual applications. This holds true for both the remote execution of the NASA Benchmarks and

desktop chess game using Java RMI as well as the android chess application using HTTP to connect to

Google’s App Engine.

3.2 Dynamic vs. Static Code Offload

The next step was deciding how to load the executable code on the server: dynamically at

runtime or statically before the application is run. Dynamic code-offload allows for more flexibility as far

as updating an application or choosing when to use remote execution. However, it requires more data to

be passed over the communication channels as entire methods need to be serialized and transferred.

The programmer must also ensure that any dependencies or required objects are passed along with the

main execution method. Pre-loading code requires more server administration, especially when updates

are needed; conversely, it requires less data to be passed between client and server, making it faster and

easier to implement. In either scenario, there needs to be some sort of framework installed on the server

that is ready to receive the executable code regardless of dynamic or static installation. In the case of

Java RMI three main classes are required: a class that makes the socket connections, a class that calls

the executable file and an interface with function calls to the executable class file. Thus, while the

function of an executable file may chance, some aspects, such as the method calls, need to remain the

same if the same server framework is used. I actually implement both dynamic and static code offload,

which is discussed further in the implementation section. This introduces another design option: which

communication protocol to use.

3.3 Communication Protocols

20

I decided to use two different protocols: Java RMI and HTTP. Using Java RMI gives the

opportunity to test delivering a java-based infrastructure platform-as-a-service. Using HTTP allows for

more general communication as many programming languages and applications are able to work with it.

Java RMI provides for synchronous communication between client and server. When the client sends the

request, it does not continue execution until it receives the result in the response from the server. Using

HTTP requests, it is possible to provide both synchronous and asynchronous communication.

Asynchronous communication could be useful by allowing the client interface to respond to user input

while the server is executing the CPU-intensive code. It also provides for a more reliable application

since it would be less likely to crash due to a dropped connected whereas synchronous applications

depend on a stable connection.

3.4 Code Partitioning

Once the framework and communication protocols, Java RMI and HTTP requests in this case,

are in place the next step is to decide exactly which part of the code to execute remotely. There are

certain pieces of code that will never be able to be removed from the client machine. User interface code,

interactions with I/O devices, and any functions that interact with third party components will need to be

run locally. Hardware examples include measurements from accelerometers or GPS chips. Third party

connections pose difficulties related to reliability and network connections. E-commerce websites are the

perfect example as one wouldn’t want to lose their money to purchase if a connection between the server

and third party was dropped without warning or backup. This setup would also make security more

difficult since it adds a node in any authentication route. Security would need additional layers to prove

ones identity as well as the trustworthiness of the server.

The key is deciding the part of code to offload is identifying the computationally-intensive portion.

There have been many research papers produced on just this subject, so it will not be discussed in depth

here. For the purposes of this research, the simplest notifiers of CPU-intensive code are recursive loops

and iterations, such as depth searches for a chess game or repetitions needed to solve numerical

equations (as seen in the NASA Benchmark tests). It is much more difficult to attempt to partition existing

code than it is to design an application with remote execution in mind from the beginning. This process is

made much simpler for the network engineer if the programmer identifies the portions of code that may be

21

executed remotely. The authors of the MAUI paper agree with this idea and direct programmers to

identify code as “remoteable” so that their execution system can dynamically decide whether or not to

offload the remotely executable code. [15] So, as you can see, code partitioning can affect offloading and

vice versa. As mentioned above, code can be offloaded to the server either statically before-hand or

dynamically at execution time. If programmers provide for it, dynamic code offload can make execution

much more efficient.

3.5 Extraction Requirements

Once the code is partitioned, extraction requirements need to be examined. Specifically, what

objects, libraries, and classes does the remote code need to run? These elements of the code need to

be offloaded with the execution code for it to run properly. The most common way to pass objects is to

use serialization so that the cod can be passed as a string of bytes. Both Java RMI and HTTP support

serialization. With HTTP it is best to incorporate xml to wrap the serialized object in xml code and send it

using an HTTP request. Lastly, runtime parameters as well as the required results of the remote

execution need to be passed at runtime.

3.6 Architecture Choices

All of the previous design options have assumed a 2-tier architecture, but there are also models

for a 3-tier architecture. As discussed in the related work section, “cloudlets” can be added to the existing

2-teir architecture in an effort to provide faster, more reliable network connections for mobile devices.

Cloudlets require adding an additional computing machine, whether a router or desktop running a server,

to your local area network. The mobile device connects to this machine, which than connects to the

cloud. I actually implement two different cloud computing models that utilize both 2-tier and 3-tier

architectures.

One last feature to mention is interchangeability: allowing for different remote execution code and

different clients. While this is a plus because it provides more flexibility, it is not always feasible.

22

Chapter 4 System Implementation

4.1 Outline

As is evident from the previous discussion, there are many definitions of ‘cloud computing’ and

many implementation options. I created three categories of tests: Java RMI NASA Benchmarks, a Java

RMI Chess game, and an Android App Engine chess game. The applications used as benchmarks

include the NASA Benchmark tests and a chess game. Both were chosen because they involve

computationally-intensive code execution. Two communication protocols are used to implement these

cloud computing examples: 1) JAVA RMI for its accessible use of socket programming and 2) HTTP

because of its widespread and ubiquitous use.

Implementations of the Java RMI ASA Benchmarks begin on desktop machines since this is the

most familiar and accessible platform. From there, the application is ported to mobile devices such as an

Apple iPhone and Google Android mobile device. The NASA iPhone application is executed remotely

using dynamic code offload from a desktop on the same LAN. The NASA Benchmarks are also run

locally on a desktop machine and locally on an android device for comparison purposes.

Similarly, the Java RMI Chess Game is run locally on desktop and remotely from a desktop to

WSU servers using dynamic offload.

The last implementation involves an Android to App Engine chess game that executes using

static offload and HTTP communication.

4.2 Java RMI NASA Benchmark

4.2.1 Java RMI

RMI is Java’s application programming interface that performs the object-oriented equivalent of

remote procedure calls (RPC). It is key to this project since it provides for communication and data

exchange between the client and server. In order to run the Java RMI system, certain java script files are

installed on the server as well as the host. Obviously, the class files as well as the imported java

packages of the NASA Benchmark test need to be installed on the server. There is a certain file, called

the stub file, which is generated through compilation that needs to be saved on both the client and the

server. This is the file that links the client to

complied without errors, the RMI Registry is run on the server side. Next, the class file on the server that

links to the client is started. Finally, the class file on the client side that in

the command line. When the client file is run, it prompts the user for any required input and then directs

the server to run the NASA Benchmark test. Any user input arguments are sent to the server. Once the

test is finished running on the server side, a message is sent back to the client including the results or

error messages. As you can see from this example, the user should be oblivious that the program was

run remotely. The following figure presents a visual example

4.2.2 NASA Benchmarks

In order to test my IaaS system, I needed a proper application that could potentially be offloaded

to the server. This application needed to be very computationally intensive so that a less powerfu

device would struggle to run it. Additionally, if the application could be multithreaded, even more of the

server’s power capability could be utilized. Thus, I used a series of mathematically intensive code

23

server. This is the file that links the client to the server and allows communication. After all Java files are

complied without errors, the RMI Registry is run on the server side. Next, the class file on the server that

links to the client is started. Finally, the class file on the client side that interacts with the user is run on

the command line. When the client file is run, it prompts the user for any required input and then directs

the server to run the NASA Benchmark test. Any user input arguments are sent to the server. Once the

hed running on the server side, a message is sent back to the client including the results or

error messages. As you can see from this example, the user should be oblivious that the program was

The following figure presents a visual example of the flow of the Java RMI process.

In order to test my IaaS system, I needed a proper application that could potentially be offloaded

to the server. This application needed to be very computationally intensive so that a less powerfu

device would struggle to run it. Additionally, if the application could be multithreaded, even more of the

server’s power capability could be utilized. Thus, I used a series of mathematically intensive code

FIGURE 2: JAVA RMI COMMUNICATION FLOW

the server and allows communication. After all Java files are

complied without errors, the RMI Registry is run on the server side. Next, the class file on the server that

teracts with the user is run on

the command line. When the client file is run, it prompts the user for any required input and then directs

the server to run the NASA Benchmark test. Any user input arguments are sent to the server. Once the

hed running on the server side, a message is sent back to the client including the results or

error messages. As you can see from this example, the user should be oblivious that the program was

of the flow of the Java RMI process.

In order to test my IaaS system, I needed a proper application that could potentially be offloaded

to the server. This application needed to be very computationally intensive so that a less powerful mobile

device would struggle to run it. Additionally, if the application could be multithreaded, even more of the

server’s power capability could be utilized. Thus, I used a series of mathematically intensive code

24

segments created by NASA that run different types of benchmark tests. These applications presented

the optimal choice since they are written in Java and all have the option of choosing the number of

threads to use while running the programs.

These benchmarks were developed at NASA Ames Research Center to compare the

performance of parallel computers and are recognized as a standard indicator of computer performance.

The Numerical Aerodynamic Simulation (NAS) Program, located at NASA Ames Research Center, is a

pathfinder in high-performance computing for NASA and is dedicated to advancing the science of

computational aerodynamics. [8] The NAS Benchmarks consist of a set of eight benchmark problems,

each of which focuses on some important aspect of highly parallel supercomputing for aerophysics

applications. The implementation is available as the NPB3.0-JAV package from www.nas.nasa.gov.

Hardware Specifications

For my work with JAVA RMI as the communication protocol, I execute the java code in either a

Linux or Windows operating system environment on a desktop computer with an Intel Pentium Dual CPU

E2160 1.8 GHz processor and 2.00 GB of ram. I connect to the remote server’s IP address using an

Ethernet switch over a LAN with a connection speed of 100mb. The server has an Intel Core 2 Due

E2700 2.66GHz processor and is capable of running virtual machines of up to 8 cores and 8 GB of ram.

A Linux based virtual machine was installed on the server as the base operating system environment.

4.2.3 Remotely: Desktop to WSU servers

There are two ways I used Java RMI. One way involves pre-loading the class files on the server

and simply initiating their execution from the client. Another way, which emulates an IaaS model, only

requires a few interface classes to be installed on the server to provide for open registry ports and

communication with the client. In this scenario, the user can write code on their local machine and upload

it on-demand for execution by the server in ‘the cloud.’

4.2.4 iPhone Implementation Using a Distributed File System

I was able to access the iPhone’s Linux-based operating system using its mobile terminal and

install the latest version of Java. I then enabled SSH protocol on it and copied the necessary files onto

the phone. This allowed me to run the java files to tell the server to execute the NASA benchmarks by

downloading the files from a separate computer running a web server. Figure 2 below shows how this

works.

4.3 Java RMI Chess Game

I choose to use a chess game as a visual and functional model of IaaS. I use the second

implementation of Java RMI so that chess code can be dynamically downloaded by the server. The

challenge of this implementation was extracting the computationally int

that the server would run that portion while the client machine runs the

diagram above demonstrates the code

FIGURE

25

downloading the files from a separate computer running a web server. Figure 2 below shows how this

Chess Game

I choose to use a chess game as a visual and functional model of IaaS. I use the second

so that chess code can be dynamically downloaded by the server. The

challenge of this implementation was extracting the computationally intensive part of the chess game so

that the server would run that portion while the client machine runs the graphical user interface.

demonstrates the code execution.

FIGURE 3: RMI USING A DISTRIBUTED FILE SYSTEM

FIGURE 4: CHESS GAME EXECUTION

downloading the files from a separate computer running a web server. Figure 2 below shows how this

I choose to use a chess game as a visual and functional model of IaaS. I use the second

so that chess code can be dynamically downloaded by the server. The

ensive part of the chess game so

user interface. The

26

4.3.1. Small HTTP Server for Dynamic Code Offload

The server downloads the code from the client machine. Java RMI makes this possible using

HTTP communications. This means that I had to run a HTTP server on my client machine. I was able to

find a free, small application online that turns your computer into a fully functional Web-server. As long as

the files-to-be-transferred were placed in a certain directory, the server could reach them given my

computer’s IP address.

4.3.2 Sending Multiple Requests

I tested if it were possible to send and execute multiple concurrent requests on the server. I did

this by manually opening new registry ports and sending new requests to those ports. Initial testing

showed that it was possible to run multiple NASA benchmarks on the server at the same time with little

effect on the execution time. In fact, run times were nearly identical compared to sending only one

request. I did not have the time to try to overload the system by sending multiple requests. But, I think

this exercise would help to show the scalability of this model and the point at which another physical

machine would be needed for more requests.

4.4. Java RMI Security

Downloading class definitions of Serializable classes often violates system security. For

example, RMI will download a Serializable class from another machine only if a security manager permits

the downloading of the class from that machine. Java provides a way to make communications more

secure through the use of such a security manager and policy files. Both the server and client programs

run with a security manager installed. When either program is run, a security policy file is specified so that

the code is granted its required security permissions. The basic format of a policy file is:

grant signedBy "signer_names", codeBase "URL" {

permission permission_class_name "target_name", "action",

signedBy "signer_names";

}

Code being executed is always considered to come from a particular "code source." The code source

includes not only the location (URL) where the code originated from, but also a reference to the certificate

containing the public key corresponding to the private key used to sign the code. Certificates in a code

source are referenced by aliases from the user's keystore.

certificate for public/private key par. The public key within that certificate is used to verify the digital

signature on the code. Thus, a signer signs the code using a private key, then uses the policy file to grant

certain permissions. A codeBase value indicates th

code from that location.

Another security obstacle is firewalls on both the client and server. I had to disable the firewall on

my local machine to allow the server to download files from it. However,

communication through a firewall using HTTP tunneling, proxies, or simply

4.5 Google Android to App Engine Chess Game

The goal of this experiment was to enable the Android device to connect to

Engine. A chess game application would connect to Google’s cloud, which would execution the chess

engine code and return the computer player’s next move.

4.5.1 Communication Protocol: HTTP

This setup uses HTTP as the communication protocol to execute a chess game application on a

mobile Android device, displaying the possibilities of mobile clo

Protocol (HTTP) is a networking protocol for distributed information systems and

27

containing the public key corresponding to the private key used to sign the code. Certificates in a code

source are referenced by aliases from the user's keystore. A signedBy value indicates the alias for a

public/private key par. The public key within that certificate is used to verify the digital

signature on the code. Thus, a signer signs the code using a private key, then uses the policy file to grant

A codeBase value indicates the code source location; you grant the permission to

Another security obstacle is firewalls on both the client and server. I had to disable the firewall on

my local machine to allow the server to download files from it. However, it is possible to allow RMI

communication through a firewall using HTTP tunneling, proxies, or simply allowing certain ports through.

Google Android to App Engine Chess Game

The goal of this experiment was to enable the Android device to connect to

Engine. A chess game application would connect to Google’s cloud, which would execution the chess

engine code and return the computer player’s next move.

4.5.1 Communication Protocol: HTTP

This setup uses HTTP as the communication protocol to execute a chess game application on a

mobile Android device, displaying the possibilities of mobile cloud computing. The Hypertext Transfer

rking protocol for distributed information systems and is the foundation of data

FIGURE 5: GOOGLE ANDROID TO APP ENGINE

containing the public key corresponding to the private key used to sign the code. Certificates in a code

A signedBy value indicates the alias for a

public/private key par. The public key within that certificate is used to verify the digital

signature on the code. Thus, a signer signs the code using a private key, then uses the policy file to grant

e code source location; you grant the permission to

Another security obstacle is firewalls on both the client and server. I had to disable the firewall on

it is possible to allow RMI

allowing certain ports through.

The goal of this experiment was to enable the Android device to connect to the Google App

Engine. A chess game application would connect to Google’s cloud, which would execution the chess

This setup uses HTTP as the communication protocol to execute a chess game application on a

The Hypertext Transfer

is the foundation of data

28

communication for the World Wide Web. In the client-server computing model, HTTP functions as a

request-respond protocol. The client sends a request to the server, which then responds with content

such as images or HTML files. The server is also capable of performing functions on behalf of the client:

this is how HTTP is utilized by cloud computing.

4.5.2 Android Development Mobile Device

The HTC Android Development Mobile Device was the best choice for a development platform.

The device was chosen because it runs the Android Operating System, developed by Google. The model

used for this research ran the Android 2.2 platform. Its hardware specifications include 512Mb flash

memory, 512Mb RAM, Wi-Fi (802.11b/g), High-Speed Uplink Packet Access (HSUPA) at 2 Mbps, and

High-Speed Downlink Packet Access (HSDPA) at 7.2Mbps.

Google has made all of the source code available to download online. Google also provides the

Android SDK, software development kit, which allows a programmer to create, write, and test applications

to be run on the Android operating system. This software emulates the environment of the mobile device

on a computer so that applications can be tested and debugged before being uploaded to the physical

device. The image below displays the Android emulator.

FIGURE 6: ANDROID EMULATOR RUNNING THE CHESS GAME

29

4.5.3 Google App Engine as the Remote Server

The App Engine uses the Java Servlet standard for web applications. A programmer provides an

app's servlet classes, JavaServer Pages (JSPs), static files and data files, along with the deployment

descriptor (the web.xmlfile) and other configuration files, in a standard WAR directory structure. App

Engine serves requests by invoking servlets according to the deployment descriptor. For the chess

engine implementation, I include the chess engine files among static files that are deployed to the App

Engine.

In this remote chess application, the only function of the server is to perform the computation of

deciding where the computer player should move next. It stores game info such as the location of all of

the pieces on the board. Thus, every client request asking for the next computer move sends the last

move of the client user so that the client and server game boards are synced. The client takes care of all

of the user interface tasks so that a continuous connection is not necessary.

4.5.4 Remote Execution

It was decided to pre-load the code for the chess engine on the server rather than support

dynamic code-offload. This decision was made because using a server to run the chess engine will

almost always be more efficient than running the engine on the mobile device. Furthermore,

communication costs can be lower this way since less data needs to be exchanged between the mobile

device and the App Engine. Rather than waste time and power deciding whether or not to offload the

chess engine code, that decision is pre-made so that the server will always be used. A good addition to

this application would be allowing the game to switch to a local chess engine on the device if a

connection to the App Engine cannot be made. This would not be too difficult to implement and would

still allow game play if remote communicate was impossible.

The original application only supported one client at a time. However, multiple clients could be

supported if the App Engine’s Mem Cache or Datastore were utilized. Similar to cookies for websites, the

client could set the user name along with a request and the server could user that name as the key to

locate the saved game stored in the value field of the datastore. This setup would provide more robust

persistent storage. Additionally, App Engine provides support for Oauth and OpenID authentication.

30

Thus, either of these authentication methods could be used to verify the identity of a user before a saved

game could be accessed.

4.5.5 The Client Android Application – App Inventor

Google’s App Inventor was used to design and create the interface for the chess game

application. App Inventor provides a block programming model instead of strictly code in order to create

Android apps. While the App Inventor is great for designing an interface and building an app quickly, it

provides decreased functionality and flexibility in the long run. For example, in order to send HTTP GET

requests, the TinyWebDB widget was used. This widget is meant to connect an application to an online

database, thus it was the only way to get HTTP requests. The requests and responses needed to be

formatted with specific parameter values as json objects, thus; communication between client and server

was much more limited than desired. Below is a screenshot of the App Inventor, which is run directly in

Google’s Chrome internet browser.

FIGURE 7: APP INVENTOR INTERFACE IN CHROME BROWSER

31

Chapter 5 Evaluation

The goal of the test systems is to answer to main questions: 1) is cloud computing feasible and

quantitatively advantageous, and 2) what are the advantages and limitations of mobile cloud computing?

For comparison purposes, the NASA benchmarks are run on a common desktop machine, the

android device, and remotely on CIC lab servers. The clients used for remote execution include the

desktop machine and the iPhone. Both static and dynamic code offload execution times are recorded in

order to measure the cost of using dynamic code offload.

Remote chess game execution is accomplished through the use of both Java RMI and HTTP.

The Java RMI implementation is only run using a desktop machine as the client and the CIC lab servers

as the remote cloud. It provides an example of dynamic code offload for an interactive application.

Finally, a system using an Android device as the client, Google’s App Engine as the remote server, and

HTTP as the communication protocol is created. Execution times are measured, comparing local mobile-

device-only runtimes with runtimes using the App Engine. This provides a real-world example of mobile

cloud computing and a quantitative analysis of the current power of the cloud.

A chess game was chosen as the demo application because it could easily allow the evaluation

to focus on user experience. A chess game’s engine can be made “smarter” by increasing the search

level of the search algorithm. Thus, it provides a means to evaluate two conflicting consumer demands:

game response time and the game’s level of intelligence. This struggle is also related to the conflict

between battery conservation and a game’s functionality since the “smarter” the game is, the more CPU

power it uses, and the more energy it will drain as it runs.

Chess is a two player board game played on a checkerboard of 64 squares arranged in an eight

by eight grid with 32 total pieces; 16 for each player. There are six different types of pieces: eight pawns,

two knights, two rooks, two bishops, one queen, and one king. Each piece has different rules for how it is

allowed to move. The object of the game is to overtake the opponent’s king by positioning your pieces in

such a way that the opponent’s king has nowhere to move. Because of the variety of moves of each

piece, chess is a very complicated game. The number of legal positions in chess is estimated to be

32

between 1043

and 1047

, with a game-tree complexity of approximately 10123

. Because there are so many

moves, the problem size is large enough to run the chess engine on a cluster of servers.

One popular algorithm for a chess game is the minimax algorithm. Minimax (sometimes minmax)

is a decision rule used in for minimizing the possible loss while maximizing the potential gain.

Alternatively, it can be thought of as maximizing the minimum gain. It is a recursive algorithm for

choosing the next move in an n-player game, usually a two-player game. A value is associated with each

position or state of the game. In the case of chess, each position of a piece is assigned a static value so

that each move is given a score when the algorithm runs. The move that is calculated to have the best

score is chosen as the best move to make. This move minimizes the maximum possible payoff for the

other player, hence the name minimax.

You can limit the minimax algorithm to look only at a certain number of moves ahead. This

number is called the "look-ahead" or “search-depth”, measured in "plies". For example, the chess

computer Deep Blue (that beat Garry Kasparov) looked ahead at least 12 plies, then applied a heuristic

evaluation function. In my chess evaluation I measure the chess running at a search depth from 3 to 7.

The algorithm can be thought of as exploring the nodes of a game tree. The number of branches

of the tree is the average number of children of each node, which is the average number of legal moves

in a position for chess. The number of nodes increases exponentially with the search depth. The number

of nodes to be explored for the analysis of a game is approximately the branching factor raised to the

power of the search depth. It is therefore impractical to completely analyze games such as chess using

the minimax algorithm. This chess engine also applies alpha-beta pruning to speed up the time needed

to calculate the next move. Alpha-beta pruning is a search algorithm which seeks to reduce the number

of nodes that are evaluated by the minimax algorithm in its search tree. It stops completely evaluating a

move when at least one possibility has been found that proves the move to be worse than a previously

examined move. Such moves need not be evaluated further

The quantitative analysis of each of the above experiments provides evidence of the advantages

of cloud computing. In addition, I evaluate the obstacles related to cloud computing, such as security,

network reliability, and infrastructure and programming issues.

5.1 Evaluation Methodologies

33

The most important unit of measurement for this research is time, specifically execution time of

an application. Execution time is measured on a desktop machine, laboratory servers, an iPhone, an

Android mobile device, and Google’s App Engine servers. These measurements will provides a means to

analyze the viability of mobile cloud computing and evaluate whether executing code remotely on more

powerful servers is advantageous. Time needed to communicate with remote servers will also be

measured in order to analyze the added communication cost of remote execution. Furthermore, with

an interactive game, measuring time is important in terms of user experience and the quality of play. It

is effective in analyzing the tradeoff between responsiveness and the level of intelligence of the

computer engine.

5.2 NASA Benchmarks Evaluation

Below are the results of running the MG NASA benchmark test on the local desktop as well as

remotely on the server.

TABLE 1: MG BENCHMARK RUN TIMES

Table 1 shows the averages of running the benchmark on both machines using different numbers

of threads. The time to run the benchmark test was calculated and returned by the NASA Benchmark

application itself, which I call “NASA Time.” The command line function, ‘time,’ was used to measure the

total execution time, starting from when the user hits the enter button to when the results are returned to

the user. I call this measurement “Total Time.” The same results are displayed in the following figure 8.

FIGURE 8: MG BENCHMARK RUN TIMES

Threads

Server Total Server NASA Time ClientTotal Client NASA

1 10.60 5.22 27.20 16.95

2 7.80 2.89 12.85 5.87

4 7.00 2.08 12.35 5.91

6 7.10 2.19 11.85 6.11

8 6.15 2.15 11.85 6.02

Total Time (s)

Each of the bars represents the average number of seconds for each test run using a different

number of threads. As you can see from the chart, the tests run on the server are significantly faster than

the tests run on a local machine. Using one thread, the run time on the server is 40% of the time it took

to run the same test on the local machine. It appears tha

results, but this is probably due to the nature of the benchmark test.

The chart below is the execution times of the BG benchmark test run using four thr

included this test because it is on the timescale of minutes rather than seconds.

34

FIGURE 9: BG BENCHMARK TEST

Each of the bars represents the average number of seconds for each test run using a different

As you can see from the chart, the tests run on the server are significantly faster than

the tests run on a local machine. Using one thread, the run time on the server is 40% of the time it took

to run the same test on the local machine. It appears that using more than one thread produced similar

results, but this is probably due to the nature of the benchmark test.

The chart below is the execution times of the BG benchmark test run using four thr

included this test because it is on the timescale of minutes rather than seconds.

Each of the bars represents the average number of seconds for each test run using a different

As you can see from the chart, the tests run on the server are significantly faster than

the tests run on a local machine. Using one thread, the run time on the server is 40% of the time it took

t using more than one thread produced similar

The chart below is the execution times of the BG benchmark test run using four threads. I

As you can see, running the test on the server still shows a considerable time advantage, like the

other benchmark test.

The following chart compares the two RMI

the model that preloads the required files on the server, similar

model I use to mirror an IaaS environment. As expected RMI 1

needed for the server to dynamically download files. However, the time difference is only 30 seconds

longer, which represents the time needed to upload the files to the server. This is easily a tolerable time

for the amount of added functionality.

FIGURE

The last results of the NASA Benchmarks tests

device. The chart below displays

server vs. on the mobile device.

offloading work to the cloud using IaaS.

35

As you can see, running the test on the server still shows a considerable time advantage, like the

The following chart compares the two RMI methods mentioned previously. “RMI 2

the model that preloads the required files on the server, similar to Software-as-a-Service. “RMI 1

S environment. As expected RMI 1 total execution is greater since time

needed for the server to dynamically download files. However, the time difference is only 30 seconds

longer, which represents the time needed to upload the files to the server. This is easily a tolerable time

for the amount of added functionality.

URE 10: DYNAMIC VS. DEDICATED SERVER

of the NASA Benchmarks tests show the testing done on the iPhone mobile

displays the extreme time difference running a NASA Benchmark test on the

These results present possibly the most convincing argument of

offloading work to the cloud using IaaS.

As you can see, running the test on the server still shows a considerable time advantage, like the

ds mentioned previously. “RMI 2” represents

Service. “RMI 1” is the

total execution is greater since time is

needed for the server to dynamically download files. However, the time difference is only 30 seconds

longer, which represents the time needed to upload the files to the server. This is easily a tolerable time

show the testing done on the iPhone mobile

running a NASA Benchmark test on the

the most convincing argument of

36

Server Laptop iPhone

Total Time (s) 7.00 12.35 541.75

NASA Time (s) 2.08 5.91 64.42

Total time includes communication cost and NASA Time; NASA Time strictly measures the CPU-intensive

execution time.

Lastly, though I did not record quantitative data, the Java RMI chess application proved to be a

good demonstration of separating and offloading the computationally intensive portion of a program to a

server.

5.3 Android App Evaluation

The following chart shows the execution runtimes computing the local execution on the android

device to remote execution on the app engine servers. The android phone is connected to the internet

(and App Engine) over Wi-Fi. The times for the server include network communication costs and any

latency.

Depth

Total

Nodes

Mobile Total

time (ms)

Server Total

Time (ms)

4 2064 7317 255

5 104525 343436 2130

7 209057 592359 4500

As you can see, even at a small search depth of 4, the Android device took 30x longer to execute

than connecting to the App Engine. At a search depth of 7, the numbers grow to over 100x longer,

proving that utilizing the resources of the cloud from a mobile device can vastly improve performance. A

larger search depth increases the number of nodes considered exponentially. The number of nodes

TABLE 3: EXECUTION TIMES OF MOBILE DEVICE AND APP ENGINE SERVER

TABLE 2: EXECUTION TIMES OF SERVER, LAPTOP, AND IPHONE RUNNING A NASA BENCHMARK TEST.

37

relates to the number of different piece moves considered by the computer player. A larger search depth

also means that the computer looks more turns ahead when calculating the score of a particular move to

measure how good the move is.

Ave. RTT Google App Engine 43.7ms

Location of App Engine Servers Mountain View, CA ~ 2400 mi

The round trip time from the mobile device in Detroit, MI to Google’s App Engine in Mountain

View, CA is minimal, especially in the context of the entire request-response time measured by the mobile

device. A traceroute was also done is trace the hops taken to Google’s servers and also to pinpoint the

physical location of the app engine servers. The traceroute confirmed that the servers are actually in

Mountain View, CA, Google’s headquarters, which is about 2400 miles away from the local client mobile

device. These results are very encouraging because the round trip times are still small even accessing

servers on an opposite coast of the country.

5.4 Discussion

5.4.1 Performance

There were some issues getting the programs to run. These included communication issues

between the app inventor chess application and the google app engine server. There is only one way the

app inventor can send and receive http connections: by sending requests to access a json-formatted

database. A widget is available to provide for database storage from the app inventor. Thus, I had to

format the http requests from the chess interface as json database requests. I also had to change the

tags and values the server checks for when accepting the request parameters.

All of the small-scale models performed as expected, decreasing execution times and adding

more power to applications running on weak machines. Especially in the case of the iPhone, many tests

could not even be run on the device due to memory limitations. Furthermore, with the help of ‘the cloud’

applications could be run with no change in user experience.

TABLE 4: GOOGLE APP ENGINE SERVER RTT INFO

38

Static code offload is the proper choice for the Android chess game application do to the nature of

player interaction with the game. See the bottom left figure for the breakdown of acceptable response

times according to established HCI guidelines. Human-Computer Interaction (HCI) is a discipline

concerned with the design, evaluation and implementation of interactive computing systems for human

use and with the study of major phenomena surrounding them. According to studies of a player’s

interactions with interactive games done by Tolia et al [12], the user-perceived quality of thin client

performance is highly variable. As is expected, it mostly depends on the end-to-end latency of the

network as well as the degree of interactivity of the application.

The table on the right shows survey results of 3318 people reporting their experience with GIMP, a photo

editing software, which is a highly interactive task. As the table illustrates, usability suffers even at a

moderate network latency of 100 milliseconds RTT. However, this round trip time would be more than

acceptable for browsing the web. Response times for a chess playing game would need to be

somewhere in between those of photo editing software and browsing the web. According to the MAUI

authors [15], the worst case for performance offload occurs over 3G: the “Select Piece” method for chess

incurs a 77% performance overhead. This equates to a time increase from 800 ms to 1.5 sec. Though

the wait time is doubled, 1.5 sec is still a tolerable wait for chess game.

Response times for a chess playing game would need to be somewhere in between those of

photo editing software and browsing the web. Users could tolerate some wait time, but would be

frustrated if that grew to the order of tens of seconds. Even if the user waits a few seconds, they will not

mind playing the game. Since communication with the App Engine does not add much time and

dynamically offloading code would only increase communication time, it makes sense to always use the

Resp. Time Subjective Impression

< 150ms Crisp

150ms - 1s Noticeable to Annoying

1s - 2s Annoying

2s - 5s Unacceptable

> 5s Unusable

RTT Crisp Noticeable Annoying Unaccep. Unusable

1ms 3278 40 0 0 0

20ms 3214 82 4 18 0

66ms 2710 572 12 3 21

100ms 2296 973 20 6 23

TABLE 5: HUMAN-COMPUTER INTERACTION EVALUATIONS. LEFT-SUBJECTIVE OPINIONS RELATED TO RESPONSE TIMES. RIGHT-SURVEY OF OPIIONS RELATED TO RTT

39

cloud for code execution. Instead of increasing execution times by deciding at runtime, the decision is

made prior by the programmer due to the nature of the application.

This introduces an important conclusion: network programmers need to evaluate cloud computing

options on an application-by-application basis. For example, chess and photo-editing applications have

vastly different interaction requirements. The photo-editing will need to execute locally since network

latencies can never be fast enough for tolerable response times. However, chess requires less stringent

user interaction, so some latency is tolerated. Thus, the cloud can always be used to support this

application. The burden falls on programmer to partition their code into local and remote portions and to

decide if remote execution is possible according to user interaction requirements.

5.4.2 Reliability

The degree of IaaS availability will depend on server load and network connection reliability; the

same issues faced by all cloud computing research. The best way to improve reliability is for cloud

providers to provide backup servers, removing any single-point-of-failure. However, that still leaves

failure issues with the connecting network and the cloud provider itself. Having only one cloud provider

is, in itself, a single point of failure. Thus, allowing an application to utilize different cloud providers would

add reliability.

5.4.3 Replication

Replication responsibility falls on either the server or the client depending on whether static or

dynamic code offload is used. If dynamic code offload is used, responsibility lies with the client since the

application code is passed with the request. Thus, even if a server fails, there will still be a copy of the

code on the client side and the client can resend the request to another server. However, if the server

fails in the process of executing a long-running program, all that work and data will be lost. On the other

hand, it static code offload is used, and a connection is lost with the server, the client may lose all

functionality unless it maintains a copy of the code locally for backup purposes.

5.4.4 Consistency

The following questions must be addressed: What happens if the client-server connection is

broken 1) during initial connection setup, 2) while transferring data to the server, 3) while the server is

computing, or 4) when the server is sending results back to the client? Each scenario would have to be

40

handled differently. The most reliable answer would lead to the client sometimes re-issuing unneeded

requests. In all scenarios, if a timer was added to the client, the client could simply re-issue the request if

a timeout occurred.

5.4.5 Mobility

This research displays the possibilities of providing high mobility for users. Devices could

become smaller and more powerful. The model in which the mobile device directs the server to

download the data from a local desktop computer is especially efficient. This removes the need for the

mobile device to maintain a copy of the application on its limited storage resources.

5.4.6 Security

Though authentication protocols can be implemented fairly easily, this work does not touch on

issues related to man-in-the-middle tasks, when data is intercepted between the client and server.

Though benchmark tests and chess games do not necessarily require it, encryption would be needed to

protect more sensitive information. It would be an interesting study to measure the cost of encryption on

mobile cloud computing.

41

Chapter 6 Conclusions and Future Work

6.1 Conclusions and Contributions

In conclusion, this research work shows that cloud computing technology will only progress since

there are obvious advantages. These results prove that cloud computing is very possible and that

offloading computations to a server is a viable, timesaving option. As long as network speeds are decent,

it is advantageous to offload computationally intensive applications to a more powerful server. Not only is

it advantageous, but also necessary in some situations, as the mobile device is unable to even run certain

applications due to memory restrictions. The demo shows the advantage of offloading applications to the

cloud in the context of providing an Infrastructure-as-a-Service. By outsourcing computational

intelligence to the backend servers, the simple mobile device becomes more powerful than its physical

constraints allow. However, there is no best or simple implementation of mobile cloud computing.

Options include dynamic vs. static code offload, method vs. OS migration, and various connections

protocols. Different applications have different resource requirements affecting the best possible

connection to the cloud. As seen in the android chess application, chess can tolerate some lag while

photo editing software cannot. Though a system like MAUI is a great option for certain applications, my

android-app engine chess game example shows that always offloading code may be the best choice.

Ultimately, it is up to the programmer to decide what a user can tolerate and which setup is best for their

particular application.

My work focuses on providing infrastructure as a service because I feel it offers the largest growth

opportunity for cloud computing since it provides the most user control. I do so by supplying both the

software framework for executing code remotely and the physical hardware needed to run the code. This

project seeks to evaluate cloud computing on both a statistical and functional level.

I utilize Java’s Remote Method Invocation Protocol to provide for communication between the

server and client machines, which include both a laptop PC and a mobile device. This project expands

the common use of transferring files and objects to push the limits of this object distribution model. It

42

connects a client machine running an application to a server machine in order to provide more

computational power, while staying invisible to the client user. Applications I ran while testing include a

set of benchmark tests designed by NASA and a chess game.

I also ported these tests to a mobile device to show the opportunity cloud computing presents in

the realm of mobile computing. To do so, I created a small scale distributed storage system so that the

server could download class files from a remote location specified by the mobile device.

Finally, my last research model involves the Google App Engine as the server and a Google

Android mobile device as the client machine. Working specifically with the chess game application, this

demonstration attempts to show the capabilities of mobile cloud computing on a basic, familiar level. The

user can observe in real time the speedup when intensive computation of the chess engine is performed

on Google’s App Engine server versus locally on the mobile device. The model also provides many

areas of expansion including providing ‘smart’ tips to help the player choose a move or even enable

multiplayer games connected through the app engine.

My research shows that offloading a computationally intensive application to a remote server can

be significantly faster than running the same application on a local desktop machine. Furthermore,

utilizing the cloud from a mobile device is not only advantageous, but also necessary to run certain

applications that require more computing power or memory than a mobile device can provide. All of the

NASA Benchmark tests I ran executed faster when offloaded to the server compared to running it on the

local machine. In fact, it can take 40% less time to run an application on the server compared to running

it on the local client machine. The results for a mobile device are even more staggering; the server

completing the benchmark in 99% less time. In other words, the server is capable of running an

application in 1% of the time is takes to run on a mobile device. Lastly, the chess game example showed

how the cloud can make a user experience better and more responsive as execution time on the mobile

device was 30x longer than the cloud. Using Google’s app engine servers, the computer portion of the

chess game became both quicker and smarter. Even if latency became noticeable, it was still tolerable,

confirming remote execution as the optimal choice for the chess engine.

Additionally, I evaluate the options of mobile cloud computing. While total OS migration may

provide more complete remote execution, today’s technology is more ready to support process migration.

43

The chosen communication protocol must provide flexibility, security, and reliability. I implement both

Java RMI and HTTP and both work well, though HTTP provides more functionality including synchronous

and asynchronous capabilities. Code can be offloaded both dynamically and statically. There are

advantages and disadvantages to both and it often depends on the specific application. Ultimately, it is

most efficient if the programmer provides for remote execution from the beginning of creating an

application. This way the network engineer does not have to be concerned with code partitioning and can

focus on the communication framework. Lastly, a3-tier cloud architecture could provide smaller latencies,

but requires a physical infrastructure that would take time and money to build.

6.2 Future Work

Future work related to this project should be driven by the common issues of cloud computing, including:

Scheduling

If possible application requests are known, how could the service benefit by implementing some

type of priority scheduling? Currently, if a multiple requests are sent to the same registry port, the first

request will run, but the others will be dropped. The system could benefit from a buffer or queue that

would save requests until they could be run. Alternatively, each request could be run as a different

thread.

Scalability

Measuring the ability to scale out is closely related to scheduling. Once a scheduling protocol is

defined, the system could be sent requests until it becomes overloaded. This test would produce a

measure of the resources needed in order to scale out. Furthermore, is it possible for the software to

automatically open new registry ports as new requests are received, allowing for requests to run

concurrently, possibly using multiple threads?

Security

Object serialization can be coupled with any available encryption technology. Thus, any files

passed between server and client could be encrypted. Also, if a secure channel is needed the network

connections could be made using SSL. The authentication methods discussed as part of the Android

application would also improve security.

44

Reliability

The Java RMI system is not very reliable; if the server shuts down, all data and computation

occurring on the server is lost. This is not a hopeless scenario, because the client could simply resend

the data and computation directions to another server. Java RMI will notify when the server cannot be

reached, so if there was another server ready, the client should be able to automatically move to that

server. The Android app could improve by switching to a local chess engine if a network connection is

lost or unavailable. The current android application does not have a local copy of the chess engine, so

game play will not be able to continue if a connection to the server is dropped. However, this would not

be hard to rectify by adding the chess engine algorithm to the local code and having the application

switch to local execution when I connection error is received.

45

REFERENCES

[1] Jianbin Wei, Xiaobo Zhou, Cheng-Zhong Xu. Robust Processing Rate Allocation for Proportional

Slowdown Differentiation on Internet Server. IEEE Computer Society. 2005

[2] Armsbrust, Michael, Fox, Armando, etc. UC Berkeley. Above the Clouds: A Berkeley View of

Cloud Computing. Technical Report No. UCB/EECS-2009-28. February 10, 2009.

[3] Chun Byung-Gon, Maniatis Petros. Intel Berkeley Research. Augmented Smartphone Applications

Through Clone Cloud Execution. HotOS 2009.

[4] Rakesh Agrawal, etc. The Claremont Report on Database Research. SIGMOD Record, September

2008 (Vol. 37, No. 3). Retrieved on May 12, 2009 from: http://delivery.acm.org

[5] Cassimir Medford. Computing in a Mobile Cloud. 08 September 2008. Retrieved on May 12, 2009

from: http://www.redherring.com/Home/24836

[6] Java Remote Method Invocation (Java RMI). Sun Microsystems, 2006. Retrieved from:

www.sun.java.com

[7] Michael A Frumkin, etc. Implementation of the NAS Parallel Benchmarks in Java. NASA

Advanced Supercomputing (NAS) Division, 2002. Retrieved from:

http://www.nas.NASA.gov/Resources/Software/npb.html

[8] Subhash Saini and David H. Bailey. NAS Parallel Benchmark (Version 1.0) Results 11-96. Report

NAS-96-18, November 1996. Retrieved from:

http://www.nas.NASA.gov/Resources/Software/npb.html.

[9] Uquhart, James. Finding distinction in 'infrastructure as a service’. January 11, 2009. Retrieved

on April 30 , 2010 from: http://news.cnet.com/8301-19413_3-10140278-240.html.

[10] Alexandre di Costanzo, etc. Harnessing Cloud Technologies for a Virtualized Distributed

Computing Infrastructure. IEEE Computer Society. 2009.

[11] Borja Sotomayor, etc. Virtual Infrastructure Management in Private and Hybrid Clouds. IEEE

Computer Society. 2009.

[12] Tolia, N., Andersen, D., Satyanarayanan, M. Quantifying Interactive Experience on Thin Clients.

IEEEComputer Society 39, 3 (Mar. 2006).

[13]Mobile Phones: Global Industry Guide. Report Code: DO-4965 Date: 5/2008 By: Datamonitor

46

[14] X. Gu, K. Nahrstedt, A. Messer, I. Greenberg, and D. Milojicic. Adaptive Offloading Inference for

Delivering Applications in Pervasive Computing Environments. In Proceedings of the First IEEE

International Conference on Pervasive Computing and Communications (PerCom), 2003.

[15] Eduardo Cuervo, etc. MAUI: Making Smartphones Last Longer with Code Offload. Mobisys ’10,

June 15-18, 2010

[16] Mahadev Satyanarayanan, etc. The Case for VM-based Cloudlets in Mobile Computing. IEEE

Pervasive Computing, 8(4), 2009.

[17] Minnie Ingersoll and James Kelly. Think big with a gig: Our experimental fiber network. Google

Inc. 2/10/2010 08:00:00 AM. Retrieved from: http://googleblog.blogspot.com/2010/02/think-big-with-

gig-our-experimental.html

[18 ] Minnie Ingersoll. Free citywide WiFi in Mountain View. Google Inc. 8/16/2006 06:00:00 AM.

Retrieved from: http://googleblog.blogspot.com/2006/08/free-citywide-wifi-in-mountain-view.html

47

Abstract

MOBILE CLOUD COMPUTING: CASE STUDIES

by

ELIZABETH HALASH

December 2010

Advisor: Dr. Cheng-Zhong Xu

Major: Computer Engineering

Degree: Master of Science

The current consensus of the definition of the “cloud” is the combination of hardware and

software provided remotely as a service. One of the biggest and potentially most consequential

questions related to the cloud is how mobile devices can access and tap into this vast resource. As these

devices become smaller and smaller, consumers are conversely demanding more functionality and

features. Bridging the gap between high-end servers and mobile devices could solve the computing

problem. This research focuses on providing an infrastructure-as-a-service (IaaS), which remotely

provides both the physical hardware and platform needed to run applications. Both an overview of

current cloud providers and mobile cloud systems are discussed. Additionally, a few small scale

implementations of cloud computing were tested in order to gain quantitative data about the viability of

cloud computing. These include computationally intensive benchmark tests dynamically offloaded to a

remote server using Java RMI and a chess game Android application that connects to the Google App

Engine, which executes the chess game engine remotely. Through analysis of the current state-of-the-art

and the test applications, the advantages and limitations of cloud computing are measured and

quantified.

48

Autobiographical Statement

Elizabeth Halash

Born in Hutzle Hospital in Detroit, Elizabeth Halash decided to return to her roots for my higher

education. She received her Bachelor of Science in Electrical and Computer Engineering from Wayne

State University in December 2009. She has been working as a research student in the Cloud and

Internet Computing Laboratory since March 2009. Her research focuses on Networking Engineering,

client-server communications, and cloud computing, specifically mobile cloud computing.

She received a full-tuition Presidential Scholarship to attend Wayne State University fall 2005. In

Summer 2009, she received a National Science Foundation Fellowship to participate in the Research

Experience for Undergraduates program at Wayne State University. She presented her research work at

the Honors College Research Convocation in November 2009 and won an oral presentation award.

She has also worked as a teaching assistant at Wayne State University for the Network

Programming for Engineers class.


Recommended