Graph partitioning algorithms for optimizing software deployment in mobile cloud computing

https://doi.org/10.1016/j.future.2012.07.003Get rights and content

Abstract

As cloud computing is gaining popularity, an important question is how to optimally deploy software applications on the offered infrastructure in the cloud. Especially in the context of mobile computing where software components could be offloaded from the mobile device to the cloud, it is important to optimize the deployment, by minimizing the network usage. Therefore we have designed and evaluated graph partitioning algorithms that allocate software components to machines in the cloud while minimizing the required bandwidth. Contrary to the traditional graph partitioning problem our algorithms are not restricted to balanced partitions and take into account infrastructure heterogenity. To benchmark our algorithms we evaluated their performance and found they produce 10%–40% smaller graph cut sizes than METIS 4.0 for typical mobile computing scenarios.

Highlights

► Algorithms for partitioning software on the cloud are presented. ► KL-based algorithm allows fast partitioning for realtime use. ► Simulated annealing improves solution quality at the cost of computation capacity. ► Hybrid approach combines both. ► Comparison to METIS shows our algorithms find 10%–40% better graph cuts.

Introduction

Nowadays, the emergence of cloud computing is leading to a new paradigm of utility computing [1], where computing power is offered on an on-demand basis. Users are able to access applications, storage and processing over the Internet, via services offered by cloud providers on a pay-as-you-use scheme. The advantages for the end users are reduced cost, higher scalability and improved performance in comparison to maintaining their own private computer systems, dimensioned for peak load conditions. Moreover the elasticity of the cloud reduces the risks of overprovisioning (underutilization) or underprovisioning (saturation) [2].

The usage of the cloud is not only beneficial for web-based applications, but can also be used for other applications composed of many service components following the service-oriented programming paradigm. Some of these service components may have high needs regarding CPU power or memory consumption, and should therefore be executed on dedicated server machines in the cloud rather than on a regular desktop PC or mobile terminal, for example recognition components in an object recognition or speech to text application.

The adoption of the cloud paradigm poses the problem where to deploy software components, given the many options in terms of available hardware nodes in even moderate scale data centers. This deployment optimization is important to both the cloud user and the cloud provider in order to reduce costs. All components need to be deployed on a machine with sufficient CPU power while the communication overhead between different machines is preferably minimized as this introduces extra latency and network load. This problem can be modelled as a graph partitioning problem where a weighted graph of software components has to be partitioned in a number of parts representing the available machines. Moreover the optimal deployment can change over time, and thus in order to realise an optimal deployment a fast algorithm is desired.

An important scenario in this respect is cloud overspilling. In this scenario, a company offloads work from its own private infrastructure to a public cloud infrastructure on peak moments, as shown in Fig. 1. This enables the company to dimension its infrastructure for the average workload instead of the peak workload, reducing the underutilization and the cost of the private infrastructure. This situation is typical in digital document processing where one faces strict month-end or year-end deadlines, and thousands of batches of documents are to be processed. Typically, document processing systems support workflows consisting of a few tens of components (including content ingest, reformatting, layouting, merging, versioning, logging, output generation and printing components). As many of these components come in different versions, and potentially need to be instantiated for each customer separately, the number of components in such a scenario quickly amounts to a few hundreds.

A second use case is situated in the area of integrated simulation tools for engineering purposes [3]. These integrated tools typically involve multi-physics simulation (e.g. structural analysis, acoustic simulation and engine dynamics simulation in the case of designing a new automobile engine), and the number of simulation tools involved can easily amount to 10–20 for small engineering projects to a few 100 individually deployable components for a realistic engineering project. In such engineering endeavours, often parameter sweeps are executed to optimize the design (or to assess the sensitivity of the resulting design performance w.r.t. these parameters), necessitating multiple instances of these simulation components running concurrently, in order to arrive at realistic design times. Again, we end up with a component graph containing a few 100–1000 components.

This overspilling problem also arises in the context of mobile computing, where the cloud can be used to enhance the capabilities of a mobile device. Due to the restricted CPU power of mobile devices, the idea is to offload parts of the application at runtime to a cloud infrastructure [4]. The question then is which parts to offload and to deploy on which machines in the cloud–and how many–in order to spread the load while keeping the needed bandwidth low. In this case, the complexity of the partitioning problem depends on the granularity of the offloading, as offloading can be done on component [4], Java class [5] or method [6] level, resulting in graphs of tens, hundreds or thousands of components.

