Keywords

1 Introduction

The latest development in mobile computing has altered user preferences for computing. As users expect to operate computationally intensive applications on their smart mobile devices (smartphone’s, personal computers, tablets) but smart mobile devices have certain limitations such as battery life, storage capacity, CPU potential, etc, due to which the user faces so many problems while running large applications. Examples of such applications comprise image processors [1, 2], video processing [3], and online gaming. Such applications need battery lifetime, more computing power on resource constrained SMDs [4]. To overcome these limitations, the concept of mobile cloud computing has been introduced. Besides, its computational offloading is a good solution to enhance the performance of the mobile application.

Cloud computing (CC) directs to manipulating, configuring and accessing the application via the Internet. It provides online infrastructure, data storage, and applications. Cloud computing provides various services and resources to SMDs such as software as a service (SaaS), platform as a service (PaaS), infrastructure as service (IaaS), testing as a service (TaaS), etc., through different service provider applications in an on-demand fashion and users can access these resources through centralized cloud server. With the support of cloud computing and the eruption of mobile applications, mobile cloud computing (MCC) is introduced, which is defined as the combination of cloud computing into the mobile environment. MCC provides ubiquitous and computationally intensive mobile applications by attaining the benefits of cloud data centers. It brings new facilities and services to mobile users by taking the benefits of CC and thus reduces the resource limitations of SMDs. For increasing computing potentials of SMDs and to eliminate resource limitations, MCC utilizes application offloading techniques [5, 6]. In application offloading, computationally intensive applications are offloaded by migrating intensive applications to remote server nodes. The terms “surrogate computing” or “cyber foraging” are also used to define computation offloading. Computation offloading methods improves the performance of mobile systems by saving energy and by reducing execution cost. Offloading can be performed either in the static environment (constant network bandwidth, server loads, and connection status) or in the dynamic environment (by changing network bandwidth, server loads, and connection status). For offloading intensive applications partitioning of the applications is done and it may be static or dynamic. In static application partitioning, various components are partitioned either at compile time or at runtime in a static manner, i.e., at development time, whereas in dynamic application partitioning, the applications are separated in a dynamic manner at runtime. Static partitioning is valid if and only if all the performance parameters are predicted in advance but this approach minimizes the overall performance because the servers speed may vary. So currently offloading techniques employ dynamic partitioning techniques to improve the performance of SMDs. But the major challenging issue in dynamic partitioning is the additional consumption on mobile devices during the establishment and management of distributed applications at runtime. This paper examines different frameworks for computational offloading at runtime by discussing the critical aspects, approaches used and related issues to it.

The remaining of the paper is as follows: Sect. 2 explains the concept of mobile cloud computing and computation offloading. Section 3 analyzes the different application partitioning frameworks. Section 4 concludes the paper by discussing the future work.

2 Background

This section demonstrates the basic concepts of MCC and also describes the concept and existing work related to computation offloading in MCC.

2.1 Mobile Cloud Computing

It is the current practical distributed computing model where both data processing and data storage occurs outside of mobile device. It is a computing paradigm which provides various outspread services to smart mobile devices. It shortens the development and execution cost of the mobile devices and enable users to access a variety of cloud services in an on-demand basis. Its main objective is to increase the computing potential of SMDs. Smartphone is a compressed mobile computing device which combines computing power of handheld equipments such as PDAs and capabilities of common cellular mobile phones. MCC provides various augmentation methods such as storage augmentation, screen augmentation, energy augmentation, and application processing augmentation to alleviate resource limitations in SMDs [7]. Three major components of MCC model are SMDs, computational cloud, and Internet wireless technology. Various wireless network protocols such as Wi-Fi, LTE, 3G, etc, can be used by SMDs so that one can easily access the services of computational clouds. Key issues occurs in mobile cloud computing are end user issues, privacy and security issues, application and services level issues, data management, context awareness issues, and operational issues. These issues highlight a certain set of challenges in MCC as depicted in Fig. 1.

Fig. 1
figure 1

Issues in mobile cloud computing

MCC uses various cloud services which provide cloud processing services and online storage for extending the processing capabilities of SMDs [6]. The following section explains the concept of computation offloading which is a solution to reduce the limitations of MCC and enhances mobile systems potentiality by transferring heavy computation to rich resourceful datacenters.

2.2 Computation Offloading

MCC utilizes the computing power of more resourceful cloud servers by offloading the computational intensive applications to cloud datacenters [810]. Nowadays, many computational offloading-based mechanisms have been introduced for outsourcing large applications partially or fully to remote servers [6, 1113]. The latest computation offloading frameworks pinpoints the configuration of distributed processing of applications at runtime. Application partitioning is the most important step of offloading process and it can mainly be classified as static and dynamic.

2.2.1 Static and Dynamic Partitioning

When the offloading decision is static, it means partitioning of program is done during its development. Static partitioning involves low overhead and here the intensive application components are partitioned statically either at runtime or at compile time. This method is efficient only if all the factors are accurately known in advance. Prediction algorithms include history-based prediction [14, 15], fuzzy control [16], and probabilistic prediction [17]. It involves onetime partitioning of the application, i.e., during its design time. Here the distribution of workload occurs only once between remote servers and SMDs.

