PhDOOS Logo

Supported by AITO.

These pages are currently maintained by Alex Potanin

 

Automatic Application Partitioning

Eli Tilevich
( USA )

Georgia Institute Of Technology
801 Atlantic Drive, Atlanta, Georgia 30332-0280
tel: (404)385-2448
fax:
tilevich@cc.gatech.edu

Keywords:

distribution frameworks language implementation software engineering

Abstract:

Application partitioning is the task of breaking up the functionality of an application into distinct entities that can operate independently, usually in a distributed setting. As networking changes the computing landscape, application partitioning is becoming the main kind of distributed programming. Even the plainest, non-performance-oriented applications may need to be partitioned due to functional considerations: the resources that the application needs (e.g., graphical workstation, database system, sensor hardware) may be distributed throughout a network. Traditional partitioning entails re-coding the application functionality so that it uses a middleware mechanism (e.g., CORBA, Java RMI) for communication between the different entities. This process is tedious and error-prone. An alternative approach is to use higher-level tools that allow the user to express how the application is to be partitioned. The tools can then rewrite the existing application code to replace l! ocal data exchange (e.g., function calls, data sharing through pointers) with remote communication (e.g., remote function calls, remote pointers or mobile objects). Automating the partitioning process while preserving correctness and insuring good performance of partitioned applications can greatly facilitate development of a large class of distributed applications. Nevertheless, automatic application partitioning faces two major challenges. First, it is hard to guarantee the completeness of the translation process, by changing the application alone. "Completeness" refers to the ability to place any arbitrary subset of application data and code on any site. A second challenge is to obtain acceptable performance for a large class of applications. This requires both careful analysis of the data exchange patterns among application entities, and appropriate mechanisms for data migration and possibly replication. Nevertheless, doing either of the above with low overhead and no ch! anges to the runtime system is a difficult task. I have built a system called Java-Orchestra, or J-Orchestra, for short, to be an experimental framework for my research. J-Orchestra is an automatic partitioning system for Java programs. J-Orchestra takes as input Java applications in bytecode format and transforms them into distributed applications, running on distinct Java Virtual Machines. J-Orchestra uses bytecode rewriting to substitute method calls with remote method calls, direct object references with proxy references, etc. J-Orchestra has significant generality, flexibility, and degree of automation advantages compared to previous work on automatic partitioning. For instance, J-Orchestra can correctly partition almost any pure Java program, allowing any application object to be placed on any machine, regardless of how application objects access each other and Java system objects. This power is due to the novel way that J-Orchestra deals with unmodifiable code (e.g., native code in the Java system classes). I have u! sed J-Orchestra to successfully partition several realistic applications including a command line shell, a ray tracer, and several applications with native dependencies (sound, graphics). My ultimate research objective is to advance automatic application partitioning to "industrial strength" levels, i.e., to the point where third-party, commercial applications can be partitioned and used successfully. The success criterion for my research will be whether a system can be produced that a) can handle the engineering complexity of commercial programs; b) enables convenient partitioning, where the user only needs to interact with a GUI for a few hours in order to partition a large application; c) achieves good performance for the resulting application.

The PhD work started: August 1999



HTML3
JAVA

 


Last modified on Mon Aug 15 14:59:24 2005