A special case of deployment optimization occurs when multiple mobile devices connected via a wireless network share their resources in order to enhance the user experience of all users, in a so called “cloudlet” [7], as shown in Fig. 2. This is the case when no internet uplink is available for offloading to the cloud, or when cloud offloading is not beneficial due to a high WAN latency. Because the bandwidth is a scarce resource and shared between all devices in the wireless LAN, a global optimization is needed taking into account all application components of all devices.

As an use case, we mention a mobile augmented reality application. When casting such an application into a component framework, the number of independently deployable components amounts to 5–10 [7], with different components for tracking camera movements, building a 3D map of the environment, recognizing objects, detecting collisions between objects, rendering a 3D overlay, etc. Other applications, such as 3D games, are reported to consist of 10–20 components [8]. Assuming a few tens of users connected to the same cloudlet and hence sharing computing and network resources, the number of components easily exceeds 100. As these users are connected through heterogeneous devices (a mix of low-end and high-end devices), an optimal deployment guaranteeing a minimal quality of experience for all users should be aimed for.

In this paper we present algorithms to partition a software application, composed of a number of components, on a number of interconnected machines in the cloud with different capacities while minimizing the communication cost between the components. In Section 2 related work regarding graph partitioning and task allocation on the grid is discussed. Section 3 more formally describes our problem and in Section 4 algorithms are proposed that solve the problem. In Section 5 the different algorithms are evaluated and compared regarding solution quality and execution time, and the influence of different parameters is discussed. In view of the use cases mentioned in this introduction, we focus on graphs containing 100–1000 components for this evaluation. We also compare our solutions to METIS 4.0 for partitioning graphs in k balanced partitions and show the applicability of our algorithms in the mobile offloading scenario. Finally Section 6 concludes this paper.

Section snippets

Graph partitioning

Graph partitioning is a fundamental problem in many domains of computer science, such as VLSI design [9], parallel processing [10] and load balancing [11]. The graph partitioning problem tackles the problem of dividing a graph in k equal sets while minimizing the edges between the sets. When k=2 this is also referred to as the min-cut bipartitioning problem. Finding a good solution for this problem is known to be NP-Hard [12]. In the following we give a brief overview of the state-of-the-art

Problem statement

Let G=(V,E) be an undirected graph where V={v1,v2,,vN} is a set of N vertices and E is a set of edges connecting the vertices. The vertices represent units of deployment in a distributed software system and the edges represent communication overhead between those units. Each vertex vi is assigned a cost wi that indicates the amount of resources (i.e. CPU power) this component needs. C=(cij) is the adjacency matrix of G, i.e. if there exists an edge between vi and vj then cij equals the weight

Integer linear programming (ILP)

The problem defined in Section 3 can be seen as an Integer Linear Programming (ILP) problem, thus an ILP solver (IBM ILOG CPLEX [37]) can be used to determine the optimal solution for this problem. The amount of time and resources needed to solve this problem grows exponentially with the size of the graph, so heuristics are needed to find a good solution faster. We can still use the ILP solution for smaller graphs to benchmark our algorithms that exhibit better scaling behaviour, possibly at

Evaluation results

To evaluate our algorithms we generated test graphs with different node sizes. Graphs were generated with the Eppstein power law generator [42] and the weights of the nodes and edges are assigned according an exponential distribution with parameter λ equal to 0.1 and 0.005 respectively. Although the actual graph structure of an application will depend on the software design, we chose these graph configurations as most design principles aim to reduce the dependencies between different software

Conclusions and future work

In this paper we presented algorithms for partitioning software graphs for deployment on the cloud. The best partition is calculated taking into account the infrastructure heterogenity. In contrast to deployment optimization for computational grids, we do not minimize the execution time of a set of mesh structured tasks, but we focus on minimizing the bandwidth between software components. A multilevel KL-based algorithm is presented as a fast partitioner which allows realtime deployment

Tim Verbelen received his M.Sc. degree in Computer Science from Ghent University, Belgium in June 2009. Since then he has been working as a Ph.D. researcher at the Department of Information Technology (INTEC) of the Faculty of Engineering at Ghent University. His main research interests include mobile computing, context-aware computing and adaptive software.

