OSDI '99 The Coign Automatic Distributed Partitioning System Galen C. Hunt Microsoft Research One Microsoft Way Redmond, WA 98052 galenh@microsoft.com Abstract Although successive generations of middleware (such as RPC, CORBA, and DCOM) have made it easier to connect distributed programs, the process of distributed application decomposition has changed little: programmers manually divide applications into sub-programs and manually assign those subprograms to machines. Often the techniques used to choose a distribution are ad hoc and create one-time solutions biased to a specific combination of users, machines, and networks. We assert that system software, not the programmer, should manage the task of distributed decomposition. To validate our assertion we present Coign, an automatic distributed partitioning system that significantly eases the development of distributed applications. Given an application (in binary form) built from distributable COM components, Coign constructs a graph model of the application’s inter-component communication through scenario-based profiling. Later, Coign applies a graph-cutting algorithm to partition the application across a network and minimize execution delay due to network communication. Using Coign, even an end user (without access to source code) can transform a non-distributed application into an optimized, distributed application. Coign has automatically distributed binaries from over 2 million lines of application code, including Microsoft’s PhotoDraw 2000 image processor. To our knowledge, Coign is the first system to automatically partition and distribute binary applications. 1. Introduction Distributed systems have been an area of open research for more than two decades. Popular acceptance of the Internet has fueled a renewed interest in distributed systems and applications. Distributed application enable sharing of data, sharing of resources (such as memory, processor cycles, or physical devices), collaboration between users, increased reliability through Michael L. Scott Department of Computer Science University of Rochester Rochester, NY 14627 scott@cs.rochester.edu redundancy, and increased security through physical isolation. However compelling the motivations, the creation of distributed applications continues to be difficult. As a rule, the creation of a distributed application is always harder than the creation of a functionally equivalent non-distributed application. Complicating factors include protection of data integrity and security, management of disjoint address spaces, increased latency and reduced bandwidth between application components, partial system failures caused by isolated machine or network outages, and practical engineering issues such as debugging across multiple processes on distributed computers. One of the primary challenges to create a distributed application is the need to partition and place pieces of the application. Although successive generations of middleware (such as RPC [4, 15, 34], CORBA [35, 42], and DCOM [8]) have brought the advantages of service-location transparency, dynamic object instantiation, and object-oriented programming to distributed applications, the process of distributed application decomposition has changed little: programmers manually divide applications into subprograms and manually assign those sub-programs to machines. Often the techniques used to choose a distribution are ad hoc, creating solutions biased to a specific platform. Given the effort required, applications are seldom re-partitioned even in drastically different network environments. Changes in underlying network, from ISDN to 100BaseT to ATM to SAN, strain static distributions as bandwidth-to-latency tradeoffs change by more than an order of magnitude. User usage patterns can also severely stress a static application distribution. Nevertheless, programmers resist repartitioning applications because doing so often requires extensive modifications to program structure and source code. We argue that system software, not the programmer, should partition and distribute applications. Furthermore, we assert that existing applications can be partitioned and distributed automatically without ac- 1 cess to source code, provided the applications are built from binary components. To validate our claims, we have built a working prototype system, the Coign Automatic Distributed Partitioning System (ADPS). Coign radically changes the development of distributed applications. Given an application built with components conforming to Microsoft’s Component Object Model (COM), Coign profiles inter-component communication as the application is run through typical usage scenarios (a process known as scenariobased profiling). Based on profiled information, Coign selects a distribution of the application with minimal communication time for a particular distributed environment. Coign then modifies the application to produce the desired distribution. Coign analyzes an application, chooses a distribution, and produces the desired distributed application all with access to only the application binary files. By solely analyzing application binaries, Coign produces distributed applications automatically without violating the primary goal of commercial component systems: building applications from reusable, binary components. In the next two sections, we describe Coign and the implementation of the Coign runtime. In Section 4, we present experimental results demonstrating Coign’s effectiveness in automatically distributing binaries from over 2 million lines of application code. In Section 5, we describe related work. Finally, in Section 6 we summarize our conclusions and discuss future work. machines by deep copy of message arguments. By leveraging the COM binary standard, Coign can automatically distribute an application without any knowledge of the application source code. The Coign ADPS consists of four major tools: the Coign run-time, a binary rewriter, a network profiler, and a profile analysis engine. Figure 1 contains an overview of the Coign ADPS. Application Binary Coign Runtime Binary Rewriter Profiling Scenarios Instrumented Binary Abstract ICC Data Network Profiler Profile Analysis Binary Rewriter Network Data Best Distribution Distributed Application Figure 1. The Coign ADPS. An application is transformed into a distributed application by inserting the Coign runtime, profiling the instrumented application, and analyzing the profiles to cut the networkbased ICC graph. 2. System Description Starting with the original binary files for an application, the binary rewriter creates a Coigninstrumented version of the application. The binary rewriter makes two modifications to the application. First, it inserts an entry into the first slot of the application’s dynamic link library (DLL) import table to load the Coign runtime. Second, it adds a data segment containing configuration information at the end of application binary. The configuration information tells the Coign runtime how to profile the application and how to classify components during execution. Because it occupies the first slot in the application’s DLL import table, the Coign runtime always loads and executes before the application or any of its DLLs. At load time, the Coign runtime inserts binary instrumentation into the images of system libraries in the application’s address space. The instrumentation traps all component instantiation requests in the COM library. The instrumented binary is run through a set of profiling scenarios. Because the binary modifications are Coign is an automatic distributed partitioning system (ADPS) for applications built from COM components. COM is a standard for packaging, instantiating, and connecting reusable pieces of software in binary form called components. Clients talk to components through polymorphic interfaces. Abstractly, a COM interface is a collection of semantically related function entry points. Concretely, COM defines a binary standard representation of an interface as a virtual function table. All first-class communication between COM components passes through interfaces. Clients reference a component through pointers to its interfaces. Due to a strict binary standard, COM can transparently interpose proxies, stubs, and middleware layers between communicating clients and components for true location transparency. Application code remains identical for in-process, cross-process, and crossmachine communication. The DCOM protocol, a superset of DCE RPC [18], transports messages between 2 transparent to the user (and to the application itself), the instrumented binary behaves identically to the original application. The instrumentation gathers profiling information in the background while the user controls the application. The only visible effect of profiling is a small degradation in application performance (of up to 85%). For advanced profiling, scenarios can be driven by an automated testing tool, such as Visual Test [2]. During profiling, the Coign instrumentation summarizes inter-component communication within the application. Every inter-component call is executed via a COM interface. Coign intercepts these interface calls (by instrumenting all component interfaces) and measures the amount of data communicated. The instrumentation measures the number of bytes that would be transferred from one machine to another if the two communicating components were distributed. It does so by invoking portions of the DCOM code, including interface proxies and stubs, within the application’s address space. Coign measurement follows precisely the deep-copy semantics of DCOM. After quantifying communication (by number and size of messages), Coign compresses and summarizes the data online. Consequently, the overhead for storing communication information does not grow linearly with execution time. If desired, the application may be run through profiling scenarios for days or even weeks to more accurately track user usage patterns. At the end of a profiling execution, Coign writes the inter-component communication profiles to a file for later analysis. In addition to information about the number and size of messages and components in the application, the profile log also contains information to classify components and to determine component location constraints. Log files from multiple profiling scenarios may be combined and summarized during later analysis. Alternatively, at the end of each profiling scenario, information from the log file may be combined into the configuration record in the application binary. The latter approach uses less storage because summary information in the configuration record accumulates communication from similar interface calls into a single entry. The profile analysis engine combines component communication profiles and component location constraints to create an abstract inter-component communication (ICC) graph of the application. Location constraints can be acquired from the programmer, from analysis of component communication records, and from application binaries. For client-server distributions, the analysis engine performs static analysis on component binaries to determine which Windows APIs are called by each component. Components that access a set of known GUI or storage APIs are placed on the client or server respectively. Other components are distributed based on communication analysis. The abstract ICC graph is combined with a network profile to create a concrete graph of potential communication time on the network. The network profiler creates a network profile through statistically sampling of communication time for a representative set of DCOM messages. Coign employs the lift-to-front minimum-cut graphcutting algorithm [9] to choose a distribution with minimal communication time. In the future, the concrete graph could be constructed and cut at application execution time, thus introducing the potential to produce a new distribution tailored to current network characteristics for each execution. The lift-to-front min-cut algorithm, in our current implementation, can produce only two-machine, client-server applications. The problem of partitioning applications across three or more machines is provably NP-hard [13]. Numerous heuristic algorithms exist for multi-way graph cutting [7, 10, 12, 33, 38]. To more accurately evaluate the rest of the system, we restrict ourselves to an exact, two-way algorithm for clientserver computing. After analysis, the application’s ICC graph and component classification data (to be described later) are written into the configuration record in the application binary. The configuration record is also modified to remove the profiling instrumentation. In its place, a lightweight version of the instrumentation will be loaded to realize (enforce) the distribution chosen by the graph-cutting algorithm. 3. Coign Runtime Description The Coign runtime is composed of a small collection of replaceable COM components (Figure 2). The most important components are the Coign Runtime Executive (RTE), the interface informer, the information logger, the instance classifier, and the component factory. The RTE provides low-level services to other components in the Coign runtime. The interface informer walks the parameters of interface function calls and identifies the location and static type of component interfaces. The information logger records data necessary for post-profiling analysis. The instance classifier identifies component instances with similar communication profiles across multiple program executions. The component factory decides where component instantiation requests should be fulfilled and relocates instantiation as needed to produce a chosen 3 distribution. The component structure of the Coign runtime facilitates its use for a wide variety of application analysis and adaptation. cooperation with the information logger, provides other Coign components with persistent storage through the configuration record. 3.2. Interface Informer. Interface Informer Information Logger Component Classifier Component Factory The interface informer manages static interface metadata. Other Coign components use data from the interface informer to determine the static type of COM interfaces, and walk input and output parameters of interface function calls. The interface informer also aids the RTE to track the owner component for each interface [20]. The current Coign runtime contains two interface informers. The first interface informer operates during scenario-based profiling. The profiling informer uses format strings and interface marshaling code generated by the Microsoft IDL compiler [31] to analyze all function call parameters and precisely measure intercomponent communication. Profiling currently adds up to 85% to application execution time (although in most cases the overhead is closer to 45%). Most of this overhead is directly attributable to the interface informer. The second interface informer remains in the application after profiling to produce the distributed application. The distribution informer only examines function call parameters enough to identify interface pointers. Due to aggressive optimization of static interface metadata, the distribution informer imposes an overhead on execution time of less than 3%. Coign Runtime Executive (RTE) Figure 2. Coign Runtime Architecture. Runtime components can be replaced to produce lightweight instrumentation, to log component activity, or to remote component instantiation. 3.1. Runtime Executive. The Coign Runtime Executive (RTE) provides lowlevel services to other components in the Coign runtime. Services provided by the RTE include: Interception of component instantiation requests. The RTE traps all component instantiation requests made by the application to the COM runtime. Instantiation requests are trapped using inline redirection (similar to the techniques pioneered by the Parasight 1 [1] parallel debugger) . The RTE invokes the instance classifier to identify the about-to-be-instantiated component. The RTE then invokes the component factory, which fulfills the instantiation request at the appropriate location based on instance classification. Interface wrapping. The RTE “wraps” all COM interfaces by replacing each component interface pointer with a pointer to a Coign instrumented interface, which in turn forwards incoming calls through the original interface pointer. Once an interface is wrapped, the Coign runtime can trap all calls across the interface. An interface is wrapped using static information from the interface informer. The RTE also invokes the interface informer to process the parameters of interface function calls. Address space and private stack management. The RTE tracks all binaries (.DLL and .EXE files) loaded into the application’s address space. The RTE also provides distributed, thread-local stack storage for contextual information across interface calls. Access to configuration information stored in the application binary. The RTE provides a set of functions for accessing information in the configuration record created by the binary rewriter. The RTE, in 3.3. Information Logger The information logger summarizes and records data for distributed partitioning analysis. Under direction of the RTE, Coign components pass information about application events to the information logger. Events include component instantiations, component destructions, interface instantiations, interface destructions, and interface calls. The logger is free to process the events as needed. Depending on the logger’s implementation, it may ignore the events, write the events to a log file on disk, or accumulate information about the events into in-memory data structures. The current implementation of the Coign runtime contains three separate information loggers. The profiling logger, summarizes data describing intercomponent communication into in-memory data structures. At the end of execution, these data structures are written to disk for post-profiling analysis. The profiling logger reduces memory overhead by summarizing data for messages in common size ranges 1 Our inline redirection and binary-rewriting tools for Windows NT are available separately [21]. 4 (successive ranges grow in size exponentially). Summarization preserves network independence while significantly lowering storage requirements for communication profiles. The event logger creates detailed traces of all component-related events during application execution. A colleague has used logs from the event logger to drive detailed application simulations. During distributed execution, the null logger ignores all event log requests. The internal-function called-by (IFCB) classifier groups instances by their component class and the set of function and instance-classification pairs in the stack back-trace. The entry-point called-by classifier groups instances by their component class and the set of function and instance-classification pairs used to enter each component instance on the stack back-trace. The depth of the stack back-trace for the PCB, STCB, IFCB, and EPCB classifiers can be tuned to evaluate tradeoffs between accuracy and overhead. The instantiated-by classifier groups instances by their component class and their “parent” (the instance classification from which they were instantiated). The instantiated-by classifier is functionally equivalent to the IFCB classifier with a depth-1 stack back-trace. 3.4. Instance classifier The instance classifier identifies component instances with similar communication profiles across separate executions of an application. Automatic distributed partitioning depends on the accurate prediction of instance communication behavior. Accurate prediction is very difficult for dynamic, commercial application. The classifier groups instances with similar instantiation histories. The classifier operates on the theory that two instances created under similar circumstances will exhibit similar behavior (i.e. communicate equivalently with the same peers). Part of the output of the profile analysis engine is a map of instance classifications to computers in the network. Coign currently includes seven instance classifiers although only one, the internal-function called-by classifier, is typically used. The best classifiers group instances of the same static type created from the same stack back-trace (call chain). Figure 3 illustrates each classifier. The incremental classifier assigns each instance to a different classification based on its order of instantiation during application execution. Serving as a straw man for comparison, the incremental classifier can be expected to perform poorly on commercial, input-driven applications. The procedure called-by (PCB) classifier, similar to Barrett and Zorn’s classifier for lifetime prediction in memory allocators [3], groups instances with similar static type and instantiation stack back-trace. When walking the stack, the PCB classifier does not differentiate between individual instances of the same component class. The static-type (ST) classifier groups instances with common component class (static type). The ST classifier cannot differentiate between instances of the same class and must therefore assign all instances to the same machine during distribution. This is a debilitating feature for all of the applications we examined. The static-type called-by (STCB) classifier groups instances by component class and the component classes of instances in the stack back-trace. Program Control Flow: A::V() A::W() B::X() B::Y() C::Z() { { { { { ... a->W() ... } ... b1->X() ... } ... b2->Y() ... } ... c->Z() ... } ... CoCreateInstance(D) } where: a is an instance of component class A, b1 and b2 are instances of component class B, c is an instance of component class C, Classifier Descriptors: Incremental Classifier: [10] (for 10th call to CoCreateInstance) Procedure Called-By (PCB) Classifier: [C::Z, B::Y, B::X, A::W, A::V] Static-Type (ST) Classifier: [D] Static-Type Called-By (STCB) Classifier: [D, C, B, B, A] Internal-Function Called-By (IFCB) Classifier: [D, [c,Z], [b2,Y], [b1,X], [a,W], [a,V]] Entry-Point Called-By (EPCB) Classifier: [D, [c,Z], [b2,Y], [b1,X], [a,V]] Instantiated-By (IB) Classifier: [D, c] Figure 3. Summary of Classifiers. Each instance classifier creates a descriptor at instantiation time to uniquely identify groups of similar component instances. Call-chain-based classifiers form a descriptor by examining the execution call stack. 3.5. Component Factory The component factory produces a distributed application by manipulating instance placement. Using output from the instance classifier and the profile 5 analysis engine, the component factory moves each component instantiation request to the appropriate computer within the network. During distributed execution, a copy of the component factory is replicated onto each machine. The component factories act as peers. Each traps component instantiation requests on its own machine, forwards requests to other machines as appropriate, and fulfills instantiation requests destined for its machine by invoking COM to create the new component instance. The job of the component factory is straightforward because the instance classifier identifies components for remote placement and DCOM handles message transport. Coign currently contains a symbiotic pair of component factories. Used simultaneously, the first factory handles communication with peer factories on remote machines while the second factory interacts with the instance classifier and the interface informer. mately 150 classes of components. Octarine’s components range in granularity from less than 32 bytes to several megabytes. Components in Octarine range in functionality from user-interface buttons to generic object dictionaries to sheet music editors. Octarine manipulates three major types of documents: wordprocessing, sheet music, and table. Fragments of any of the three document types can be combined into a single document. Octarine is composed of approximately 120,000 lines of C and 500 lines of x86assembly source code. Corporate Benefits Sample [30]. The Corporate Benefits Sample is an application distributed by the Microsoft Developer Network to demonstrate the use of COM to create 3-tier client-server applications. The Corporate Benefits Sample provides windows for modifying, querying, and creating graphical reports on a database of employees and their corporate humanresource benefits. The entire application contains two separate client front-ends and four alternative middletier servers. For our purposes, we use a client frontend consisting of approximately 5,300 lines of Visual Basic code and a middle tier server of approximately 32,000 lines of C++ source code with approximately one dozen component classes. Benefits leverages commercial components (distributed in binary form only) such as the graphing component from Microsoft Office [29]. 4. Experimental Results Our experimental environment consists of a pair of 200 MHz Pentium PCs with 32MB of RAM, running Windows NT 4.0 Service Pack 3. During distributed experiments, the PCs were connected through an isolated 10BaseT Ethernet with Intel EtherExpress Pro cards. 4.1. Application and Scenario Suite Benefits PhotoDraw Octarine For our experiments, we use a suite of three existing applications built from COM components. The applications employ between a dozen and 150 component classes and range in size from approximate 40,000 to 1.8 million lines of source code. The applications apply a broad spectrum of COM implementation idioms. We believe that these applications represent a wide class of COM applications. Microsoft PhotoDraw 2000 [32]. PhotoDraw is a consumer application for manipulating digital images. Taking input from high-resolution, color-rich sources such as scanners and digital cameras, PhotoDraw produces output such as publications, greeting cards, or collages. PhotoDraw includes tools for selecting a subset of an image, applying a set of transforms to the subset, and inserting the transformed subset into another image. PhotoDraw was a non-distributed application composed of approximately 112 COM component classes in 1.8 million lines of C++ source code. Octarine. Octarine is a word-processing application developed by another group at Microsoft Research. Designed as a prototype to explore the limits of component granularity, Octarine contains approxi- Scenario o_newdoc o_newmus o_newtbl o_oldtb0 o_oldtb3 o_oldwp0 o_oldwp3 o_oldwp7 o_oldbth o_offtb3 o_offwp7 o_bigone p_newdoc p_newmsr p_oldcur p_oldmsr p_offcur p_offmsr p_bigone b_vueone b_addone b_delone b_bigone Description Create text document. Create music document. Create table document. View 5-page table. View 150-page table. View 5-page text document. View 13-page text document. View 208-page text document. View 5-page text doc. with tables. o_newdoc then o_oldtb3. o_newdoc then o_oldwp3. All of the above in one scenario. Create new image. Create new composition. View line drawing. View composition. p_newdoc then p_oldcur. p_newdoc then p_oldmsr. All of the above in one scenario. View records for an employee. Add new employee. Delete employee. All of the above in one scenario. Table 1. Profiling Scenarios. Profiling scenarios represent major usage scenarios and instantiate most component classes in each application. 6 Each of the applications in our test suite is dynamic and user-driven. The number and type of components instantiated in a given execution is determined by user input during execution. For example, a scenario in which a user inserts a sheet music component into an Octarine document will instantiate different components than a scenario in which the user inserts a table component into the document. To explore the effectiveness of automatic distribution partitioning on component-based applications, our experimental suite consists of several different scenarios for each application. Scenarios range from simple to complex. The intent of the scenarios is to represent realistic usage while fully exercising the components found in the application. Table 1 describes each scenario. Incremental Procedure Called-By Static-Type Static-Type Called-By Internal-Func. Called-By Entry-Pointer Called-By Instantiated-By Average Correlation Instance Classifier Ave. Instances / Classification As described in Section 3.4, the instance classifier must correlate information from profiling with instantiation requests during distributed execution. Choosing a metric to evaluate the accuracy of an instance classifier is difficult because we must evaluate how well a profile from one instance (or group of instances) correlates to another instance. In the context of automatic distributed partitioning, a profile and an instance correlate if they have similar resource usage and similar communication behavior (i.e. similar peers and peer-communication patterns). To quantify communication behavior, we introduce the notion of an instance communication vector. An instance communication vector is an ordered tuple of n real numbers (one for each component instance in the application). Each number quantifies the communication time with another component instance (assuming that the other instance is located remotely). The communication vector can be augmented with additional dimensions representing various resources such as memory and CPU cycles. We compare the correlation between two communication vectors with the vector dot product operator. Two vectors with a dotproduct correlation of one have equivalent communication behavior (i.e. they communicate equivalently with the same peers). Two vectors with a dot-product correlation of zero share no common communication behavior. For automatic distributed partitioning, an instance classifier should identify as many unique instance classifications as possible in profiling scenarios in order to preserve distribution granularity. An instance classifier should also be reliable and stable; it should correctly identify instances with similar communication profiles and instantiation contexts. New (bigone) Classifications 4.2. Instance Classification Profiled Classifications To evaluate the instance classifiers, we ran classifiers through all of the scenarios except the bigone scenarios for each application to create the instance profiles. We then ran classifiers for each application through the bigone scenarios. The bigone scenarios are a synthesis of the other scenarios for the application. Because all component instances should correlate closely to prior scenarios, no new instance classifications should result from the bigone scenario. Table 2 lists the number of classifications identified by each classifier, the number of new classification identified in the bigone scenario, the average number of instances per classification, and the average correlation between instance behavior and chosen profile for the Octarine bigone scenario. Table 3 lists the same values for IFCB classifier with limited depth stack walks. (The called-by classifiers in Table 2 walk the complete stack.) 1090 1262 80 713 1434 1032 590 2561 0 0 0 0 0 0 1.0 2.9 45.6 5.1 2.6 3.5 6.2 0.225 0.766 0.574 0.809 0.848 0.829 0.809 590 977 1184 1383 1434 1434 1434 6.2 3.7 3.1 2.6 2.6 2.6 2.6 Average Correlation 1 2 3 4 8 16 Complete Ave. Instances / Classification InternalFunction Called-By Classifier Stack-Walk Depth Profiled Classifications Table 2. Classifier Accuracy. Classifiers with a higher number of classifications recognize more unique component instances. Those with a higher average correlation are more accurate. 0.809 0.829 0.848 0.848 0.848 0.848 0.848 Table 3. Accuracy as a Function of Stack Depth. Both classifier accuracy (average correlation) and number of classifications increase with the depth of the stack walked. 7 Given only the component’s static type as context, the ST classifier cannot distinguish instantiations of the same component class used in radically different contexts. The “straw man” classifier, the incremental classifier, fails to correlate instances in the bigone scenarios with profiles from the earlier scenarios. It is strictly limited by the order of application execution and user input. Note that incremental classifier would perform well for static applications, but fails miserably for dynamic, commercial applications. The call-chain-based instance classifiers (PCB, STCB, IFCB, EPCB, and IB) preserve more distribution granularity because they take into account contextual information when classifying an instantiation. The STCB, IFCB and EPCB classifiers are similar in accuracy. They differ however, in the number of unique component classifications they identify. As would be expected, the IFCB classifier, which uses the largest amount of contextual information, identifies the largest number of classifications. Fundamentally, our instance classifiers are limited in their accuracy by the amount of contextual information available before a component is instantiated. They cannot differentiate two instances with identical instantiation context, but vastly different communication profiles. However, experimental evidence suggests the STCB, IFCB, EPCB, and IB classifiers preserve distribution granularity and correlate profiles with sufficient accuracy to enable automatic distributed partitioning of commercial applications. output sets, they are placed on the server to reduce communication. As can be seen in Figure 4, PhotoDraw contains many significant interfaces (almost 50) that can not be distributed (shown as solid black lines). The most important non-distributable interfaces connect the sprite cache components (on the bottom and right) with user interface components (on the top left). Each sprite cache manages the pixels for a hierarchical subset of an image in the composition. Most of the data passed between sprite caches moves through shared memory regions. Pointers to the shared-memory regions are passed opaquely through non-distributable interfaces. 4.3. Distributions Figure 4. PhotoDraw Distribution. Of 295 components in the application, Coign places eight on the server. Black lines represent non-distributable interfaces between components. Gray lines represent distributable interfaces. Q Q J V J 5 V V V V D 5 V V P D O O V P X OD D X Q && & V V O Q ( V V V & ( \ V W D Z Q D O W V S O R R \ J V J H V 2 & G LW &S D V W , 2 O W V Q LV H V W D D L & LQ O R O VV D V D 8 S , U Z WU V V WU 6 & V R :S & , V DS V OD , OD U $ 83 6 D G R P O W WQ 8 (U H R Q R D O & 8 & L LQ F , Q & D F H R L D UH (( / H , H PF & , D H D F H U ( // 2J 8 K :' & D , 8 8 ( / 22 H D J 33 W 6 ' , , U H ' R / 2 HH K Q U D , , , 8 H PQ & D D R & 2 D H U K , , 3 3 3 3 3 Q K H , , N F F F P ( 2 L H 3 H KK D W D 6 , & F D D 0 3 / Q , 3 P ( K F D & W P F 2 & , , 3 U / 2 F D && H 3 3 (( W QH R D R / 2H , , D & HH IV 0& 6 W L 3 / 2 H K WL LU U S Y H , , 3 3 & H Q ( / 2 H KF FD O 3 W U L ( L D S 3 H U 2H K ) , LW US S 6 6 7 H KF FD D&& H U 6 , 3 Q K D 3 H WLU S 6 , , R LW FD && S H WL 6 33 , L H LW U S 6 ( 3 , , V & / H WL U 3 , 2 W H RS WL US S6 6 3 ( / Z 6 PU S 6 , 3 S R 6 , 2WH H 3 L 3 Z 6 9 R U & , , H S ) (/ L 3 , , 3 3 9 R U P 1 2WH 3 , ) UR Z 6 , 3 IV S H L 1 , 3 W R Q 3 DU H 6 9) U 3 , ( , 3 , S / 1 3 U 2 W H 7[) R 3 , 3 Z 6 S WU $ , L WHH 3 R , U 6 9) , 3 SR , 13 W , 3 U OL W HH 6 H , 3 ) 3 6SSR U FR 3 W H R U 3 , ' 3 6 3 , SR WH 6S U 3 W , 3 W H H 6S RU 3 3 U H W H 6 U 3, 3 S RR U H JD Q , 6 SR U 3 , 3 U H J DQ D 0 W U 3 3 U H J DQ D 0 W QHY , 3 QH ( U H JD Q D 0 W Y , 3 U H JD Q D 0 , W QHY ( J 3 QH ( U H DQ D 0 , 3 JD D 0W Q Y ( QD W HY , 3 0 , W QHY ( 3 QH ( Y (, 3 U HJ , D QD U HJ D 3 0 W QH U HJ Q D 0 , 3 W QH Y ( D , 3 W Q Y ( U H J QD 0 HY ( D , 3 W Q U HJ QD 0 HY , U HJ D QD 0 3 W QH ( D Y( , 3 U HJ QD 0 D QD 0W QHY ( , 3 W QH U HJ Y( , 3 U HJ DQD 0 W QH D , W Q Y( U HJ QD 0 HY , 3 D QD 3 0 W QH ( U HJ Y , D 3 W QH ( U HJ DQ D 0 Y( , 3 U HJ Q D 0 DQ D W QHY ( , 3 0 W QH Y( , 3 V V V V OD V OD V & V & V U D O O J & WU D O & 0U & H J H S Q Q 0D S D Q H $ S S V R N 2 N U PD , F U G R WH % 8 H R G V S * :\ S :$ , ' , , , 6 $ 3 3 3 3 U H W W W W J H H 6H 6H HW HW HW 6 66 UD S6 6 S S S WR UR UR UR UR URS URS RS LOH U ) 6 ,3 ,3 ,3 3 3 3 3 3 3 3 3, 3, 3, 3, RF ' 3, 6 S UL WH &D FK H 2/ ( 3, 3 UR S6 H W 3 ,6 S UL WH &D FK H2 /( 3 , 3UR S6 H W 3, 1,)9 LH Z 2/ ( 3, 3 UR S 6H W 3, 6 SULWH &D FK H2 / ( 3 ,3 UR S6 HW 3 ,1,)9 LH Z2 /( 3 , 3UR S 6H W 3, 6 S ULW H&D FK H 2/ ( 3, 3 UR S 6H W 3, 1,)9L HZ 2 /( 3 , 3UR S 6 HW U HJDQD 0 W QH Y ( , 3 U HJDQD 0 W QHY ( , 3 U HJDQD 0 W QHY ( , 3 U HJDQD 0 W QHY ( , 3 W H 6SR U 3 , 3 W H6SR U 3 , 3 W H6SR U 3 , 3 W H 6SR U 3 , 3 W H 6SR U 3 , 3 W H6SR U 3 , 3 W H 6SR U 3 , 3 W H 6SR U 3 , 3 U HJDQD 0 W QHY ( , 3 U HJDQD 0 W QHY ( , 3 , 3 ( W Q HY , 3 0 D QD W QHY ( , 3 U HJ D QD 0 Y( W QH Y ( U HJ D QD 0 , 3 W QH Y ( U HJ QD 0 , 3 W QH U HJ DDQD 0 , 3 HY ( U HJ 0 W Q Y( , 3 D QD W QH U HJ DQD 0 , 3 HY ( U H J QD 0 W Q HY ( , 3 D W Q , 3 U H J D QD 0 Y( W QH Y ( , 3 U HJ DQD 0 W QHHY ( , 3 U HJ D QD 0 J 3 0 W Q U H , 3 D QD Y (( U HJ , 3 QH W QHY ( , 0 D W , 33 HY ( 0 Q D JD W Q QHY ( , 3 U H J DQ D 0 , W QHY ( 3 U H JD Q D 0 , W QHY ( 3 U H JD Q D 0 HY W , U H JDQ QD 0W Q HY ( , 33 U 33 U H HJ D QD 00 , W Q S R 3 U 6 SRU J D QD , 3 3 H U W HH 6 U , 3 JD 3 R W U H , S RU 3 3 6 S , U 3 W H H6 SR Y ( , 3 W H 6 QH Y ( ( , 3 W , 3 W QH HY ( 0 , W W Q HY Y ( , 3 3 D 0 Q WQ H ( , D QD 0 3 Q HY ( 3 , HJ D QD 0 W Y ( U HJ JD QD D 0 W Q QH , , 3 3 Y ( 0 W , 3 D Q U H ( H , 3 U HJ D QD 0 Q HY Y ( , 3 J D D U H Y ( W W Q Q ( , 3 U H HJ DQ 0 H Y , 3 W Q ( J H H Y 0 U D ( , , 3 3 3 Q UH D 0 W W Q Q HY Y ( , 3 3 D Q D 00 W Q H , Y Y( ( 3 3 J Q D , , H H 33 H JD D Q Q W W Q D D0 0 Y Y( ( ( , , U H J D Q Q 3 33 0 H H Y Y (( , , , 3 3 33 3 U H HJ JD DQ QD D W W Q Q H H ( Y Y 3 333 U U H J D Q ( , , , , 00 W W Q Q H Y Y (1 3 W 6 3 , , , , , , , H J D 0 0 U UH H D Y , W WQ Q H H & 31 3 6 3 J 0 Q D D U S U Q Q H ) R U H W 1 00 R U , D Q Q D D S U Q 9 S LU R PR ) U D D 0 R U U R , J JD D DQ Q Q W W W L W S 0 H D S 9 S WL S ) J J D D Q Q 0 H 6H 6 S 6 L 6 H U UH H H D D 0Z H & H J D 6 9 H H J J D R &H U U Q Q D 2 W D W LH V H Z H U UH H J F D D Q / D W Z H U K J J D ( WL 2 W F W LR U J 2 H H H K / 2 H U U Q / H ( U / 7 2 ( ( U D / Q ( V I R H U J H HU U U D H J J U D D J JH H HU U U Q J H HU Q Q D H D D D Q QD D J J J LN 0 U Q D D D Q W 0 D D D Q H U W0W 0 Q D DQ Q R H J Q Q W W00 D D JH HU U 0 Y YH H Q Q W W000 Q D J H U W H ( D Y H H Q Q D J H U Y Y H Q Q W LO , D Q D J H HU U ( ( ( Y H H Q ) 3 , , W00 D DQ QD DJ J H 3 3 , ,( ( Y Y YH Q H QW W00 D DQ QD DJ 3 3 , ,( ( ( Y W U 3 3 , , ( YH HQ Q W00 D DQ , 3 H Q W 0 JH U 3 3 ,( Y Y H Q W 0 JH DQD 3 ,(,( Y YH HQ QW QD 3 3 ,(( Y H W 0 D 3 3, ,( Y HQ QW0HW W 3 ,( (Y YH S6 6H 3 , HW 3 ,( URURS 6 HW W 3 ,3 3 URS S6 H 3 , 3 ,3 UR RS6 6HWHW W 3 ,3 U S 3 ,3 UR S66H U 3 ,3 UR S JH W HU QD 3 ,33UR DJ HU S6H0D 3 , 3 3URYHQW 0DQ DJJH U DQ D 3, ( HU HQW DQ 3, , (Y HQW 0 0 DQDJ JHU U 3 ( Y HQW JH HU 3, (Y HQ W00DQD DQD DJ HU QW 3, (Y DQ DJ 3, (YH QW0 0 3, (YH QW 0DQ 3, (YH QW 3, (YH HU DQDJ 3, QW0 DQDJH U 3, (YH QW 0 DQD JHU 3,(YH QW00DQDJHU U 3, (YH QW DJH 0DQ 3, (YH JHU YHQW DQD HU 3,( HQW 0 3,(Y HQW0DQDJJHU HU 3,(Y QW 0DQD 0DQDJJHU 3, (YH YHQW 3,( 0DQD JHU YHQW DQD 3,( QW0 3,(YH 6HW 3, 3URS 3 3 3 , , , 3 6 3 U R S U R S LU S 6 WH 6 H & H W D W F K H 2 / ( 3 , 1 , ) 9 LH Z 2 / ( 3 , 3 U R S 6 H W 3 , 6 S U LW H & D F K H 2 / ( 3,& 3,3 RPSRVLWLR Q7U 3,6 URS6HW DQVI SU LW R H& DFKH 3,3UR 2/( 3,1,) S6H W 3, (YH9LHZ2/( 3, (YH QW0DQDJ HU QW 3,( YHQW 0DQDJHU 0DQD 3,(YH QW JHU 3,( YHQ 0DQD JHU 3, (YHQ W0D QDJH W 0DQD 3, (Y U JHU )LOH0 HQW 0 RQLN DQDJHU HU )LO 3, H0R 3, &R3 QLN 3 (YH DLQ HU 3, ,(YH QW0W 6WUD W HJ\ 3, (YH QW 0 DQDJ 3, (YH QW0 DQD HU (Q QW JH XP 3, (Y 0 DQDJ U 5JQ 3, (Y HQW 0 DQD HU HQ 3, ( YHQ W0 DQDJJH U 3, (YH W D QW 0DQQDJHHU 3 (YHQ 0 DJ U 3 ,(YH DQ W QW 0DQ DJ HU 3 ,( 0 HU 3 ,( YH DQ DJHU DJH 3 ,( YHQQW 3 ,( YH U W 0 3 ,( YH QW 0 DQ 3 ,( YH QW 0 DQDDJ 3 , ( YH QW00 DQD J HU DQ HU 3 , ( Y Q 3 ,' Y HQ W0 DQ DJ JH 3 ,' R HQW W 0 DQ D HU U 3 , RPPD 0 DQ DJ JH U 3 ,3( DL LQ DQD DJ HU Y 3 , H Q H JH U 3 , 3 UR Q 3 , 3 UR S W U 3 ,33 UR S 6 0 UR S 6 HW D 3 ,3 Q UR 6 H 3 ,3 D UR S S6 H W 3 , J 6 W 3 , 3 U H 3 , 3 UR RS S6 H HW U UR S 6 H W , 33 , ( ( 6 H W 3 S 6 H W 3 , ,( ( Y YH 3 Q H W 3 , ,( ( Y YH H W Q W 3 Y H 3 3 , ,( ( Y H Q QW W 0 00 D 3 3 , , ( Y YH H Q Q W , ( ( 33 H Q W W00 D DQ Q 3 3 , , ,( ( Y Y Y D Q W 0 D H H , ( 3 3 D Q QD D J W 0 3 3 3 3 , , , ( ( Y Y YH H Q Q J H 0 D D Q W H ( , Q QD DJ J H U , , ,3 ( ( ( Y Y YH H Q Q W W 0 H D H Q Q W W 0 3 6 J H U U Q QD D Y Y Q W W 0 0 D D H H D J J U S UR Y H H U H H Q Q W 0 0 D D Q Q R U J H U U Q Q W W H U 00 D D Q Q D D S LW S D D Q 6 H 6 W W 00 U D Q Q D D J J J H & H 00 D D Q D J H H H D D J J H U U W D W D D Q Q H F Q Q D D J J H U U H H U U K D D J J H U U J J H H 2 H H U U U U / ( U P = Component instances placed on Server. Because Coign makes distribution decisions at component boundaries, it success depends on programmers to build applications with significant numbers of components. To evaluate Coign’s effectiveness in automatically creating distributed applications, we ran each application in the test suite through a simple profiling scenario consisting of the simplest practical usage of the application. After profiling, Coign partitioned each application between a client and server of equal compute power on an isolated 10BaseT Ethernet network. For simplicity, we assume there is no contention for the server. Figure 4 plots the distribution of PhotoDraw. In the profiling scenario, PhotoDraw loads a 3MB graphical composition from storage, displays the image, and exits. Of 295 components in the application, eight are placed on the server. One of the components placed on the server reads the document file. The other seven components are high-level property sets created directly from data in the file; with larger input sets than While Coign can extract a functional distribution from PhotoDraw, most of the distribution granularity in the application is hidden by non-distributable interfaces. To enable other, potentially better distributions, either the non-distributable interfaces in PhotoDraw must be replaced with distributable IDL interfaces, or Coign must be extended to support transparent migration of shared memory regions; in essence leveraging the features of software distributed-shared memory [26]. Figure 5 shows the distribution of the Octarine word processor. In this scenario, Octarine loads and displays the first page of a 35-page, text-only document. Coign places only two components of 458 on the server. One of the components reads the document from storage; the other provides information about the properties of the text to the rest of the application. 8 While Figure 5 contains many non-distributable interfaces, these interfaces connect components of the GUI, and are not directly related to the document file. Unlike the other applications in our test suite, Octarine’s GUI is composed of literally hundreds of components. It is highly unlikely that these GUI components would ever be located on the server. Direct document-related processing for this scenario is limited to just 24 components. the client. Coign moves the caching components, but not the business-logic itself, from the middle-tier to the client. Although not used in this analysis, the programmer can place two kinds of explicit location constraints on components to guarantee data integrity and security requirements. Absolute constraints explicitly force an instance to a designated machine. Pair-wise constraints force the co-location of two component instances. U H Q Q R 9 U LR LV V V U V U Q U H H U D U 9 O LR H H H Y H 9 9 V Y U V & O 9 V V WLI U O H V V R R W D H O V UW UW H Y W V U UH OD 9 O V Q Q Q & D O Q Q & W H 9 H U R R R OD L W V R R & 9 H % U WU I LI & ) ) & V V W 9 U H & U W WLI Q G G W H H V VD OD V L H 9 U Q L R U V O V Q IH H V D H & D W D 9 / Q L H & O V V & D L % G G / % Q H V D W V IH & O V V U H % % W WLI H X V WLI D V Q Q O LI & H W WL V Q W D D WD J % D W & O U H I H V LI LI H Q W K W D WD H V WLI & H Q % Q H L 6 6 U H W H 9 Q H LWI P 6 & H H % L I IH U H VW Q % , 9 H Q Q LI % H V V H U H H H Q W H % V Q % L 9 H H V I Q D V H WL H % % O U H H % Q V 9 I & VV VD WL H % % O H U H Q V W I WL % & Q H D VV 9 VL H V W O H I H W % L / VL & D Q H O V 9 I % W H Q VW H / VL & V VD H % L W Q / VD O U WL I H V H % V V L & I W O H9 Q U % W / H L VL & IH H Q H% V W W VV / 9 V V LI H Q H% L D UH O V H / W & V 9 W % VW LIH QH O U H VL VV D LI & 9 U / W D H QH % H VV O & VL / V Q 9 V WL IH W V H % U H O L VV D % W & 9 U / W V LI H QH D O H V VL % QH WL I VD & 9 / W H VL VWL VV O & QH % / W V IH D O VL QH % WLI & U / W V H H9 VL WL QH % V / U V IH VD % H9 QH WL I O & W V U H VV H % L QH 9 V DO & W V / VWL I U % VD HQ L H9 O & H% W V / VWL I HQ L U H9 VVD O & VWL V H% W V / U IH VD H9 QH O & L / VWL W V % IH VV U H L / QH D O 9 W V VWLI % U H VVD & HQ L/ O U H V 9 W WL I H H % VVD & 9 V O & VL / QH VD W V VWL I % O & L / HQ WL I V HQ WLI H H % H% QH U H V % 9 VV WL I D O H & QH HH\R U H OSP % 9 VV ( VWL I D O & H QH % NQ U H 9 D% VWLI VVD H QH % O & W VL / U H 9 VWL I H VVD QH % O & W VL U H / VWL I 9 VV HQH % D O & W VL / U H 9 V WL I H VV QH % DO & W VL / U H VWL I H 9 VV QH % D O & U H W VL / VWL I 9 VV H QH % D O & W VL / VWL I H QH % H F V H Q V V L H W H \ H U LW WL X U \H U U U T D V H S H H F U S DR \ H H Q S R U LW Q R H U V L R U Q D U U 6 W W H V H J R L Q H U 3 WL 3 H X H F H W D H L \ LW WU J 3 R U S UT FG W H\ Q L U WL V DV KV K L Q ' U Q H D R U HH KD H H H S D V U F Q L SQS SS U R X RS ' J6 S R 6Q V DU D DH LR 3 U U U R 0LHS H R PPD, RDR R U V H ' F U W G W U J LHHS U V U \JO \ L 3 I HL X H F U U U U 303J3 HW L LW Q V L SQQ O H% P H\W FW 3 8 W D LI J P \ D U XD R U VK U H W WHR W RRWRW W LF RV S* LHH W H ' Q H U [ UDR O W[ D R KSS H X Q6 S \ LH U R0 J IL IL J [ \ H \U S U T R Q 1 U S V LW HD W H U S RD U U H 3 , & 6 & 6 , ' ' \ S VD S H W OH PRWR R W HW 7 3731 DU U 6$ V U HH D R F L SQDR U 3JH 22 RW L LI J [P\ 2 2 2 22 ,Q76 Q 3J 6 1 L V H RW JW DIL LW H R U 22222 61 ' R H LW WU U 03 LW GD H 2222 D[ U WRRW H&6& WL 2 U 3 H U V Q 2 7 U W F HD 1,Q DV UHH W H 2222 H S L SQ R L J [O\ [H D 73 S R 22 1 U RX 0 2 3 ' R S\ U LIW H U R 22 W HW 7 3 U \U S U R Q 76 U UH3 222 H O PR VK H 3 D W P\ RW 61, 222 H J KS S U Q L [ RW & D H IL J R 22 LW DVSSR H W H &6 DU UJLIL W R 22 V Q U F DW U UJ3 Q L SDR , 7 22 H R W R U 1 S 2 O \ ' W D 3 U 0 U [HD 1 22 2 HU DU UH3 U H O [ D 73 HS + 2 JW \ H 3 W Q H O H 2 RLI H[HW 67 \\U 2 2 V L LW LW RW Q D \U UD 7 2 + O Q H VU F L 1, 2 D Q RU R O 2 Q R W L LW L H ' 2 R L W FL )F 3 U QR 2 L 'R 2 H & WF F 2 L ' L HN ' 2 HGGRQR( U 2 / ' R FL 0 HN UH 2 O 2 HL LI FL Q H L )2 H GQRLW Q88 U 2 H U GRRFL 0R1 2 LILFL Q P HNL QH W, 2 W Q 8 G H U H UHGRFR 0R 8 2 1 H R L OL ) 2 Q P 2 U NL H LIL FL Q 8 W P U HNL QR W, H RU R 8 UHHN 2 Q 1 QR)HF 2 NL L QR 0P LW F QD H2 QRR 0 WV H O H 0H O W, OR ,W Z 6 HL ) Q HL UW H*0 H OLOL ) 9 H U U HHY QR R& ) LILWLW F $ O E HN L Q W UH & a DK R 2 L / S O HSRUV F WL R 01 2 ZH + O GNFQ Z P OL ) RUW D%RQ U R 6 NQ ) Q P 2 H WL R & H 2 UR8 WL 6 2 (/ ) 2 O 6 UR 2 ZL Z U P HL U R R& W H ) 2 LIWLWQR 9 9 H G & 2 R1 U D\ H S L / O HSRV O O 2 QDD* + 2 OUGN Q Z G W 6 2 P UR R UW FQD%RQN 2 Q ) H WL R & 2 UR8 P 6 ) 2 (/ P 2 UR 2 HWL 6 ) 2 O R H+ UW QR 2 O RUW & H QRU & LIL W R ( 1 2 QR 2 /2 LW F 2 H P H O H6 D U) 2 W H W[H 6 HJ 7 2 UH 2 L IL QD 5 UD 2 RE\ U H LIL WW R 1 N L Q H. 2 R1 R 0 ' , WJ[H7 2 U N FH 2 L QRRU 3 O HH 0 6 HY HOL ) LW F U HN $ L QR 2 UH 0P NL Q H R 0 U HN W, P L QR H W, U HN 0P H W, U HNLL QR 0P HW, UH N QR 0P H U HNLL QR 0 HWW,, QR 0P UH NL Q HW, R 0P P HW, V S U H OS H + R O JH 3U RZ Z ZU H UDLOH W W G W GR W GRLHW RZ RZU Z Z QWURLWH WRF)H[ DLQLQDLQLQDLQ LQRWLI LQLQGLQWQGWLILHLQW GRW GR RRO66LW Z L R LQLQ & 3 D 6R 7 :3:3 :13D:3D: ( WU W RW RZU Z 13:D LQ / QUP G '2 22222 RR LQ LQ G LHW R Z 2222 3:2 222 &) D LQ D LQ WLI G W R U H OS U H H + U U H O H J HOS H LW LN LQ+ 6 WUR OS O LWHQ U Q GO O H 22 R LQQ G WUR6RLNH RLQWUR 222 3: LWH WUR+ 3: D L DLQ 22 LQ Q P&Q 0 O%Q6H Q O 22 O R 3 URH 22 1 RRU ( R ,' : 3 UR RO LW RQW LW UR 222 : & / 0 JQW & 6& 6 HU QW 2 O 22 ) 2PURR (QWU Q&RO OS R 2 R H WUR H 2,WH3& /RRUP WWR LW Q H + & ( WU O S 22 2 & X /RQ 6 R 6LW 22 ) &U H UR URW Q % UP LH RO L W W NGLV 22 2 & R HO LI WU 6 RQ FQ/ FWLR 2 DE RW Q & D 22) OH /1 RRUP ( %Z HU 22 & / P NQR 6H 2 ) RU 2 Q P H LN 2 RU WLYRQ 2 ) 228 )$F0 LQWGRZ W 2 2 LO H D LQLQ GRZ ) 3 D LQ 22: 3 W Z 2 : LQGR 2 3DLQQW RZ : G 2 2 3DLLQLQW ZU 2 : 3D GR 2 ILH 2 :LQ RWL W RZ 2 1 DLQ LQG W 2 3 : LQ RZ 2 HU 2 3DLQG WLIL 2 : 1R QW Z 2 2 3DLLQGR 2 : LQW RZ 2 3DLQGILHU 2:RWL 1 2 2 L QW Z 23DLQGR OSHU 2:DLQW Z O+H 23 LQGR RQWUR /LVW 2:/(& 22 QNQRZQ 28 WUL QJ/LVW HU RQLN HQX 26 LNHU 20 URJ,'0 0RQ U 23 RJ,' /LVW 23U 0RQLNH RZQ ,WHPQNQ /LVW 28WULQJ LNHUU 26 HQX 0RQ QLNH 20URJ,' 0R 23 URJ,' LNHU U 23 0RQ QLNH ,WHP0R LNHU ,WHP0RQ ,WHP ,W HP 0R Q L NH U ,W HP 0R 2 8Q NQ Q R LN ZH QU / L VW 2 6 WULQ J/ L VW 2 0H Q X 23 UR J, '0 R QL NH U 23 UR J,' 0R Q L NHU ,W H P 0 R Q LNH U , WH P 0R Q L NH U , WH P 0 R QL NH U , WH P 0R Q LN HU ,WH P 0R Q LN H U ,WH P 0R Q LN H U ,W HP 0R Q LNH U ,W HP 0R Q LNH U ,W H P 0R Q L NH U ,W H P 0R Q L NH U 2 8Q N Q R Z Q / LVW 2 6W UL Q J/ L VW 2 0 H Q X H V P D H % W V S \ S 6 $ U U U H H H U U U 9 9 H H 9 U H H V U 9 V V V H 9 9 9 OD V V U V V 9 U H D V V V V U H O & OD V V H V 9 9 OD OD U & & 9 HH H V V U OD OD U W & V H W V \ & & OD H V V W V OR 9 9 V OD W & & L W 9 L V S H / W LV LV V OD & V J LV LV VW / OD H V V U ODV / / / V V D W& & P OD L V V V / / U \H H LW U LW W ( V V H I LV & I & OD W OR ILW ILW W 9 9 WR H H W LV V H V W & S U IL H H / / L IL VV V \H H 6 Q Q H H V P U Q Q ILW LV W / / H H U ( OD V 9 Q Q LV OR H H H ILW LWV V H H W / % % % H H OD S H I Q ILW LWV V % % LV W& & P VV 9 Q H 9 H H I W V H VV % % / LV Q Q ( OD V H H ILW % V LV U OD / W & OD Q H H LW & H % % I V / W HU W H Q H V /LV LV 9 HH U IL % H W& 9 Q H \ ILW V / H VV VV H % LV Q H LW OD SOR 9 HU % H Q OD HI ILWV V/ % H W& P VV 9 Q & H % LV W( H ILW Q OD VV H \HH HU % H V/ /LV W& OD Q OR 9 % H HILW ILWV /LV W & PS V % Q H H LV V HU WV % HQ / W( OD V9 HIL LWV L V W& % HU ODV HQ HI V/ LV 9 H& % HQ VV H ILW V/ U \ OD % QH ILW 9H W& PSOR HU /L V VV %H QH V9 HU OD ILWV /LVW( ODV %H U 9 N& HU QH , 8 * W& LQ %H HILWV /L V ODVV ILW/ V9 V 9H W& ODV %HQ ILWV LV HQH QW & W&ODV QH V/ % DQ %H ILW GD /LVW QH HQ HQG %H ILWV HS QH ' 'HS %H ILWV VW /L QH U %H ILWV 9H QH O DVV U %H L VW& 9H 9HU HI LWV/ LVW&O DVV %HQ &ODVV I LWV/ H GDQW 9HU %HQ HSHQ QW &ODVV U HILWV' QGD %HQ ODVV9H U LWV'HSH QGDQW& QHI V9H %H HU HSH W &ODV V9 ILWV' QGDQ &O DV %HQH HSH W/LQN 9HU ILWV' QHIL %HQH QW &ODVV LVW%H / QGD ILWV 'HSH %HQH ILWV/LVW VV 9HU %HQH /LVW&OD HILWV %HQ %H Q HI LWV /LVW &OD V V9H U %H QH ILWV/ LVW % HQ HIL W/L QN&ODVV9 HU % HQ HILW V 'HS HQG DQ W &ODVV 9 HU %HQ HIL WV/ LVW'H S HQGD Q W &OD VV 9H U %H QH ILWV/ L V W &ODVV9HU %H QHI LWV/ LVW&O DVV9HU %HQ HILW V /LVW%HQ HI LW/ LQN &OD V V9HU %HQ HILW V 'H SHQ GD QW &ODVV 9HU U H 9 VVD O & W V L / V WL I HQ H % %H QH ILWV/ LVW 'HS HQG DQ W&OD VV9H U VV D O & W Q DG QHS H ' W V L / V WLI H QH % UH9 VV D O & W Q DGQ HS H ' V WLI H QH % VV D O & NQ L / WLI H QH % W V L / V WLI HQ H % U H 9 VVD O & W V L / V WL I H QH % H9 VV D O & HH\ R O S P( W V L / V WLI H QH % UH9 VV D O & W V L / VWLI H QH % U H 9 VV D O & Q L P G$ VWLI H Q H % 23U 23 RJ,' ,WHPURJ,'0RQLNH ,WHP0R 0RQLNHU QLNH ,WHP0RQ U U LNHU ,WHP 0RQLNH ,WHP0RQ U 28 0RQLNHU LNHU 26 QNQRZQ 20WULQJ/LV /LVW W 23UHQX 23 RJ,'0 ,WHPURJ,'0 RQLN ,WHP 0RQ HU 0RQ LNHURQLNHU ,WHP ,WHP0R LNHU QLNHU ,WHP0RQLNH ,WHP0RQLNHUU 0RQ ,WHP0 LNHU ,WHP RQLN HU ,WH 0RQLNH HW, P 0 U ,WH P HW, L QR P ,WHP 0RQ U HNN R 0 2 L Q U3 W, 2 P0R U H0 , JR H P ' 2 8 0 QLLNHU R 0 HW,, QR H P N L QQ 2 6 QN RQ NH H W U HNL U H R 0 P NL Q 2 0 WULQQRLNHUU U H R 0 H W, U NL QR 0P 23 HQXJ ZQ HW,2 N L QR 0P ,WH3UU RJ, /LV /L 2 2 UH W VW NL & ,WH P RJ ' (/ UH 2 ,' 0 QR E RU F 6 ,WHP 0RQ 2 0 RQ D OO LILW R 1 + O RUW& ,WH P0RQ LNH R U U H OH LNH U R)& 2 ,WH P 0RQ LN URQLNH U HS O RUW Q P R 2 U HU H WL 6 ,WH P 0RQ LNH UW Q U O R U R) ,WH P 0RQ LNHUU HWL 6 P 2 0 R& ,WH P WL 6 H 2 LNH UW Q(/2 O R ,WH P 0 RQLNH 2 * U HWLUW6 QR & ,WH P 0 RQLN OO DR \H 1 2 2 ,WH P 0 RQ O R HUU \ D/ U H LI LWQ D5 O H+ 0 RQLLNH ) ,W P U HS W XR R 0 HJ OL 2 ,W HP 0 RQ U NH H X 0 2 LNH U ,W HP 0 RQLN HV R W F$ 2 HP 0 QD+ ,WH HUU NL Q YL O X 5 R U HO G 2 2 UH 6 HU H R1) 2 2 8P0 RQQLN 2 OH LIL WP UR & 2 6 Q0 RQ LN H H 2 2 UH 0WUL N R LN UW QR/ 2 LW F 6 2 2 3 Q QL HHUU QR H QJ H WL O R R11 2 ,WH3 RZNH U ( UR & 2 ,W P L ILWIL W R 1 UR QX WL 6QRU H U H L ILW RR 1 2 ,W HP 0JJ,' /LVQ/ W H U 2 ,W R U H L W HP 0 ,' 0 W LV O U H IL W 61 H + U L \ULR R 2 2 ,W,W P 0 RRQL 0 W OH S LI W U R)& 2 , HHP 0 RQQLNNHU RRQL UH D/ H 2 ,W WH P 0 RQ QRD* Q NH UP H P0 R R\ UL 6 22 6 ,W,W HP LN RW H O LNLNH U W X W6 2 H W ) H U D O 9 \O P 0RRQQLN ,W HH H U 8 ,WH U 0 H P0 HWL H L URQ ) 22 GQP P 0 R QLNLNHHUU Z ,W,WH P QNU R/2) 2 H U UD 0 RRQQ P 2 P0 U 2 ,W ,WHHP G ZR (P URR& 2 9 1 2 H P 0 RR Q LNLNH Q %& 2 8 L R 2 22 0 P0 H 2 / D R UW Q QQ LN H Z LW /U )7 2 2 6 0 L NF QW L 6R RRQ LNLN H UU LI ( DH 5 0 2 2 3 1 W VUGRUW H P 2 O U H& [ WULQN RR 22 6 QQ LN HH U 1 3 W JQD R H6 O WL W RR 7 22 8 URHQQQ Q LNLN H U U SR+ W,W, H H 2 6 UR J XJR LN HH U H W Q O H HH LILLILW [H 3 & 0 HH W,W, 22 6 ZH U U Q O H 6 RU U H RHS U PP 2 & W WU N J, ,' / Q U . U R PHH W, W, W, + O LW FW H ) 222 W QU H LQ QR' 0 LV / J 0 00 P HH , , R WDH 2 & H P 2 RU Q \ Q W R , R 0 P W O 'Q R PHH W , , E S Z0 R 2 ) /R QQ X J O LV 2 RR 0 W W W, U 00PP H / Q R Q N L L QQ DR UH W 0 HH W, , 22 ) &1 R R (PWU G /Q LN N L QQRRR 00 P U PP 22 2 W W, , G RD HH RRU Q 2 R HH N L W W, , , LV LN H P Q R R 00 22 8)R/R QWLI PWU &6 O U LVW + Q U U UHHNN LLQ PHH W W W, , UPW LH R LW 6G HH ) 22 & D W H U NL L QQ RR 00 PPP ( L U HHNH HH W W, , 6 O R U N ) 1 Q UP )22 U 0 U U U HN L QQQR PP H W , , , , GQ H 000 P N 22LO 8)2R RRR & R U LW 6QH LW 0 LN UN P HH W W W W , , , 222 H O RR U LN H LW WUR H H 6 O L H R/ 000 P U UH HN PP QW PQ % HHHH W W W 2, , , , U QQ R RR 0 222222 7 H$) R LW 6 RQ U (UP LI HH H W W W W , 2222222222222222 H O Q 0 U U HH R 12 )2 22 L L QQ Q RR 00 PPPPP N HH H WH X U R 0FW U N P WURLH Z D Q H LWH 2)& N LN L QQ RRR P3 L 000 PPPP + HH F WUR $0) 8) RRR/ L N NN O RLY PQ &6 U 61 1551) &2 L LN QQQ RR 000U P2 N H$) &S R QR /U QW ( R U U HH H Q H L L L QQ OE Q H R %RLW O6 R 0000 0/F )&) &2* U U G O H N RRRRR 'U N U (P IL N NN / ZDQ H OS L R RRR R/D RDXRR R /0F R R U U UH H H U + QQQQ RJRRR QS , PQP WU LH& D LN 6 (U W U U R U U HH LN U Q R H RW Q( Q F WU LWH LN OO W QOHW U L LV LN UU H SH Y P WU OLF N L L L Q,'QQQ Q R RIL PWQPWQ(H &6R U R U H U L L P N H R% LN N Q&OO H L &OS U W 'U OH / GR HHH N N LN LN L L R D U &\ ILHJU ILH WU &QH ZDR WL O6 Q U R O EU 6 R6 H 6R L U U U UHH H 0HH H N6 6 O W R F LV UR QH L W H N LN RD R U U + Q O O R U R U U U RU U U H H F L / H L O F W W WH R 6R QU L 6LW 6Q Q L W S W 0 NU U WH 6QU HH W D N LR Q H WUR H /G R LW Q U WU & H O O LW WL UW \ R O L W &S Q L L U O H : V + N R W H HRR O R H X HU RH H OR F W R+ H + O X O V QU SH U Q + W O L W Q + L H S O W W R U &S HU R G H H H Q OR + R S O O U RH S O O S Z D QU H H U H W Q U UR U G O O H U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U LL Q 0P P H WW,, UH HN N QR R0 H W Q R & U D % H LG 6 F L V D % O H LO D ) X F LV R 9 ' ' 2$ (% ' L JQ QH % HQ VWLI H W VL / O & H% VVD WL I HQ / V U H 9 W VL QH % D O & VWL I H 9 VV W VL / U H O & H QH % VVD / VWLI U H9 W VL O & H QH % VVD VWL I U H 9 W VL / QH % D O & VWLI H VV H9 W VL / O & U HQH % VVD 9 / VWL I U H V L W QH % DO & VWL I H VV W VL / U H 9 O & H% VVD 9 HQ U H WL I H% / V I HQ % W VL VWL QH O & VL / LI H % VD W VW QH V D 9 O & W VL / I H QH% H V V U VWL O & VL / H VD % H9 W VWL I QH U V 9 O & VL / VD LI H W H% U H VW V VD O & V / HQ % 9 H WL I H W L V U V 9 O & W VL / HQ H% VD U H WLI HQ H% V O & V WL I H 9 VVD U L / V HQ H % V 9 / % W WL I U H & V HQ VL O LI QH % W / VD O & VW H QH VL % / V VD W WL I H & VL 9 V V WLI O ( QH H% % D W H ( P ( 9 V VV P H U IH HQ Q % S OS P U H 9 VWL I H % O H R \R R H OS WL Q \ H V ( U WLI H QH H% % HH & H H\ P ( V WLI I H Q % % O H S ( O & H P P H D & Q H O V VWL R O ( % VD VV VD Q H WLI H \ OS S V P ( V Q H H% % % R 9 V I H H O 9 Q \ R S P ( H WL I H H H % % % H 9 V Q H HH H\ R O WL I H H S P U & % % % % V Q Q H H U WL I O U H ( H H\ R S Q Q H O & H H D H H V VWL \ O P L/ % WLI Q & R H H H H V O H V Q Q Q H LWI I V Q \ H O S WV D % I VD D & WL I V H H H H H HH O V I V V Q D D% WL LW 9 O & R % V % WL Q V LWI WIL V VD D \ D N V H 9 O & % % LWI WIL V H Q U V O & N NQ D D / V V V H 9 V / D V & D L Q Q / 9 H N D O L / / U U H / VV & Q V V & V OD O & N L L H 9 V L LV N W & N V V O D W H 9 D O U D & & & & W V VV V & W W W H V O U V V O OD D & 9 O D & & U O V V H 9 D V D O V V O O O 9 D D 9 H V V VV D D V V U V V H H H9 V V V U U V V V V U 9 9 U 9 9 9 H H H H 9 9 H 9 9 U U U U U H H H H U U U U U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U H N L QR 0P H W, U H NL QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, % H Q H I LW V / LV W & OD V V 9 H U % H Q H I LW V / LV W & OD V V 9 H U % H Q H IL WV / LV W & OD V V 9 H U %HQHI LWV/L VW&ODV %HQHI V9 LWV/L HU VW&ODV %HQH V9 ILWV% HU HQHI %HQ LW /L Q HILW V%H N&ODV QHI LW/LQ %HQ V9 HI LW V HU N&ODV %HQ %HQ V9H HILW / HILWV U L QN& %HQH ODVV %HQ ILW/L 9HU HILW V%H QN & ODVV9H QHILW/ %HQH ILWV/L LQN& U ODVV VW%H %HQ 9HU QHILW/LQ N&O %H HILWV DVV QH 'HS 9HU ILWV %H HQ ' QH GD HS ILW %H QW& HQ V' QH GDQ OD HS ILW V %H VV9 /LV HQGD W& QH ODV HU W ' ILWV %H V9 HS QW& /LV QH OD HU HQ ILWV/ %H W& QH ODVV GDQ VV9 L ILW W& HU %H 9 V% VW& ODV QH ODV HQ I %H V9 V9 HU HIL QH LWV % HU HU I LWV HQH W/L Q % N % H HQH ILW/LQ &OD % QH ILW HQ V V N& ILW 9 % /L ODV HQ HILW V% HU QN HQH V % &ODV V9H % HQ HILW U V ILW HQ V/ % 9H HQ HIL /L HI LV U HI WV % HQH LWV /LV W% LW / QN & LQ HQ % OD N HI % HQH ILWV /L V W'H & V W& / I LW OD V9 SH LW/ % HQ LV V VV LQ Q W& ODV HU % % HQ HILW N G V HQ OD 9 DQW &OD 9H % HQ H ILW V HILW V VV U & V / % HQ H / V9 HU H ILWV / LVW ODV % H LQ 9 LV % ILW Q V N& HU H H % 9 HU W' H V / Q LV ILW H H HU OD % ILW V /LV W& H QH V Q % H V % V Q H W& OD SH ILW % H / 9 H H ILW % H Q HU OD VV QG /LQ LV QH V H ILW H Q % ' ILW D V W% ILW V Q H % H Q N& 9 V V H ILW Q H W H / % % H ILW V / ' H Q & OD LQ 9 HU Q S ILW H H OD H H LV HS H V / V % % H H Q Q ILW N& U Q / LV V V V I % % W' H H Q / H H V 9 G % ILW LWV Q LV W Q H % % H D I LQ ODV Q % % % H H H W& & H G H H 9 H ILW LWV V / Q H N U H V Q Q Q IL H H W OD S D H H LV Q Q U & 9 WV V / / IL OD V HQ Q H H W& & L IL Q Q / H H OD ILW W LV V W IL I OD V V I H H G / V H % W LV WV WV V LW V / LW D OD W I IL V U V ' H LV / / Q V V V LQ 9 9 WV LWV 9 LV H W W& & H Q / / / W V L N H U & V & OD OD S H LV V 9 W L L & H / / U U W H I V OD & V V OD 9 H W & W V Q LW V LV LV U OD W V H V G / V & & & OD OD W U W V V V L 9 D V OD OD OD & & Q V V 9 9 H Q N 9 9 V V V V V OD OD V V W U H H H V & & U H U V V 9 9 U U V V OD OD 9 9 9 H H U V V U H H H 9 9 V V U U U H H 9 9 U U H H U U = Component instances placed on Server. = Component instances placed on Server. U Figure 6. Corporate Benefits Distribution. Of 196 components in the client and middle tier, Coign places 135 of the components on the middle tier where the programmer placed 187. Figure 5. Octarine Distribution. Of 458 components in the application, Coign places two on the server. Most of the non-distributable interfaces in Octarine connect elements of the GUI. The programmer’s distribution is a result of two design decisions. First, the middle tier represents a conceptually clean separation of business logic from the other pieces of the application. Second, the front-end is written in Visual Basic, an extremely popular language for rapid development of GUI applications, while the business logic is written in C++. It would be awkward for the programmer to create the distribution easily created by Coign. The Corporate Benefits Sample demonstrates that Coign can improve the distribution of applications designed by experienced client-server programmers. In addition to direct program decomposition, Coign can also selectively enable per-interface caching (as appropriate) through COM’s semi-custom marshaling mechanism. Figure 6 contains the distribution for the MSDN Corporate Benefits Sample. As shipped, Benefits can be distributed as either a 2-tier or a 3-tier client-server application. The 2-tier implementation places the Visual Basic front-end and the business-logic components on the client and the database, accessed through ODBC [28], on the server. The 3-tier implementation places the front-end on the client, the business-logic on the middle tier, and the database on the server. Coign cannot analyze proprietary connections between the ODBC driver and the database server. We therefore focus our analysis on the distribution of components in the front end and middle tier of the 3-tier implementation. Coign analysis shows that application performance can be improved by moving some of the middle-tier components into the client. The distribution chosen by Coign is quite surprising. Of 196 components in the client and middle tier, Coign places 135 on the middle tier versus 187 chosen by the programmer. The new distribution reduces communication by 35%. The intuition behind the new distribution is that many of the middle-tier components cache results for 4.4. Changing Scenarios and Distributions The simple scenarios in the previous section demonstrate that Coign can automatically choose a partition and distribute an application. The Benefits example notwithstanding, one could argue that an experienced programmer with appropriate tools could partition the application at least as well manually. 9 Unfortunately, a programmer’s best-effort manual distribution is static; it cannot readily adapt to changes in network performance or user-driven usage patterns. In the realm of changing environments, Coign has a distinct advantage as it can repartition and distribute the application arbitrarily often. In the limit, Coign can create a new distributed version of the application for each execution. scenario, Coign places only a single component out of 476 on the server. The results are comparable to those of Octarine loading a document containing strictly text (Figure 5). However, if fewer than a dozen small tables are added to the 5-page text document, the optimal distribution changes radically. As can be seen in Figure 8, Coign places 281 out of 786 components on the server. The difference in distribution is due to the complex negotiations for page placement between the table components and the text components. Output from the page-placement negotiation to the rest of the application is minimal. In a traditional distributed system, the programmer would likely optimize the application for the most common usage pattern. At best, the programmer could embed a minimal number of distribution alternatives into the application. With Coign, the programmer need not favor one distribution over another. The application can be distributed with an inter-component communication model optimized for the most common scenarios. Over the installed lifetime of the application, Coign can periodically re-profile the application and adjust the distribution accordingly. Even without updating the inter-component communication model, Coign can adjust to changes in application infrastructure, such as the relative computation power of the client and server, or network latency and bandwidth. H F V Q H V V L WU H H \ LH LW X U W U \ H U U D V H S F U T Q H H D \ H LW H H R S S Q R U Q U V L D U H U J 6 R R U V H W W LR 3 L H X H Q H U D H F W 3 W \ S T LH L H\ W J 3 R U W U FV G L Q W U H L U H 'KU Q W V DV KV K L S Q D R U H H D V H S S 'R X U R U 6D H Q 3J6 LF SQ S SS S R DU U U R 0 V H DR HS H QP V RDR LR D H F UU R U L U ' U H W G W D, \ \ H H 3S HLI U 0 V QL U HR L XP 3 U JO U LW Q F W F H% O W P L SQ D V U U U 3 3J3JLLI JW 8 H D UH U HH HW DW U P \RRWRWH W\ LF RW S D 3VK RX R H Q H X W O [ U [ WRWH[ L L V * ' W UR 0 KSS J R \ [ \ DHD QH R 61&6,Q 6''\ S S \ IL WLI J U 3 V LW U SRU T H S U U D R S D H & H W U , 7 H OH P W RW H V UU V D U H 6 F 6 $ 3731 R W L SQSR D LI LH H 2 2 RR U 3JH LW V Q 3J 2 2 22 W 11,Q767 I J [P\ D U 2 2 RW JW DLW LW H ' R 22222 6 LHW U H U 0 R LW GD H WL U RR W H &6& 2222 D U 3 U 3 2 [ V QQ 2 7 Q U W S U V F 2 D H L S XD R HH W OH [ 222 11, U S R LI J [ \ H DH 22 73 R0 22 R ' 3 3 S\ \U R U LW H U U W HW 67 2 UU SH 22 7 D O PRR Q 2 V KS U UHH3 HJ 3 2 , W P R W Q 1 VK S D H 222 W &6 R L LI J [ R\ LW VDQS S R U UJ LIW LW H U U 22 W H 6 F H U 3 UD 2 R 7& L S DR H 2 S U R 1,Q JW D R 03 S O O \ ' 22 W D H D [ H U U U 3 1 U 2 U H W H O [ DH 3 + + 222 O W DQ H L J [ \W H737 HF R \U\U 22 LW ILWH W H76 L R UW \U D V Q 2 2 R V Q F U Q DDQQRH HX , 2 R Q R LW OL HL '1 TH ) 22 V LWLW F & UH 2 L F3 R H LW 6 2 L 'R 2 N U (FLF L W HS U W X H ' ' Q / ' W R L V V 2 2 O R0 2 R \ \D U RS\UH U HJXR H U L E H 2 VH WU H DQ 3 OL 2 DQ\ / W D7 H L PR LW S R ) O IL W R 6 L W VGQDD/ 2 H U 2 U F HS R L SRUXR0 \U EDR1& 3 2 S H K ' O \R R 2 W 7 U 3 U W P W 6 2 V SSDU HJ [HR 6 UH 3 2 H LI H & 2 SRU U J J VK LW W Q7 2 D D SRDU 3 R , 2 U J W [U D V QD 1 \U D SR 3 D H 3 2 QR 2 U 0 W [U D 7 2 LW 3 2 FL W H O \H73 ' UH [HW 6 2 2 UH UH 2 LI JH 7 UH G , 2 L I LW RW Q OR UH 2 L L WR 1 + H UH L ILWILW R 1 2 \U VL Y 1 2 G R1 QR HD 2 2 L $D G WD H RFW F L ' ' U H U GRFL Q 2 H LIL L Q 8 N L Q 2 RW R 8 U H UH P 1 2 R L LILW 0P U HN U ) H2 NL QR R 1 UH QRHF W, NL QR 0P LW F QDWU H 2 QR 0 N L Q W, HOLH H O HVQ R 0 ,W H H 6 OL ) H 0 H * OL ) UH LILYLW FR& ) a W R$ Z UHNL 2 HL 9 QR 01 H 2 O ED H OL ) KFWL Z WV L 6 SR 2 U G/ Q ZRQ P U R) H+ 2 NQ O RUWNF D% P 8 2 Q & 2 (U/R) H WL R 6 2 P H WL 6 2 O R U U R) 2 U LIWL QR & H ZHL Z W R 2 L \H 9 2 OO D 1 GU9 DGH * 2 QD WV / W 6 2 PR Q RULGN 2 R U O RU F DZ NQ) Q 8 2 W QR% P UR & ( ) 2 /2 H WL 6 P H WL 6 UR) 2 O R W 2 Q O RUW UU R& H 2 L IL W R QR & 1 2 (/ R LW F 2 2 H O HH DU ) 6 WP 2 [H 7 2 U H OS H + O R H Z WU LWH J R ZZ U Z U H UDLOH W GW GRW GR LHW R RZU Z ZRQO6 H OS U H U H WR) DLQLQDLQLQDLQLQ RWLI DLQLQGLQWLQGWLILHLQW GRQW GR&WUR 6LW Z H U + OS 6RF 3: 3 : 3:13:3D:1R3D LQDL LQ/(RQ UPLQW GRW GRILZHUW RZ ZO6LWLWH WURO QLNHGLQJ+H HOSH ' 222222 : 3: U O O R D LQ LQ WL 22222 2 G W GRUR6 RQH RLQURH &) 3 D LQ 2 0 W R LQ WUR O+ W 22 222 : 1 D LQLQLQQ P & LN O%Q LW Q R O 222 3: Q,' R 6H RWU H RO D R U 22 3: R O WUR R (R Q LW 2 J WU&R LW& 22 3 : / 0R HU R 6H WU RQ 6 2 22& U RQ( WUP ) Q O LW RQ & HOS 22 2P /RQU WWR&R6& 3 S H 2,WH + RX/(QWU O U URW LW 2 & 2 & 2 6H WURO ) R UPHILH LV WL RQ 2 FNG 22 % 2 RDEWL WURO LWRQ / 2 6 D Q OHF )/ R 2 & 1 RQUP&% 2 H 2 22 & R/( UP RZ NHU R NQ H6 2 ) 2 2 ) QRUP LYRQLW Z 2 8 FW R 2 GW 2 ) $0DLQ 2 LQLQ GRZ Z LOH 2 ) 3 :D LQLQWGR 2 3 W 2 2 :DLQLQ Z 2 3 :D GR 2 2 3 LQ WGRZ 2 :DLQ LQ HU 2 3 : RWLIL RZ 2 2 1 LQW LQG 2 3D : QW RZ 2 HU 2 3DLLQG WLIL W Z 2 : 1R GR 2 DLQ 2 3 LQ W RZ 2 :DLQ HU 2 3 LQG : WLIL 2 QWGRZ 2 1R 2 3DLLQQW U 2 :DL GRZ HOSH 2 3 LQ WURO+ LVW 2 : &RQ ZQ/ 2 /( NQR LVW 22 28Q LNHU WUL QJ/ 26 HQX 0RQ RQLNHU RJ,' 20 U LVW 23UURJ,'0 QLNH ZQ/ 23 0R NQR/LVW ,WHP 28Q LNHU WULQJ HU 26 HQX 0RQ RQLN 20URJ,' U 23 URJ,'0 LNH U 23 0RQ QLNH ,WHP 0R LNHUU ,WHP 0RQ U ,WHP 0RQLNH QLNH /LVW ,WHP 0R ZQ ,WHPQNQR/LVW 28WULQJ 26 2 0H Q X 2 3UR J, '0 R QL NH U 2 3UR J,' 0R Q LN H U , WH P 0R Q L NH U , WH P 0 RQ L NH U ,WH P 0R Q LN H U ,W HP 0R Q LN H U , WH P 0R Q LNH U ,W H P 0R Q L NH U , WH P 0R Q L NH U ,W H P 0R Q L NH U , WH P 0 R Q LN HU ,28Q WH P 0 R RZ Q LNQ HU/ LVW NQ 2 6 W UL Q J / LVW 2 0 HQ X 2 3UR J,' 0R Q LN H 2 3UR J,' 0R Q LN H ,W H P 0R Q LN H U ,W H P 0R Q LN H U ,W H P 0R Q LN H U ,WHP0 ,WHP0RQLN 28 RQLNHU 26QNQRZQ HU 20WUL QJ/ /LV W 23UHQX LVW 23URJ,' ,WHP RJ,' 0RQ ,WHP0RQ 0RQLNHU ,WHP0RQLL NHU LNHU NHU ,WHP0RQLNH ,WHP0RQ ,WHP0RQ LNHUU ,WHP0RQLNHU LNHU ,WHP 0RQLNHU ,WHP 0RQ L NHU ,WHP0RQLN HU ,WHP0RQ LNHU 0RQ 28 26 QNQRLNH U 20WUL QJ ZQ/ HQX /LVW LVW 2 H W, 0P 3 W , 2 Q R P H L N 0P ,WH3UURJ HW, U HH L QR W, ,WH P RJ ,' U N R 0 H P NL Q ,WHP 0 ,' 0 R 0 HW,, UH 0P N L QQ ,WHP0 RQLN0 RQ HW U HH P LN RQL HURQLN L QR 0RQ W ,, ,WH P0 U HN R 0 P H HU ,WH NH P RQ H W U NLN R 0 HU LNH 0P L QQ ,WHP0 R LN UU U HH P HW,, L R QLN ,WH P0RQ HU U N H W W, QR 0 0P ,WH P0R HU H U HNLN L QR 0P 0 QLLNH ,WHP0 HW, UUHHNL QR 0P RQ NH U W ,W, ,WH P0 RQ LNH QR 0P H ,WH P0 RQ H, LNH UU U HNLNL QR 0P ,WH P W PH UUHHNL QR W, ,WH P 0 RQL LNHUU R 0 H P N L Q ,WH P 0 RQ NHU R 0 2 U HH U3 L Q 2 P0 RQ LNH H W, U N , JR0P RQ LNH U ' W, 28 0R R 0PH QR 0 QLLNH U N L QQ HW,, 2 6W QNQR R 0P U HNL U HH 2 NLN ULQ ZNHUU H W W, UU H L QR 2 0HQX J H 3 Q 0P /LV / ,W 3UR R 0P 2 2 ,W H UR W LVW J P N L LQQR (/F2 2 ,W HP 6 ,' HP 0 J,' U HHN RU R1 2 0 0R ,W,WH U QR & P 0 E OOH LW UR)& 2 Q H I 2 , 0 R D L WH P 0 R Q LN ,W R RUW U U PQR ) 2 P0 Q LN H RQLN + O R& 6 UW P ,W HP URR & 2 0 RRQ LN H U QLN W L6 2 ,WHHP 0 H O R S OH UW Q UW Q 2 2 ,WH LN H U R 6 HHU (/D* HWL H P 0 RRQQLN 1 2 H U UHO WL O R& U H 0 R Q LN HU OO W R 5 L ) ,W,WH P0 U WL 6 H P QR \H O 2 ,W HP R QL LN H L IL D0 H ,W HP 0 RQQL NHHUU RUW D/U HJQ R W F$5 2 ,WHHP 0 N U + O XR\ 0 L QHY L OX 1 22 ,WH 0 RRQ LNH HU P0 2 OH W R HN R ) 2 S UH 2 8 VX U H6 P 0 RRQQLNLNH U UH R 2 LILW 2 2 O H FH 21 UH P U R& 2 6 0 R Q LN HU + 22 LN H U LW 2 0 WUQN R QLN UW Q(/R 1 QD QR 6 3 H 2 3 2 HHU U OG 2 U LQQ Q R LILWLW RR1 UH 228 U H W L6 1 2 O R &H LN 2 6 URRJQXJRZ LI ILW W RW 6 2 2 2 0 WUQ J ,' / H WL UW Q UU HH L IL R R1) 6 2 H N 22 2 L \U L W R & U R U UH )& WDHQLQQ ,' LVWQ/ 2 2 LI P U RD* 2 2 2 6 + O 0 QO D 22 D/U H W ) & RRQ QXJRZ0 2 ) LV W 2 H 6 O 8 \ U HQ UR R / UP G / O 2 2 S W Q ) WL O R Q Q R ( WUR 2 XR H 22 RUP \DG P 69 Q &6 DUG LVW /RQ LN QN R/2 2 UH W 2 )&1 ) 2 2 L GU ZR R O WU U & 2 H 2 2 2 HWLZ R RLW 6 0 LVLNHHU P(URR 12 6 22 22 )8)R/RR 9 QW W U H LW PQ WR/U)7 22 L UPWULILH & Q H LWO6QWUR H H % / 22 &1 RQ U ( L DH 51 Z 2 2 HLW DR R L R N P R U UW H 2 Q LI ( [ DR 1 W, W, , 2) P &6O WV R R UP 7 H )2 X H O F QL 6 W W, , HH O U &H6 W JQ 22L )8) / U QWLI Q % + N UW H W6 LW R HU3PP 22 6 R W, W, W, , WH GR PW LH RZDR LI ILW [R 0 PHH OH$ RQR 22 QLWH LW H Q H HH HH W W, , UR WL L W JR 00 P F U NU ( 0 OS RU O H O 6U H HH W W, , 222 )&127 0 PPPP 2 UW FH ,Q R W PQP&6O U QFNWUR H S + U H. ' HHH W W, W, , , H 000 PP R H 222 )2 R / G H R% RLW 6 RR/ R RLY P W W W, , , , , U 0 L PP H 22)2 0 & O R \ N R )8 /R HH O QQRQ O LW W HH H WH W W W W, , , , , ZD Q H LW + U QWL (O QH 2 2222 RRRR 000 E0 H 2 2 LV UR+ R S W W , , , 2, , , , , 22 2 2 22 2 LNN 00 PPPPP LO )&$ RQR H L L QQQ H Q RRU U (PW ILH&E LN QF U RR Q UH PPHHHH HWHWHWHWH WH WHWHWHWH WH W 1 &2H$ RS 'UP W S H HH O NN DQ D 6 N P UR L L QQQ L N S RR R 000000 PPPPPP /N R PPPP 3PPPP 261)&)&2*1 55 ) / 0F R UW UN &6 U U H H NN &OS L L L QQ L 0 U U UHHH G O R H G P W U QS , Q 0000 DXRRR N N L L Q RRRR 'U O R% LW O R LV UR O U 000000 U U HHH U H U 0000 /FRRR RR/DR QO WLI U Q(RLY PWU OLF + N N LN + H QQQQ RRR R RH HH ZDR H6 Q W U U W 0 P H U R W H Q Q R R R R Q U U SH H U Q(O D Q RD QU LN JU LH WU &L RW P P O L I N LN LN L L LQQQQQQ RRRRR RJRRRR R(U L U U UH Q Q F W LWH UR F FW WU R N 66O W &OS I W HL LL L L QQQQQQ, H HHH G N UR 6 R U \H O N LR H N N NN NNN L 'QQQQ Q&OOELH WU / H L 6L R& O LN U LW O R RH H + U G U U U U UH HHHHHH N LN L LN L L O 6R 6O Q Q HWH R 0 LN LN LN L R/ L U LV URO+ U UU U N N QU N RDU L O H6W U OH LWHQ HHH N L H UU HHH0 W LW U WU HQU W W S R U U U U U U HHHH H6H6QD OS : H HR F R X RU U U U W \ U W & L U L O W W O &S W O U H LQ + LR V Q RR H HRR U H L O RH O Q G N X H Q + QU +W W H R + OS WU H Z U HU D R R H O Q O SO S U O G H H O U H U U W H6 HJQD 5 2 U H L ILW R 1 2 U H L ILW R 1 2 DRE\ H. W [ H7 2 QR 0 ' , JR U 3 2 U HN L QR 0 H OL ) FH O H6 HY LW F $ 2 U HN L QR 0P H W, U HN L QR 0P H W, U H NL QR 0P H W, U HN L QR 0 P H W, U HN L QR 0P H W, U HN L QR 0P H W, U HN L QR 0P H W, U N LL Q P H WW, , UH H N QR R0 0P H U H N L QR 0P H W, U H N L QR 0P H W, U LL Q 0P H WW,, UH HN N QR R0 P H U HN L QR 0P H W, = Component instances placed on Server. Figure 7. Octarine with Multi-page Table. With a document containing a five-page table, Coign locates only a single component on the server. 4.5. Performance of Chosen Distributions Table 4 lists the communication time for each of the application scenarios. The default distribution is the distribution of the application as configured by the developer without Coign. For both the default and Coign-chosen distributions, data files are placed on the server. As can be seen, Coign never chooses a worse distribution than the default. In the best case, Coign reduces communication time by 99%. The Corporate Benefits Application has significant room for improvement as suggested by the change in its distribution in Section 4.3. The results suggest that Coign is better at optimizing existing distributed applications than creating new distributed applications from desktop applications. The distribution of desktop COM-based applications is limited by the extensive use of non-remotable interfaces. For PhotoDraw in particular, Coign is severely constrained by the large number of non-remotable interfaces. It is important to note that the distributions available in Octarine and PhotoDraw are not limited by the granularity of their components, but by their interfaces. We believe that as the development of component-based applications matures, developers V H VV H F H L H V L W Q VH L W U V V W U HF U VV \ WLH \H HU H H H WLU Q H HU U WLH WL F S X U\ H WL \ U LH U U S S D RU T D VH WU U Q U HH \ D S F HU\ H U S X D RQ U H Q H H R LH SD S V V HH U UR3 H W Q QU R R D RUT QUH X L L J U \ H VV HU SS OG 6W W U H R 3W R Q UH T URQURU LH 3 V U W LWU \ HH U U R X WLRJ 3 R LH FVGD FH W LR H R U 6 LW J WW H H U S T D L 3 H HU D U \+ U\ UW UWLH WLH V W L H\ KVK L SQQ H F LFVD J J 3W 3 H H L XX6 DH LVQV K VK 'UQ S \ RUH Q W G F J 33 OG HH \ U FVGD D H UH S S D SQ S U RR S S SRS ' KD H VK LFV Q Q U H6 LR S SS LS RXDUV U HH QLW HH VK Q U SS U S R R SQ ' DR U QQ R DU UU U' RD RD DUU DUUU U DU R \\ LWH U J WFV D LNUG R 6 U R3 SS ' H R ' U R0 XDV UUUU0 G LR H URUR DR UU0 U QLV H + R SS XD H H3 H Q PV Q HU 3LW GD DDV H U\ R Q H LS Q UUUR U UUD YH W J H L 3 J S UU TX D H L H 3 3 J ILJW HLISU RDUDUUUUR0 R HH3 L LHH 3 \ R D , S R J3 R/ 3 RQ H WL LH U JHL XP HHD R H3 FV Q ILHRR LRG J 3J OH UU U HH3 LFVD LL JW HW DW U /R LNUG V ' S0 S\H J WOHWD DW LH[P O WPHO WFH% V V3WL 3 WL DVKVK L S U QD R WLI WLIWLIWLIH WL LFLFW $ JW W H S JLH ILH SQ WD \HLH JW U S QLH GQL R W 8 0 SK KLFVGD H XVRU UU3 0 ULIWLIW H[O\[ U[D 3 H [\ [U [ J3 ' W RW \R W \L F SS R OP LFDRR ILILL JW P RQQ UWLH RW + LFVQSSSS U' OH OWLI U\OH XX6 RRWH RVS S RI RRRY UU UUUURD S WD P O SQQR LHH 0 W H WH [ QW ' * P R O \ SDRDR DU UUR RR RWHW HDH R \ [R D P DHDRW H QH& 1 URURD ' OW[U [UWWRWHH S\ RW\WRE LHLH 8 'W11 E WLLFLFWLG ILH & , \S 1 U S I J R R W W 8 LHH 1 1 Q R , 6 6 ' R D\\LWH ' U 3 L U U U H , 7 6 7 Q 6 Q 3 7 3 1 7 6 R \H H UUUURX UW H 0 R 30UD DRW D D 373 3 L LH H HDR Q7& QQLF$WLWLIWLIWLI J 1,7 [\ DV D 61 7 6 1 UU U0 UW\\ R D J OP J3 J ,7 W W3 16 $ WH WJLI ILWJW[P , 6 LHH & 3 H WHD7 1 WD 31 P 1 & 6 6 3 UU UD+ H3 QH S0 \RR D U 7 WRWQ 8' [ OH 7 & 2 2 2 2 2 2 2 , 2 2 2 2 ' 2 W H D /UR U Q WD RRRRWH / 2 2 2 2 2 2 2 2 2 2 2 2 2 2 U U 76 2 2 2 2 2 2 2 2 2 2 L H [UWLI JW D W H W RW 1 H 8 73 OW U H\[UD DQQV [ RR H 6 & 6, 2 2 2 2 U H H ILJW \[D HR 2 2 L LR 2 2 2 Q D1 & 2 2 2 HG WH ,7 N Q 2 H N W HH R W[ OLVU WF LWH 2 22 UGL Q& H LWWR R R 73 2 1 2 2 NUL Q U UH HH 3 7 6 H R RL( Q 2 22 LR H NUGLGQ HL 1 2 L) , 7 2 I F F 2 LF 22 L HRRR LF LH F3' / LNUH LLQ ILRLWF ' 2 22 L U HHG 2 2 ' ' 02 R W0 RQ8 QLQILFF 2 2 L 0 U HN UG 2 2 O 2 RP ' H RRRILWRWLQ 8H HUL 1 U 2 2 RQP L)2 Q LILFF 0 HN L 0 U HH L H H 81 8 W, 2 2 1 LIR WLR Q R1 2 H N GR Q LU G H W,2 PP RLW 0Q 8 HN L UH Q H 2 U UH H 8 W H LILRF W2 F 2 1 RP GQLIR LL Q UG H HUN , RLW W0 2 ,2 1 Q0 U H HN F P LIRR L LH W, 2 2 H 8 U H HG L0 LQ 8 RR H LWF 1 LQ Q P ILR W,2 H N LU GR R 2 1 P 2 H RQ H 0 8 FRWR Q LR HN L UH W,2 8 HH 01 ILWFLL Q W,2 1 H P G Q L U G I NL R 2 P RRLW 0 2 H 8 RQ8 UH H Q LILF F0 H W,W2 ,2 RP 1 RWL LQ LU H 2 2 QP U HN 1 H H GR QLR R8 8 U HN ,2 ILW 0 H W2 LU G 1 H H R P H , W2 OL Q HNLU H LRFFL Q 0 U H 1 2 ) Q 8 GR LILRILWLR QR W,2 H P U HN 01 G 8 H P F W0 W,2 HNUL UQ H R R P 2 2 U H LR U L Q ILFLLQ QP 1 W,2 H LIR H )H G QR H 8 U HN RF R R8 H L W0 UG W2 R LW F ,2 HNUL QH L W0 R P 1 Z 2 LILF H F QDUUUH H Q P 1 H LIR H WLR W,2 L 9 H LL Q Q WV O H HN O R 8 NLN QR 8 L 0 H W,2 UW Q 1 R W0 RP 2 2 6 H ,L QR Q OE UHU UH R& 0 1 H R 0 P HWQ W, 2 H S DNL H SW V OH LILY LH* H OOLH 0 W) L / K ,2 WW F RH + R FWQ O& OUR GNFQ LL) ) LR R $ UW QDZ 0 1 a UW Z 2 RQ P H WL R% UR H WL H UQ O L 6 2 R& ZH H N 6 P ( Q8 ) O 6 & UR H S 2 ) 9 W LL Z O HSR LG9 P R U 2 /2 UR ) 2 UDU\H / UH + OUV LIWLWQ Q GN R ) 2 R& GH OO D 2 S O H Q UW F R 2 D% Z 1 RQ P W6 2 * 2 WQ + WL H UD LR O RH R 2 P ( 2 6 & UNR Q 6 ) O R D + QR 2 2 LW FUW QR U/ ) 8 UW P UH 2 WH R) & U H 2 H LI( 2 G 2 LWQR OHH U N R& QR L DR 6 2 6 H / 1 WP U) LW FQ RE\ UUH 2 [D 2 LIJ 2 H7 H 0 H. LH D O UHH LWLWQR 2 2 5 ,WIJ R1 1 UU H L' 6 N [H 2 2 QR R HN N H 7 U3 HN UUH Q LL Q 2 2 LW 0 RY N R H 2 F$ UU H LL Q OL ) QR 0 HN 0 NLL Q R 0 2 P P H R QR 0P H WW,, P H 0 H WW,, U HN P H L QR 0P UH HN H WW, U QR 0P LL Q H W,, UH HN 0 R N L U P 0 Q H U HN R 0P N H WW , QR R LL Q P H H 0P W,, UUH Q R 0 H NLNLQ P U H WW,, H 0P R N QR H HN N 0 R 0 LL Q P UU H H WW, U HN NLL Q P H 0P QR W ,, U H H 0 L QR P U R 0 H WW,, H 0 N P UH QR H N R 0 LL Q P H WW,, H N UU H P H 0P QR N R0 LL Q H WW,, H P UUH NL Q H 0P R 0 U H N H WW,, QR R N LL Q UH P U H W 0 P 0P HN QR R 0 H NLL Q H WW ,,, N UU H P 0P R H N H QR R 0 LL ' 0 H WW ,, Q N P , JR H H 0 UU H P H U 3 Q WW,, N R 0 LL Q Q U H R N U P HN R H WW,2 0P LL Q U W H H , R0 P H 0P N L Q R & &R H UQD WW,, P (0 / E OLO R H , 2 HW2 W LU6 UR F6 H ILP WU 2 1 R) 2 2 U H 6 W LOO R 6 U Q UR R& ) 2 2 6 R UWW P Q R & 2 Q/ R H (D /* 2 2 2 \D & \ OO H LJ ILW 1 RU0 U QR D 5 L 2 2 LH QLR 0 H O ) HH 6 N H F $ UY H OW R X 5 2 2 H W 1 W6 LOU6 LUIWL P UR R& ) 2 2 LH R Q 2 W Q R & U H LLIILL( W/ R2 1 2 2 U 1 UH H LLIILLW W R R 2 2 R1 1 2 R\ DU / H \ UWRW 6 2 H LILP WR 2 H WLOU6 U R1 ) 2 H WLH 6 R WOOU QR & Z D \ H D * 2 2 9 LG U9 G QD W 6 2 P UR ) / NF QD Z R N Q 2 2 % Q P U/ R8 ) G R U WQ & 2 2 2 WR LO 6 UW( P UR R ) H WL H 6 R Q & 2 2 LIL( W R2 1 R UW Q U RH & / 2 2 H P D U ) 2 R LWWFH H O6 H 6 J WQ [D H7 H 5 2 2 2 JH UD WR 6 V U LHLHV U\ H D HUW UW OG Q S H R RHU S U\ D1 2 2 2 2 Q WHD \+ OH HDRWH[P S 2 2 V 1 1 2 2 2 U\OH URR D WL J LNU H ILH 1 ,76 ,W2 HDUH 2 HR EWLP 2 2 WLH 3 U Q LFVD G W\ Q 7 ' 2 Q& 3 7 GQLV U\OH 2 2 VV 3 LH R WR 2 2 UUU 'SQ DR R E RR 1 H ,7 2 K 3WLR 6 2 SHU UUURDS WLI 2 2 2 D0 WR LF R 2 LF QF SSK V 7 LH LH GIY 6 2 1 2 R UR ILHH & 2 2 QQLFWL H U 2 7 6 S URUS'LF UD P $WLWLI 3 UR J 2 WLWLILH H 2 2 1 R TX J W 3 J3UD W W0 2 2 8 RR G3 WDR 2 8 ,WH ' RWH XXW H [OH QQDR [UDW IJ LHHUU 2 2 D1 2 1 H W\ QH 2 1 [UD \R 6 D ' WL JW3 RXD 1 H 2 ,7 2 2 DD\LWH HU [ S0 DRWH 7 6 V 2 / 2 3 OG U\ /U V HU 2 7 H V 2 3 U\ LH OH 2 QHRP 1 OH ,7 LN SR LI 2 2 \ R QD HUWLW LH WP UH WR &W\ 2 2 H U\ H+ OH DE R 2 S HU DU WLR RQ 6 2 LH RG R 6 2 LV RG Q WR 7 UU LF JHU DE 1 2 UR S 0 2 LF RWLI & U 'SV GY LH LF 6 2 2 V33UR WLR 7 LH QD 1QQ 2 $ 2 HP K LHHU WLI LF 2 URDS V HU WLI 8 LI D R 8 ,W2 W LIL SSV R UR J3 U\ LH ' 2 R 0 DW UD 1 2 3 URSK RW WH J3 [WOH 1 QD HUW 2 ' WD 1 2 JUD URS FH 1 ,QH 2 FWLR W 7 W\[U[ 2 3HU HQ D W 7H D 'L 6 2 2 SV H QG HUUUR DU DJ 2 RXXW TX 3 2 JH DQ 7 2 3 RWLIL W3 SRX D\\R6H 0 2 2 / 1 /D LWH OH 2 U\ RP ,QWH 7H[ 2 OH LHU V U 2 U WR & 6W\ 2 6 WLI SR LNH DE 2 GH R RP 2 U 7 1 2 RO RU\ & H RQ GH 2 EOH U\ 2 DU\+ 2 6W V W LILH RGLVH FR 7D QD P0 R 2 WLH V U QL W LRQ 2 1 ,WH 8 8QLF LF GY ILHUUUU 'LFWLR WLH JH RSHU 2 D$ 2 SV 2 RWL ' HU W LILH QD U D LILH R DW ILH 2 SV 1 3U S 3UR ' JH RW 1 URSKV3UR 0 2 1 WH 1RWL [WW3 2 H\OH UDRS 2 SK ,Q 2 7 2 DJ 6W 3U H[ 7 2 DU 2 V [W JUD 3 2 WLRQDU\HUWLH 7H UD 23D LILHUU'LF SV 3URS 2 HU 1RW 2 WHJH H W 3UR 2 RXQG DQDJ XW W 7H[ 2,Q RPS TXHQF /D\R 2 \OH0 /D\RX 2& H 6H WRU\ 26W 6 LILHU SRVLW 2 7DEOH 1RW 2 2 RP U RU\ 2& 6WD EOH QLNH 2 0R LILHU 27 FRGH ,WHP 21RW QL GH QDU\ 28 QLFR H+ROGHU LFWLRYL 2 8 'D$G HUV U\ 2 DW RWLIL LHU U ' W LRQD WWLILH LI LHU 21 1R R 'LF JHU HUW LHVV 2 21 1RWLI ,QW HJHU 3URSV DQD 2 SV 3URS 2 \OH0 SHUWLH W [W DSK 27H 3UR 26 U\ 7H[W UDJU URSV3UR V 2 LRQD UDSK 23D LFW H [W3 HUWLH DUDJ 27 U' 23 RHJH W LILHU URSV 3URS 21 ,QWRPSR [W 3 XQG 2 27H 2 & 26W\ O H0D QD JHU 26WRU\ // D\ RX WW 27D E D\ RX 21 R WLIOH LH UV 2 & RP SR LWH 6H TXH Q FH 2 6WR U\ 27DE OH LNHU , WH P0RQ 21 R ILH U 28 QWL LFRG 28QL FR GH H U\ 2' L FWLR ' D WD $G YQD LVH +RO GH U 21RWLI LH LH U U 21RWLI 2 R 21 1 RWLI WLILLHU HU 2 ,QW HJHU' LF W LR QD U\ 27H[ W 3U RS V 26W\ OH 0DQ D JH U 27H [ W 3U R SV 3UR S HUW LH V 23D UD UD 27H [ WJ 3U RSK SV 23D U D J UDS K 3UR SH UW LHV 21R WLI LH U 2,Q WH J H U ' LFWL RQD U\ 27H[ W 3U RS V 2&RP G3U 26W\ OHSRX 0DQ QD JHR U S HUWL H V 26WR / D\ R XXW W 27DEU\ O H/ D \R 21RW LI LHU 2&RP 26WR U\SRVLWH 6H TXH Q FH ,W 2 7DE OH HP0 21 28 RQLNH 28R QWLL LILHU FRGH Q 2' RGH U F 'DWD LFWLRQ 21 $GY DU\ 21 R LVH LILHU 21 R WW LILHU +ROGHU 21 RWLIL 2,QRWLILH U 27 HU W HJH U 'LF 26W 27H [W3U \OH 23D 0RSV H DQDW LRQD [W3U 27H UDJU 2 RSV JHU U\ [ DSK 2 3 1DUDJ URSV RWLIW 3 3URS 2 UDSK ,7H QWHJLHU 2 HUWLH 2& HU' 3URSHUW [W3 V 26 RPS 26 LFWLRQ URSV WWRU\ LHV \OH0 RXQ 27D DQD G3U DU\ 21R EOH/ 2&RP JHU RSHU WLILH/D\R 26W W LHV U D\RXW SRV 27D XW ,2 WHPRU\ LWH6 EOH 0RQ HTXH 1Q 2 R 8 W LI LNHU 28 QFH LHU L FRGH QLFR 2'LF 'DWD GH W LRQD 2 $GYL 1 2 1RWL 2 2 U\ LILWWR 21 VH+ 1 U H R 2 ROGH H7 2 1RW H LIWL [ 2 . H W ,, U U3 P 1R RWLILIILH \UH' U JR 0 2 ,Q E , H W , 2 LH D R Q R P H W U QR N L QR 0 W LILH 0 26 LHUU 7HWH 0P H WW,, G P H 2 NN L QR NL UUH 0 H W\[WJH 7H[ R P 2 H U'L H WW,, U UH NLLL Q R0 OH 2 3UR H QR 0P H 3D U P 2 7HUD W 3U HN H WW,, 21 0D 3 U N LL Q R0 P H QR 0 P DU SVFWLR UU H 0 2 J HN QD RS H WW,, 2,Q UD RW[W N LLQ 3 DJ P H QR QD 0 P 7 WHJ UUH R 0 H N J URS , 2 V & SK LILH H WW , 26H[ UDSK HU U\ LL Q H QR R 0 P RP HU U 0P HN N U' V 3U WW,, 26 W3 UH H W\ LN P 2 QR H LQ 2 7DE OHSRX WRU RS UU H R 0 1 HN H WW,, URS P LF3 NLL Q 0P 26 \/ & 0 R0 H 2 RWLIOH WLRURS HUWLH UUH QR H W W,, V3 R NL Q P DQG HN 0P , WHP 7D D\ QD PLHU QD HUW UH R 0 P H 2 /D WRU\ N LL Q QR H WW,, HN 0 H 2 RXJ URSU\ LHVV UU H 0 EOHSRV \RX P 1 R 0P 2 0 NLLLQ QR H WW,W,, 2 8RW UU H P H R LW H WWHU HUW 0 P ' QLFR RQ R 0 P H HN NL Q 8 LILH Q UH 2 'LFW DWD QL 6 H WW,, Q R LHV HN 2 R0 UU 0P P H Q GH 1 F ULNHU HT N LLN WW,, 2 RG $G UH HN P H QR LRQ 1R 0 LN 2 RR0 RWL XH H 21 YLVH UU H 0P WW,, DU LNLQ H 1R H 2 ILH RWWLILH QF ,Q UUHH 2 2 L Q QR 0P \ LI LHU P W LILH HN 7 WH HH UU + H 26 R 0 WW,W,, 2 ROG H J U 2 U3 H P 7W\ P HW,, LL Q N 27 3 Q,RJR0 HU 0 2 W H 0P H W2 2 H[[ P H UUH 3H HN D OH P R 2 1 3U' NL' QR R 0 2 2 2 2 , [UDJ W 0 0 2 LNLQQ DU UR R 0 R N QR 6 7 ) / HH F 1 & R 2 W3 3 26 L QUUUH DSLF 2 2 LNL Q HWH RR Q O ( N WLIDJ UR N 2 2 RU U 2 & UD & 6W\ R VW LR QD 2 2 OH ) 7 JH UR [W3 LHUD UH UUH & 2 LILWP P H SSV DUE 2 1 R QR 2 2 2 WROH UR R U SS & D W Q K3JHQD ' UH * 6 / U RUW& U' 2 1 7 R WLO6 R EU\SR V 2 DR ( UR RUP W Q O R 5 RF R WLI 6 + 0 U\ K 2 2 5 WR 6 O O OH U 23 DEP D 1 H WL OR & XQ 2 2 2 ILWQ LF 3 UR SV WL LH UW Q H U\ LH/ LJ /D OH D 2 ) : )LOH R O WXR U\H S L 2 H WUW 6 Q G WLRUR SH 2 & 3 D/ H U D\QD OHSRV 2 2 2 UQR UH O O ) 2 2 : R 0 HUH R H LIWLP 3 DD \RXJH 3 QDSH UWL 2 $ /0 LQLQ R\ OX : ) 2 R + 2 1 U& XR LUO6 LW HRX R 2 2 Q( DLLQLQWGWR & 3 2 LP W UFR W UR 2 2 $ : R Y H W6 S O H W HV U SU\ UWLHHV 2 2 L LQ R G R H Q W 3 N 0 Q D S 6 H H6 21 2 WLIGW R Z 6 UWO S + HU : LQ HWLUW UQ U 2 HT V 2 2 2 ')8 F L R Z WL 2 D LQ O R LH H WL6 QD O R H O H 3 2 2 2 2 ,P URQR) + HV 3 : 2 LQ GW LW D OG XHQ : DRLQ WQ L R RZUZ 2 2 2 & U /R) LW F H UH 2 QN O HQR 2 WLI GW P S & LQ 2 2 2 DLQ OL ) UQRR1 : 2 2 R 2 P Z ( UH FH ) H ) / 7 R LQG L % /LQ : 2 2 2 W LH 3 3RR 2 2 $ R GQ : 2 6 RR0 QDR& UWLILW( 2 8 FR 22 2 Q(GR ) DUP 2 W R UZ F ZR 3 1 2 & E Q OQR /N : 2 DLQ U QR WLO U H &ZZ 2 2 2 LQ WUR ) H Y LWP 3 & / LG : 2 1 U RR RLQLQGW 6 & 2 ,WH D L HRQN RUW WL 6QR UD U ) 2 2 2 ( P N UQ WV 8 RR) 2 2 WLI GW R ORQ ) DLQLQ P O H 22 2 2 2 & UW ' + SR 3 2 UNQR U H6Z% 2 RRLQLQG R ZLW6W P/ ULWIL WP & / ) 2 WLH H 2 2 2 U( R6 D OR O H FRH & QGW R 2 U0UP Z HLWUR RH QP N 2 1) 2 2 2 2 & URR& + S O NQ ) WL6 / R U & 2 R ( WU P R O U Z HO WQ H 2 & 2 2 2 % & UF H LW FV H QR 2 22 2 R % L G QJ,R& 2 /R ) & ) 6 RZZ UW QW R R R/ 6 2 R 6 S O R WR 2 / R + DR WL Q U UW U 2 2 2 1 L UQ R QR O O H Q R R 6 2 W0 / XU Q( WUR ' 2 8 ,, ) LW UQ & WL O R H /FW Q S+ 3 2 W2 W ( LI UP D RR LN Q H 6 UH O 3 )28 WQU P D H ,W,, , 2 ) WWR WU& O0 U LH6 L GN O H P 6 2 2 WH R& QH OS & 8 2 WH UH0 H LU RRR Q( U 6 HWHLWH W ,, , LO $ WH ) / EUP W WV UO RH 2 2 NR H UWG Q R R Q R RS WQP 2 3 P %R LO R6 WU& UUR H 2 2 3 WH WW W,, ,, H FR P P QR Q6 QWLIH UP W6 + SR Q 2 : H P P JQ R DXJ,QJ UH 2 LUN0 : U( H U Q 2 3 Q WH WW W, ,, 2 0WUP HH & Q LQQ O RR O H 2 2 D H 0 : PP R WULHO6 OU / ,X ' WL6 LWO6 & UW 2 3 Q 0 0 0 ' R 2 2 2 H & 0 WLUW H WH W 2 J P 3 DLQ LYNP GLN + : H 6 HL WU O Q RHS 2 2 2 2 DLQ P : 00P RQRRR 1 H H 0 P L Z RU&LW GV O 3 Z LQLQR HQ / 0 H H WL0 R QU R , , , 2 2 2 R R P LQ P % 6 WH W , 2 Q R : D Q 0 P P 0 R H R O R 3 2 LL Q R 6 HLWWUQ O WH WW W, , ,, , , Q QR 3 : 0 HH 3 DLQLQ LQGWGW Q 6 2 2 R 0 31 JU OS 0 2 2 2 O H W/ 0 LQHN RUW WW WW, W,, , 2 3 WH WH + 8 QH Q H LQ W R R LN ZDLW LL Q HHH R V NLNNN 0 DRLQLQ ,W2 PP 3 1 UUHW 6 L Q RRR :R 0 0 RW 2 : U DLQ H O 2 2 2 2 2 3 HHHH : W W W, 2 L Q R P RR Q W/ H + 2 2 2 H XQ V H R UQ P D LQ P HH 2 2 ,,W,W,W,W 2 P 6 H NLN Q H LQLQWILGWGWG U QQ HQFWULW WU OU+ 2 2 2 3 W,W,,WW, ,W, ,W W,, , , 2 P HH P DQ P L UU U ZZ H RRRJJ R H ,, P 8: O 0 Q 0 DRLQ WHLN LN0 L LQWL G N QR 2 2 2 ,,W W,W, ,W 2 2 2 2 2 , ,, , ,, WH P H N S L H 0 U UH P P 0 LLNLLQ U OH/NRH R HH W,, W WHHHWH 30 W 2 0 6 P 00 H HH HHH V P DLQ 0 RRR Q QQ O W W W 3 3 ,X I WG P ,' W LH LL Q O 8 0 U H 3 W Q/ LQ WLI LQG NNN GO HW HW H HW HW H HHW HH RR H WH WH HH HH 3680 P P P P P P UH 0 H OS UUH W JQR LLNQ H PP P 0 0 W LH L LQ R R UZZZ L ' HH 6 P 33 UU W 8 P GW R 0 U 0 RRR FLVUR+ N 33 0 P P QQ P P P 3 UU H WUQU RQ 0 OS H N HN 0 6 8 P P P P P N( QGWLH RRU 30 6 8 P P P P P 0 0 LQ Z UUUUH P P P P P RR 0 / HUQ0 R WLRW H HH RRR Q0 UZZ 0 0 0 0 UUH 00 LLNLQQQ Q UU W Q000 N JJQ Q G WR R R RQLQ 0 RR LN U 0 QQ LN 0 RRRJJ H U UUH SOS HW U U UHWQ0 QQ 0 0 0 0 0 LQ N 0 0 0 0 RU R L NLNN & R ZUZZ QQQ JR UR 0 0 0 0 0 L N RRR R RHUN 00R JX QR U Q & RU ,,X RR HH Q R V HH , , XJQ Z RJ RR R QQ' N QQ QR H LNLNN UU LLNLLQ QL JJ JQLQ ,'JRL''/ LN R QQ W/ RRRR Q Z QRRR RQ QQ,' Q QRRQ RR RJ RRJ J QQ QQ UU UH R QRRR RRR NNN LLN '/ RQ HHHH Z U U RH ,' ,XJ LLNL L QQ QQ,' N0 L L J 0L Q LN Q ,'X 0 Z QQ QQ,' ,XJ N QQQ QQQQ RQ 0 N H HH Q RQQQ ' LNLNLNLNLN0 / H UUUUUH NN LNL L LLQ VW Z HH WV L H / Z LNLNN LN UUUH V L NNNNLNLN0 L LN '/ HHH H HH0LVQU R W/ WU L L / HH UR Z NL NL N NL NL N NL NL NL N 0 L QH URR WQ UU U R 0 HHH HHH0 LQH R V HH HH0 0LQHHH HHH HHHH UUUUU R QQ / UUU RW / Q V LO UU UUUUUR WV O W / Q Q LV Q L LN R /UU UUUR R V L V L LN W+ UUUUU UUUUURR N L LN Q Q L Q Q W/ L QQ W N V HH W N HH H V LL L W N H LN L UU H L L N W N UU OS N V N H W UU H H H H H UU H U UU U U = Component instances placed on Server. Figure 8. Octarine with Tables and Text. With a five-page document containing fewer than a dozen embedded tables, Coign places 281 of 786 application components on the server. The merits of a distribution customized to a particular usage pattern are not merely theoretical. Figure 7 plots the optimized distribution for Octarine loading a document containing a single, 5-page table. For this 10 will learn to create interfaces with better distribution properties, thus strengthening the benefits of Coign. pioneered the use of compiler-generated stubs for inter-process communication. ICOPS was the first system to use scenario-based profiling to gather statistics for distributed partitioning; the first system to support multiple distributions per application based on hostprocessor load; and the first system to use a minimumcut algorithm [11] to choose distributions. ICOPS distributed HUGS, a co-developed, two-dimensional drafting program. HUGS consisted of seven modules. Three of these—consisting of 20 procedures in all— could be located on either the client or the server. Comm. Time (secs.) Scenario o_newdoc o_newmus o_newtbl o_oldtb0 o_oldtb3 o_oldwp0 o_oldwp3 o_oldwp7 o_oldbth o_offtb3 o_offwp7 o_bigone p_newdoc p_newmsr p_oldcur p_oldmsr p_offcur p_offmsr p_bigone b_vueone b_addone b_delone b_bigone Default 0.152 0.149 0.006 1.058 15.064 0.143 0.696 21.089 1.734 15.079 20.878 27.497 4.726 17.016 2.384 14.517 1.583 14.650 33.032 1.465 2.322 3.414 1.754 Coign 0.152 0.149 0.006 1.048 0.042 0.143 0.696 1.099 0.562 0.037 1.090 22.630 4.496 15.014 1.613 11.482 0.722 11.497 27.084 0.954 1.601 2.834 1.414 Savings 0% 0% 0% 1% 99% 0% 0% 95% 68% 99% 95% 18% 5% 12% 32% 21% 54% 22% 18% 35% 31% 17% 19% Scenario o_newdoc o_newmus o_newtbl o_oldtb0 o_oldtb3 o_oldwp0 o_oldwp3 o_oldwp7 o_oldbth o_offtb3 o_offwp7 o_bigone p_newdoc p_newmsr p_oldcur p_oldmsr p_offcur p_offmsr p_bigone b_vueone b_addone b_delone b_bigone Table 4. Reduction in Communication Time. Communication time for the default distribution of the application (as shipped by the developer) and for the Coignchosen distribution. 4.6. Accuracy of Prediction Models Execution Time (sec.) Predicted Measured 10.7 10.9 9.3 19.0 231.1 5.5 7.2 33.4 33.6 232.7 67.2 416.1 14.3 76.8 18.8 49.0 18.1 53.8 139.6 9.4 14.6 8.9 5.6 10.7 10.9 9.3 19.1 231.1 5.7 7.3 33.6 33.6 232.7 65.6 429.7 14.3 72.9 18.8 49.5 18.1 54.2 136.3 8.9 13.9 8.4 5.2 Error 0% 0% 0% 0% 0% -3% -2% -1% 0% 0% 2% -3% 0% 5% 0% -1% 0% -1% 2% 6% 5% 7% 8% Table 5. Accuracy of Prediction Models. Predicted application execution time and measured application execution time for Coign distributions. To verify the accuracy of Coign’s model of application communication time and execution time, we compare the predicted execution time for each scenario with the measured execution time (Table 5). In each case, the application is optimized for the chosen scenario before execution. Many of the scenarios had no significant difference between predicted and actual execution time; only seven had an error of 5% or greater, and none varied by more than 8%. From these measurements, we conclude that Coign’s model of application communication and execution time is sufficiently accurate to warrant confidence in the distributions chosen by Coign’s graph-cutting algorithm. Unlike Coign, which can distributed individual component instances, ICOPS was procedure-oriented. ICOPS placed all instances of a specific class on the same machine; a serious deficiency for commercial applications. Tied to a single language and compiler, ICOPS relied on metadata generated by the compiler to facilitate transfer of data and control between computers. Modules compiled in another language (or by another compiler) could not be distributed because they did not contain appropriate metadata. ICOPS gave the application the luxury of location transparency, but still required the programmer or user to explicitly select a distribution based on machine load. Configurable Applications for Graphics Employing Satellites (CAGES) [16, 17] allowed a programmer to develop an application for a single computer and later distribute the application across a client/server system. 5. Related Work The idea of automatically partitioning and distributing applications is not new. The Interconnected Processor System (ICOPS) [27, 40, 41] supported distributed application partitioning in the 1970’s. ICOPS 11 Unlike ICOPS, CAGES did not support automatic distributed partitioning. Instead, the programmer provided a pre-processor with directions about where to place each program module. The programmer could change a distribution only after recompiling the application with a new placement description file. Like ICOPS, CAGES was procedure-oriented; programs could be distributed at the granularity of procedural modules in the PL/I language. The largest application distributed by CAGES consisted of 28 modules. To aid the programmer in choosing a distribution, CAGES produced a “nearness” matrix through static analysis. The “nearness” matrix quantified the communication between modules, thus hinting how “near” the modules should be placed to each other. One important advantage of CAGES over ICOPS was its support for simultaneous computation on both the satellite and the host computers. CAGES provided the programmer with the abstraction of one dualprocessor computer on top of two physically disjoint single-processor computers. The CAGES runtime provided support for RPC and asynchronous signals. Both ICOPS and CAGES were severely constrained by their granularity of distribution: the PL/I or ALGOL-W procedural module. Neither system ever distributed an application with more than a few dozen modules. However, despite their weaknesses, each system provided some degree of support for automatic or semi-automatic distributed application partitioning. The Intelligent Dynamic Application Partitioning (IDAP) system [22, 25], an ADPS for CORBA applications, is an add-on to IBM’s VisualAge Generator. Using VisualAge Generator’s visual builder, a programmer designs an application by instantiating and connecting components in a graphical environment. The builder emits code for the created application. The “dynamic” IDAP name refers to the usage of scenario-based profiling as an alternative to static analysis. IDAP first generates a version of the application with an instrumented message-passing system. IDAP runs the instrumented application under control of a test facility with the VisualAge system. After application execution, the programmer either manually partitions the components or invokes an automatic graph-partitioning algorithm. The algorithm used is an approximation algorithm capable of multi-way cuts for two or more hosts [10]. After choosing a distribution, VisualAge generates a new version of the application. The IDAP developers have tested their system on several real applications, but in each case, the application had “far fewer than 100” components [25]. IDAP supports distributed partitioning only for statically instantiated components. IDAP requires full access to source code. Another potential restriction is the natural granularity of CORBA applications. CORBA components tend to be large-grained objects whereas COM components in the applications we examined have a much smaller granularity. Often each CORBA component must reside in a separate server process. In essence, IDAP helps the programmer decide where CORBA servers should be placed in a network, but does not facilitate program decomposition. The IDAP programmer must be very aware of distribution choices. IDAP helps the user to optimize the distribution, but does not raise the level of abstraction above the distribution mechanisms. With a fullfeatured ADPS, such as Coign, the programmer can focus on component development and leave distribution to the system. 5.1. Distributed Object Systems Emerald [5, 6] combines a language and operating system to create an object-oriented system with first class support for distribution. Emerald objects can migrate between machines during execution; they can also be fixed to a particular machine, or be co-located under programmer control through language operators [23]. Emerald is limited to a single language and does not attempt to automatically place objects to minimize application communication. The SOS [39], Globe [19], and Legion [14] distributed object systems provide true location-transparent objects and direct programmer control over object location. Globe and Legion each anticipate scaling to the entire Internet. However, none of these systems supports automatic program modification to minimize communication. 5.2. Parallel Partitioning and Scheduling Strictly speaking, the problem of distributed partitioning is a proper subset of the general problem of parallel partitioning and scheduling. Our work differs from similar work in parallel scheduling ([24, 36-38]) in two primary respects. First, Coign accommodates applications in which components are instantiated and destroyed dynamically throughout program execution. Traditional parallel partitioning focuses on static applications. Second, because Coign operates on binary applications, it can optimize application without access to source code (a necessary feature in the domain of commercial component-based applications). Coign does not increase the parallelism in application code, nor does it perform horizontal loadbalancing between peer servers. Instead, Coign focuses on “vertical” load-balancing within the application. The question of how to minimize 12 communication and maximize parallelism in large dynamic, commercial applications remains open. ios and silently enable profiling to re-optimize the distribution. The Coign runtime already contains sufficient infrastructure to allow “fully automatic” distribution optimization. The lightweight version of the runtime, which relocates component instantiation requests to produce the chosen distribution, could count messages between components with only slight additional overhead. Run time message counts could be compared with related message counts from the profiling scenarios to recognize changes in application usage. 6. Conclusions and Future Work Coign is the first ADPS to distribute binary applications and the first ADPS to partition applications with dynamically instantiated components of any kind (either binary or source). Dynamic component instantiation is an integral feature of modern desktop applications. One of the major contributions of our work is a set of dynamic instance classifiers that correlate newly instantiated components to similar instances identified during scenario-based profiling. Evaluation of Coign shows that it minimizes distributed communication time for each of the applications and scenarios in our test suite. Surprisingly, the greatest reduction in communication time occurs in the distributed Corporate Benefits Sample where Coign places almost half of the middle-tier components on the client without violating application security. Results from Octarine demonstrate the potential for more than one distribution of an application depending on the user’s predominant document type. We envision two models for Coign to create distributed applications. In the first model, Coign is used with other profiling tools as part of the development process. Coign shows the developer how to distribute the application optimally and provides the developer with feedback about which interfaces are communication “hot spots.” The programmer fine-tunes the distribution by enabling custom marshaling and caching on communication intensive interfaces. The programmer can also enable or disable specific distributions by inserting or removing location constraints on specific components and interfaces. Alternatively, the programmer can create a distributed application with minimal effort simply by running the application through profiling scenarios and writing the corresponding distribution model into the application binary without modifying application sources. In the second usage model, Coign is applied onsite by the application user or system administrator. The user enables application profiling through a simple GUI to Coign. After “training” the application to the user’s usage patterns—by running the application through representative tasks with profiling—the GUI triggers post-profiling analysis and writes the distribution model into the application. In essence, the user has created a customized version of the distributed application without any knowledge of the underlying details. In the future, Coign could automatically decide when usage differs significantly from profiled scenar- References 13 [1] Aral, Ziya, Illya Gertner, and Greg Schaffer. Efficient Debugging Primitives for Multiprocessors. Proceedings of the Third International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 87-95. Boston, MA, April 1989. [2] Arnold, Thomas R., II,. Software Testing with Visual Test 4.0. IDG Books Worldwide, Foster City, CA, 1996. [3] Barrett, David A. and Benjamin G. Zorn. Using Lifetime Predictors to Improve Memory Allocation Performance. Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 187-196. Albuquerque, NM, June 1993. ACM. [4] Birrell, A. D. and B. J. Nelson. Implementing Remote Procedure Call. ACM Transactions on Computer Systems, 2(1):3959, 1984. [5] Black, A., N. Hutchinson, E. Jul, and H. Levy. Object Structure in the Emerald System. Proceedings of the First ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 78-86. Portland, OR, October 1986. [6] Black, A., N. Hutchinson, E. Jul, H. Levy, and L. Carter. Distribution and Abstract Types in Emerald. IEEE Transactions on Software Engineering, 13(1):65-76, 1987. [7] Bokhari, Shahid. Partitioning Problems in Parallel, Pipelined, and Distributed Computing. IEEE Transactions on Computers, 37(1):48-57, 1988. [8] Brown, Nat and Charlie Kindel. Distributed Component Object Model Protocol -- DCOM/1.0. Microsoft Corporation, Redmond, WA, 1996. [9] Cormen, Thomas H., Charles E. Leiserson, and Rondald L. Rivest. Introduction to Algorithms. The MIT Press, Cambridge, MA, 1990. [10] Dahlhaus, E., D. S. Johnson, C. H. Papadimitriou, P. D. Seymour, and M. Yannakakis. The Complexity of Multiterminal Cuts. SIAM Journal on Computing, 23(4):864-894, 1994. [11] Ford, Lester R., Jr. and D. R. Fulkerson. Flows in Networks. Princeton University Press, Princeton, NJ, 1962. [12] Gary, Naveen, Vijay V. Vazirani, and Mihalis Yannakakis. Multiway Cuts in Directed and Node Weighted Graphs. Proceedings of the 21st International Colloquim on Automata, Languages, and Programming (ICALP), pp. 487-498. Jerusalem, Isreal, July 1994. Springer-Verlag. [13] Goldberg, Andrew V., Éva Tardos, and Robert E. Tarjan. Network Flow Algorithms. Computer Science Department, Stanford University, Technical Report STAN-CS-89-1252, 1989. [14] [15] [16] [17] [27] Grimshaw, Andrew S., William A. Wulf, and the Legion Team. The Legion Vision of a Worldwide Virtual Computer. Communications of the ACM, 40(1), 1997. Michel, Janet and Andries van Dam. Experience with Distributed Processing on a Host/Satellite Graphics System. Proceedings of the Third Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH ’76), pp. 190-195. Philadelphia, PA, July 1976. [28] Hamilton, K. G. A Remote Procedure Call System. Ph. D. Dissertation, Computer Laboratory TR 70. University of Cambridge, Cambridge, UK, 1984. Microsoft Corporation. Microsoft Open Database Connectivity Software Development Kit. Version 2.0. Microsoft Press, 1994. [29] Microsoft Corporation. Microsoft Office 97. Version 6.0, Redmond, WA, 1997. [30] Microsoft Corporation. Overview of the Corporate Benefits System. Microsoft Developer Network, 1997. [31] Microsoft Corporation. MIDL Programmer’s Guide and Reference. Windows Platform SDK, Redmond, WA, 1998. [32] Microsoft Corporation. PhotoDraw 2000. Version 1.0, Redmond, WA, 1998. [33] Naor, Joseph and Leonid Zosin. A 2-Approximation Algorithm for the Directed Multiway Cut Problem. Proceedings of the 38th IEEE Symposium on Foundations of Computer Science, pp. 548-553, 1997. [34] Nelson, B. J. Remote Procedure Call. Ph.D. Dissertation, Department of Computer Science. Carnegie-Mellon University, 1981. [35] Object Management Group. The Common Object Request Broker: Architecture and Specification, Revision 2.0. vol. Revision 2.0, Framingham, MA, 1995. [36] Ousterhout, J. K. Techniques for Concurrent Systems. Proceedings of the Third International Conference on Distributed Computing Systems, pp. 22-30. Miami/Ft. Lauderdale, FL, October 1982. IEEE. [37] Polychronopolous, C. D. Parallel Programming and Compilers. Kluwer Academic Publishers, Boston, MA, 1988. [38] Sarkar, Vivek. Partitioning and Scheduling for Execution on Multiprocessors. Ph.D. Dissertation, Department of Computer Science. Stanford University, 1987. [39] Shapiro, Marc. Prototyping a Distributed Object-Oriented Operating System on Unix. Proceedings of the Workshop on Experiences with Distributed and Multiprocessor Systems, pp. 311-331. Fort Lauderdale, FL, October 1989. USENIX. [40] Stabler, George M. A System for Interconnected Processing. Ph.D. Dissertation, Department of Applied Mathematics. Brown University, Providence, RI, 1974. [41] van Dam, Andries, George M. Stabler, and Richard J. Harrington. Intelligent Satellites for Interactive Graphics. Proceedings of the IEEE, 62(4):483-492, 1974. [42] Vinoski, Steve. CORBA: Integrating Diverse Applications within Distributed Heterogeneous Environments. IEEE Communications, 14(2), 1997. Hamlin, Griffith, Jr. Configurable Applications for Satellite Graphics. Proceedings of the Third Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH ’76), pp. 196-203. Philadelphia, PA, July 1976. ACM. Hamlin, Griffith, Jr. and James D. Foley. Configurable Applications for Graphics Employing Satellites (CAGES). Proceedings of the Second Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH ’75), pp. 919. Bowling Green, Ohio, June 1975. ACM. [18] Hartman, D. Unclogging Distributed Computing. IEEE Spectrum, 29(5):36-39, 1992. [19] Homburg, Philip, Martin van Steen, and Andrew S. Tanenbaum. An Architecture for a Scalable Wide Area Distributed System. Proceedings of the Seventh ACM SIGOPS European Workshop. Connemara, Ireland, September 1996. [20] Hunt, Galen. Automatic Distributed Partitioning of Component-Based Applications. Ph.D. Dissertation, Department of Computer Science. University of Rochester, 1998. [21] Hunt, Galen. Detours: Binary Interception of Win32 Functions. Microsoft Research, Redmond, WA, MSR-TR-98-33, July 1998. [22] IBM Corporation. VisualAge Generator. Version 3.0, Raleigh. NC, 1997. [23] Jul, Eric, Henry Levy, Norman Hutchinson, and Andew Black. Fine-Grained Mobility in the Emerald System. ACM Transactions on Computer Systems, 6(1):109-133, 1988. [24] Kennedy, Ken and Ajay Sethi. A Communication Placement Framework for Unified Dependency and Data-Flow Analysis. Proceedings of the Third International Conference on High Performance Computing. India, December 1996. [25] Kimelman, Doug, Tova Roth, Hayden Lindsey, and Sandy Thomas. A Tool for Partitioning Distributed Object Applications Based on Communication Dynamics and Visual Feedback. Proceedings of the Advanced Technology Workshop, Third USENIX Conference on Object-Oriented Technologies and Systems. Portland, OR, June 1997. [26] Li, Kai and P. Hudak. Memory Coherence in Shared Virtual Memory Systems. Transactions on Computer Systems, 7(4):321-359, 1989. 14