When the offloading decision is dynamic, it adapts to different runtime conditions. In dynamic offloading partitioning is done during execution of the program. This approach involves high overhead as compared to static partitioning approach because here program deals with the runtime conditions (network bandwidth, server speed). Distributed application processing frameworks is entrenched at runtime in an ad hoc manner where elastic applications are partitioned dynamically at runtime [18]. The establishment of distributed application frameworks at runtime is an energy consuming and a resource intensive method [13]. This partitioning method employs two steps, which includes application profiling and solving [11]. The mechanism where computational intensive components are identified is called application profiling, whereas application solving is the method where intensive components are separated for offloading process.

2.2.2 Algorithm for Application Partitioning and Offloading Process

Offloading Algorithm

Begin:

  1. 1:

    Elastic mobile applications execute on SMDs and utilize the application profiling mechanism.

  2. 2:

    Then it evaluates availability and requirement of resources.

  3. 3:

    If there are insufficient resources then application solving mechanism is initialized to separate the computationally intensive applications at runtime. Go to step 5.

  4. 4:

    Else application executes on local SMDs. Go to step 6.

  5. 5:

    After partitioning, application is migrated to cloud server node for remote processing.

  6. 6:

    Upon successful execution of remote components of the application, the result is returned to the main application and running on SMDs.

  7. 7:

    Exit.

2.2.3 Various Entities Affecting Offloading Process

There are various parameters that affect the process of offloading as discussed below.

  1. (a)

    Smartphone efficiency: If a smartphone has powerful processor than that of a cloud server, then taking an offloading decision is a complex process.

  2. (b)

    Nature of application: If an application requires inbuilt resources, then offloading method is not beneficial.

  3. (c)

    Cloud provider: The cloud provider must have the availability of powerful resources otherwise; there will not be a benefit to offload the application to the cloud.

3 Analysis of Application Partitioning Frameworks

Current offloading frameworks offload computationally intensive components at various granularity levels such as at module, class, object, bundle, thread, and method levels. At the module level, whole module is migrated for offloading process [12, 13]. In the class level partitioning, application is partitioned into classes [9, 10]. At the object level, an object is partitioned for application offloading. At the thread level, a thread is offloaded for remote processing mechanism of the applications [19]. In the same manner, bundle level granularity represents groups of classes that are partitioned [20, 21]. Migration support indicates the support level required for migrating the intensive applications to remote clouds. Various migration patterns are VM-based migration, entire application-based migration, and application partitioning-based application offloading. The main objective for application offloading of the application is to improve performance, reducing memory constraints, saving energy, and updating the application dynamically. MISCO algorithm [22] employs static partitioning which partitions the application into two functions: map and reduce. Mirror server framework [23] employed VM-based migration; the designed VM template is called mirror and the server which is responsible for its management and development is called mirror server. The critical aspects of mirror server are that it is not basically sketched for data processing due to that limited services which can be achieved from it. Elastic clone cloud [24] uses thread-based granularity at application level. A major disadvantage of this framework is that it requires a heavy traffic synchronization mechanism. In this architecture, VM-based migration has been done because it requires more resources and an additional support from operating system. In [18] a middleware framework has been proposed for the establishment of distributed applications dynamically. Its main critical aspects are more resource consumption due to dynamic partitioning of application.

Mobile assistance using infrastructure (MAUI) [25] is a dynamic partitioning-based framework which concentrates on saving energy techniques for SMDs. It uses application proxy method at application level. The main aspects of this framework are that it requires more efforts for the development of individual method of the application. This architecture is based on method level granularity so difficulty in maintaining consistency. Elastic application model [6] is a middleware framework which implements distribution processing elastic applications at application layer. Cuervo et al. [25] and Zhang et al. [6] employed method level granularity and requires more overhead because such frameworks involves application profiling and partitioning mechanisms at runtime [26]. Investigate VM deployment and management in simulation environment can be investigated using cloudsim. Such models need feasible profiling application method which is resource starvation and a time-consuming method [27]. Considered active service migration (ASM) approach which reduces energy consumption cost (ECC) and turnaround time by deploying coarse level granularity which present the lightweight nature of proposed framework. The limitations of such frameworks are that it involves additional overhead of application offloading and more complications occur in the deployment and management of distributed applications at runtime. Shiraz et al. [28] included SaaS with IaaS for eliminating ECC during component migration at runtime such as binary code migration cost and active data state migration cost. The critical aspects of this proposed framework is that it lacks in maintaining consistency between local SMDs and cloud server node.

Since there have not been sufficient work done in order to resolve all issues; such as availability of resources, homogeneous and consistent distributed platform, security and privacy issues so there is a scope to develop a lightweight model which overcomes these issues and optimizes and enhances the overall performance of applications in MCC.

4 Conclusion and Future Scope

This paper explains the procedure of mobile cloud computing, computation offloading and analyzes current distributed application processing frameworks. In this paper, we have explored the challenges and issues to optimal and lightweight distributed applications frameworks for MCC. Further, a lightweight optimized framework is needed to be devised which will enhance the performance of application and reduces developmental efforts by overcoming the challenges related to distributed processing of applications in mobile cloud computing.

Our future work will therefore focus on proposing lightweight methods to carry out the offloaded computation tasks and to design an optimal algorithm to enhance the performance of mobile systems by investigating the system performance in a real environment.