References (42)

  • Noesis solutions, optimus....
  • M. Kristensen, Scavenger: transparent development of efficient cyber foraging applications, in: 2010 IEEE International...
  • T. Verbelen, P. Simoens, F. De Turck, B. Dhoedt, Cloudlets: bringing the cloud to the mobile user, in: Proc. of the 3rd...
  • P.-O. Fjallstrom

    Algorithms for graph partitioning: a survey

    Computer and Information Science

    (1998)
  • K. Schloegel et al.

    The Sourcebook of Parallel Computing

    (2003)
  • B. Kernighan et al.

    An efficient heuristic procedure for partitioning graphs

    Bell System Technical Journal

    (1970)
  • C. Fiduccia et al.

    A linear-time heuristic for improving network partitions

  • L. Sun et al.

    An effective multi-level algorithm based on simulated annealing for bisecting graph

    Lecture Notes in Computer Science

    (2007)
  • L. Sun et al.

    A new multi-level algorithm based on particle swarm optimization for bisecting graph

    Lecture Notes in Computer Science

    (2007)
  • M. Leng et al.

    An effective multi-level algorithm based on ant colony optimization for bisecting graph

    Lecture Notes in Computer Science

    (2007)
  • B. Hendrickson, R. Leland, A multilevel algorithm for partitioning graphs, in: Proceedings of the 1995 ACM/IEEE...
  • Cited by (72)

    • Secure software placement and configuration

      2020, Future Generation Computer Systems
      Citation Excerpt :

      Mixed Integer (quadratically constrained) Quadratic Programming involves formulating the problem using a finite set of – real-valued or integer-valued – variables, and a finite set of constraints, which are equations or inequalities comprised of linear or quadratic expressions of the variables. It is more common to use Mixed Integer Linear Programming, in which the constraints are all linear, to solve application placement problems [22,23], but as we will see, we need the higher expressive power of quadratic constraints to express the more complex relationships in connection with the security controls. The steps of the proposed algorithm are summarized in Algorithm 1, and explained in the following.

    • A smartphone perspective on computation offloading—A survey

      2020, Computer Communications
      Citation Excerpt :

      Then, profiling is carried out on every component (module/bundle/method/service) composing those applications to measure necessary data. One of the most typical methods to analyze and model an application running on smartphones is to use a call graph, which is a Directed Acyclic Graph (DAG) that represents the relationship between the computational components of that program [150–159]. Normally, the nodes of the graph represent the procedures/functions of a program and the edges represent the communication/invocations between them.

    View all citing articles on Scopus

    Tim Verbelen received his M.Sc. degree in Computer Science from Ghent University, Belgium in June 2009. Since then he has been working as a Ph.D. researcher at the Department of Information Technology (INTEC) of the Faculty of Engineering at Ghent University. His main research interests include mobile computing, context-aware computing and adaptive software.

    Tim Stevens received his M.Sc. degree in Computer Science from Ghent University, Belgium, in June 2001. In January 2009, he obtained his Ph.D. degree in Computer Science Engineering from the same university. Before joining the Department of Information Technology (INTEC) of Ghent University in August 2003, Tim was a database and system administrator for the Flemish public broadcasting company (VRT). At present, he is a postdoctoral researcher affiliated with INTEC.

    His main research interests include future access network architectures, IPv6, Quality of Service (QoS) and traffic engineering in IP networks, anycast-based services, and cloud and grid computing.

    Filip De Turck received his M.Sc. degree in Electronic Engineering from the Ghent University, Belgium, in June 1997. In May 2002, he obtained the Ph.D. degree in Electronic Engineering from the same university. During his Ph.D. research he was funded by the F.W.O.-V., the Fund for Scientific Research Flanders. From October 2002 until September 2008, he was a post-doctoral fellow of the F.W.O.-V. and part time professor, affiliated with the Department of Information Technology of the Ghent University. At the moment, he is a full-time professor affiliated with the Department of Information Technology of the Ghent University and the IBBT (Interdisciplinary Institute of Broadband Technology Flanders) in the area of telecommunication and software engineering. Filip De Turck is author or co-author of approximately 250 papers published in international journals or in the proceedings of international conferences. His main research interests include scalable software architectures for telecommunication network and service management, cloud computing, performance evaluation and design of new telecommunication and eHealth services.

    Bart Dhoedt received a Masters degree in Electro-technical Engineering (1990) from Ghent University. His research, addressing the use of micro-optics to realize parallel free space optical interconnects, resulted in a Ph.D. degree in 1995. After a 2-year post-doc in opto-electronics, he became Professor at the Department of Information Technology.

    Bart Dhoedt is responsible for various courses on algorithms, advanced programming, software development and distributed systems. His research interests include software engineering, distributed systems, mobile and ubiquitous computing, smart clients, middleware, cloud computing and autonomic systems. He is author or co-author of more than 300 publications in international journals or conference proceedings.

    View full text