A Guided Tour of the Coign Automatic Distributed Partitioning System

advertisement
A Guided Tour of the Coign Automatic Distributed Partitioning System
Galen C. Hunt
Microsoft Research
Michael L. Scott
Department of Computer Science
University of Rochester
July 1998
Technical Report
MSR-TR-98-32
Microsoft Research
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
Submitted for Publication
A Guided Tour of the Coign Automatic Distributed Partitioning System
Galen C. Hunt
Michael L. Scott
Microsoft Research
One Microsoft Way
Redmond, WA 98052
galenh@microsoft.com
Department of Computer Science
University of Rochester
Rochester, NY 14627
scott@cs.rochester.edu
Abstract
Distributed object systems such as CORBA and DCOM
bring many advances to distributed computing. The distribution process itself, however, has changed little: programmers still manually divide applications into subprograms and assign those sub-programs to machines
with little automated assistance. Often the techniques
used to choose a distribution are ad hoc. Due to high
intellectual cost, applications are seldom repartitioned
even in drastically changing network environments.
We describe Coign, an automatic distributed partitioning
system (ADPS) that significantly facilitates 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 intercomponent communication through scenario-based profiling. Later, Coign applies graph-cutting algorithms to
partition the application across a network and minimize
distribution costs. Using Coign, an end user without
source code can transform a non-distributed application
into an optimized, distributed application.
Through a guided tour of Coign’s architecture and usage,
we present an overview of its features. We describe the
automatic distributed partitioning of three applications:
Microsoft Picture It!, the Octarine word processor, and
the Corporate Benefits Sample program. All are distributed automatically, sometimes with startling results. For
example, Coign makes significant changes to the programmer-assigned distribution of the Corporate Benefits
Sample.
1. Introduction
Distributed object systems such as CORBA and
DCOM bring the advantages of service location transparency, dynamic program instantiation, and object-oriented
programming to distributed applications. Unfortunately,
the process to distribute program components has
changed little: programmers still manually divide applications into sub-programs and manually assign those subprograms to machines. Often the techniques used to
choose a distribution are ad hoc, one-time solutions.
1
Given the effort required, applications are seldom repartitioned even in drastically different network environments. User usage patterns can severely stress a static
distribution of an application. Changes in underlying
network, from ISDN to 100BaseT to ATM, strain static
distributions as bandwidth-to-latency tradeoffs change by
more than an order of magnitude. Nonetheless, programmers resist repartitioning the application because it
often requires extensive modifications to source code and
program structure.
In this paper, we present a guided tour of Coign [5], an
automatic distributed partitioning system (ADPS) that
promises to significantly ease the development of component-based distributed applications. Given an application
built with COM components, Coign uses inexpensive
scenario-based profiling on a single computer to quantify
inter-component communication costs for both singlemachine and multi-machine distributions.
Intercomponent communication is modeled as a graph with
nodes representing components and edges representing
inter-component communication and location constraints.
Using graph-cutting algorithms, Coign selects a distribution of the application that minimizes communication
costs. At run time, Coign manipulates program execution
(with negligible overhead) to produce the desired distribution.
Coign analyzes an application, chooses a distribution,
and produces the desired distribution all without access to
application source. As a corollary, Coign is completely
language neutral; it neither knows nor cares about the
source language of the components in the application.
Moreover, because it operates on binaries, Coign preserves the ability to build applications from reusable,
third-party components.
In the following section we describe related work. In
Section 3, we illustrate how to use Coign to automatically
distribute an application. We describe Coign’s architecture in Section 4. Section 5 contains an experimental
evaluation of Coign’s effectiveness in distributing three
applications. Finally, in Section 6 we conclude and discuss future work.
2. Related Work
2.1. ICOPS
The idea of an ADPS is not new. The Interconnected
Processor System (ICOPS) [8, 14, 16] supported distributed application partitioning in the 1970’s. Under the
direction of Andries van Dam, ICOPS 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 host-processor load; and the first system to use a maximum-flow-minimum-cut (MAXFLOW/MIN-CUT) algorithm [4] to choose distributions.
ICOPS was used to automatically distribute HUGS, a
two dimensional drafting program developed at Brown
University. HUGS consisted of seven modules. Three of
these—consisting of 20 procedures in all—could be located on either the client or the server.
ICOPS was never intended for shrink-wrapped, commercial applications. Tied to a single language and compiler, it 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.
2.2. IDAP
Kimelman et al. [7] describe the Intelligent Dynamic
Application Partitioning (IDAP) system, an ADPS for
Smalltalk applications. IDAP 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” in the IDAP name refers to scenariobased profiling as opposed to static analysis. IDAP first
generates a version of the application with an instrumented message-passing mechanism. IDAP runs the instrumented application under control of a test facility with
the VisualAge system. After the 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 [3]. After choosing a distribution, VisualAge generates a new
version of the application.
IDAP supports distributed partitioning only for statically allocated components. Although initially based on
Smalltalk, the distributable components are large-grain
2
components, not the fine-grained objects native to Smalltalk. Kimelman’s team has tested their system on a number of real Smalltalk applications, but in each case, the
application had “far fewer than 100” components [7].
The latest version of IDAP generates C++ code for
connecting CORBA components, but still does not support dynamic component instantiation [6]. Moreover, the
use of CORBA restricts IDAP to a distribution granularity
of whole processes because CORBA does not support
loading multiple component servers into the same address
space. The IDAP programmer must be vary 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 full-featured
ADPS, such as Coign, the programmer can focus on component development and leave distribution to the system.
Although it supports multiple languages, IDAP still requires that applications be constructed with a specific
application development toolkit, the VisualAge Generator. Like ICOPS, IDAP supports automatic distributed
partitioning of static application pieces only. In the case
of ICOPS, the application pieces are procedures. In the
case of IDAP, the pieces are CORBA components or
large-grain Smalltalk objects.
2.3. Summary
Prior to Coign, no ADPS allowed distributed partitioning of binary components dynamically instantiated
during the execution of the application. Dynamic component instantiation is an integral feature of modern desktop
applications. One of the major contributions of our work
is a set of dynamic component classification algorithms
that map newly-created components to similar components identified during scenario based profiling.
Our research differs in scope from prior work because
we automatically distribute an existing class of commercial applications. All of the applications in our test suite
were developed by third parties with no knowledge of the
Coign system.
3. A Guided Tour
To solidify the concept of an ADPS, we describe a
detailed example of Coign’s usage to automatically distribute an existing COM application. The application
used in this example is a preliminary version of a future
release of Microsoft Picture It! [12]. (The original, uninstrumented version of Picture It! application is designed
to run on a single computer—it provides no explicit support for distribution.)
3.1. Creating a Distributed Application
Starting with the original binary files for Picture It!,
we use the setcoign utility to insert the Coign profiling
instrumentation package, see Figure 1. Setcoign
makes two modifications to the pi.exe binary file.
First, it inserts an entry to load the Coign Runtime Executive (RTE) Dynamic-Link Library (DLL) into the first
slot in the application’s DLL import table. Second,
setcoign adds a data segment containing configuration
information to the end of pi.exe. The configuration
information tells the Coign RTE how the application
should be profiled and which of several algorithms should
be used to identify components during execution.
Because it occupies the first slot in the application’s
DLL import table, the Coign RTE will always load and
execute before the application or any of its other DLLs. It
therefore has a chance to modify the application’s address
space before the application runs. The Coign RTE takes
advantage of this opportunity to insert binary instrumentation into the image of system libraries in the application’s address space. The instrumentation traps all component instantiation functions in the COM library. Before
returning control to the application, the Coign RTE loads
any additional Coign components (described in Section 4)
as stipulated by the configuration information stored in
the application.
With the Coign runtime configured for profiling, the
application is ready to be run through a set of profiling
scenarios; see Figure 2. Because the binary has been
modified transparently to the user (and to the application
itself), profiling runs behave from the user’s point of view
as if there were no instrumentation in place. The instrumentation gathers profiling information in the background
while the user controls the application. The only visible
effect of profiling is a degradation in application performance of up to 85%. For our simple example, we start
Picture It!, load a file for preview, and exit the application. For more advanced profiling, scenarios can be
driven by an automated testing tool, such as Visual Test
[2].
During profiling, the Coign instrumentation maintains
running summaries of the inter-component communication within the application. Coign quantifies every intercomponent function call through a COM interface. The
instrumentation measures the number of bytes that would
have to be transferred between machines if the two communicating components were distributed. The number of
bytes is calculated by invoking portions of the DCOM
code, including the interface proxy and stub, within the
application’s address space. Coign measurement follows
precisely the deep-copy semantics of DCOM. After calculating communication costs, Coign compresses and
summarizes the data online to keep instrumentation storage requirements at a minimum. If desired, the application may be run through profiling scenarios for days or
even weeks to more accurately track user usage patterns.
In all of our tests, storage overhead for Coign never exceeded 1.5 MB.
3
D:\apps\pictureit\bin> setcoign /p pi.exe
Config:
Logger:
Coign Profile Logger
Informer:
Coign NDR Interface Informer
Classifier: Coign EP3C Classifier
Sections: 4
___VAddr ___VSize ___VAEnd ___FAddr ___FSize
.text
1000
10e343
10f343
400
10e400
.rdata
110000
501c3
1601c3
10e800
50200
.data
161000
11224
172224
15ea00
d400
.rsrc
173000
15868
188868
16be00
15a00
.coign
189000
6cd0
18fcd0
181800
6e00
Debug Directories:
0. 00000000 00181800..00181910 -> 00188600..00188710
1. 00000000 00181910..001819c0 -> 00188710..001887c0
2. 00000000 001819c0..001819ea -> 001887c0..001887ea
Extra Data:
512 ( 181a00 181800)
Coign Extra Data:
{9CEEB02F-E415-11D0-98D1-006097B010E3} : 4 bytes.
R
0
0
0
0
0
L
0
0
0
0
0
R
0
0
0
0
0
L
0
0
0
0
0
Figure 1, Inserting Coign into the Application.
Setcoign rewrites the pi.exe binary to insert Coign
profiling instrumentation into Picture It!.
Figure 2, Executing a Profiling Scenario. With
Coign instrumentation in place, the application is run
through one or more profiling scenarios to measure
inter-component communication. In this scenario,
Picture It! loads and renders a composite image.
At the end of the profiling execution, Coign writes the
summary log of inter-component communication to a file
for later analysis; see Figure 3. In addition to information
about the number and sizes of messages and components
in the application, the profile log also contains information to classify components to determine component location constraints. Log files from multiple profiling executions may be combined and summarized during later
analysis. Alternatively, at the end of each profiling execution, information from the log file may be inserted into
the configuration record in the application executable (the
pi.exe file in this example). The latter approach uses less
storage because summary information in the configuration
record accumulates communication from similar interface
calls into a single entry.
Invoking adpcoign initiates post-profiling analysis,
see Figure 4. Adpcoign examines the system service
libraries to determine any location constraints on application components.
For client-server distributions,
adpcoign recognizes components that must be placed
D:\apps\pictureit\bin> pi.exe
[Coign Runtime Environment: 00000080 636f6900 00000000]
[Coign EP3C Classifier/9999]
[Coign NDR Interface Informer]
[Coign Profiling Logger (16 cycles)]
[CoignRTE: DLL_PROCESS_ATTACH]
[CoignRTE: DLL_THREAD_ATTACH]
[CreateFileMoniker( D:\apps\pictureit\docs\MSR.mix )]
[StgOpenStorage( D:\apps\pictureit\docs\MSR.mix )]
[CoignRTE: DLL_THREAD_DETACH]
[Elapsed time: 26400 ms]
[CoignRTE: DLL_PROCESS_DETACH]
[Inter-component communication:
]
[ Messages : ____16 ____64 ___256 __1024 __4096 __16384 __Totals ]
[ In Counts : 105240
1629
473
1599
66
45
109052 ]
[ Out Counts: 102980
4303
843
783
131
12
109052 ]
[ In Bytes : 782022 57912 49616 815034 157619 237963 2100166 ]
[ Out Bytes : 455207 130140 95473 304592 239239
70019 1294670 ]
Figure 3, Logging Communication. At the conclusion of the profiling scenario, Coign logs the intercomponent communication to a file for later analysis.
D:\apps\pictureit\bin> adpcoign pi.log
Binaries:
pi.exe
mso97d.dll
mfc42d.dll
mfco42d.dll
oleaut32.dll
Dependencies:
01 D:\apps\pictureit\bin\pi.exe
piperf.dll
oleaut32.dll
00 D:\apps\pictureit\bin\piserv.dll
mfc42d.dll
00 D:\apps\pictureit\bin\mfco42d.dll
00 C:\winnt\system32\ole32.dll
Objects:
112
Interfaces:
792
Calls:
38286
Bytes:
743534
Proc. Speed:
200MHz
Figure 4, Post-Profiling Analysis. Adpcoign analyzes the log file to create an abstract model of intercomponent communication.
D:\apps\pictureit\bin> setcoign /f:pi.set pi.exe
Config:
pi.set
Informer:
Coign Light Interface Informer
Classifier: Coign EP3C Classifier
Sections: 5
___VAddr ___VSize ___VAEnd ___FAddr ___FSize
.text
1000
10e343
10f343
400
10e400
.rdata
110000
501c3
1601c3
10e800
50200
.data
161000
11224
172224
15ea00
d400
.rsrc
173000
15868
188868
16be00
15a00
.coign
189000
83f8
1913f8
181800
8400
Debug Directories:
0. 00000000 00189a00..00189b10 -> 00189c00..00189d10
1. 00000000 00189b10..00189bc0 -> 00189d10..00189dc0
2. 00000000 00189bc0..00189bea -> 00189dc0..00189dea
Coign Extra Data:
{9CEEB022-E415-11D0-98D1-006097B010E3} : 4980 bytes.
{9CEEB030-E415-11D0-98D1-006097B010E3} : 904 bytes.
{9CEEB02F-E415-11D0-98D1-006097B010E3} : 4 bytes.
R
0
0
0
0
0
L
0
0
0
0
0
R
0
0
0
0
0
L
0
0
0
0
0
Figure 5, Inserting the Model into the Application.
An abstract model of inter-component communication
is written into the application binary for distribution.
on the client in order to access the Windows GUI libraries
or that must be placed on the server in order to access
persistent storage directly.
Combining location constraints and information about
inter-component communication, adpcoign creates an
abstract graph model of the application. In the current
implementation, adpcoign combines the abstract graph
model with data about the network configuration to create
a concrete model of the cost of distribution on a real network. Adpcoign then uses a graph-cutting algorithm to
choose a distribution that minimizes communication
costs. In the future, the construction of the concrete
4
model and the graph-cutting algorithm could be performed at application execution time, thus potentially
producing a new distribution tailored to current network
characteristics.
After analysis, the application’s inter-component
communication model is written into the configuration
record in the application binary; see Figure 5. Any residual profiling logs are then removed from the configuration
record. The configuration record is also modified to disable the profiling instrumentation. In its place, a lightweight version of the instrumentation will be loaded to
realize (enforce) the distribution chosen by the graphcutting algorithm.
Aside from the inter-component communication
model, perhaps the most important information written
into the application configuration is data for the component classifier. The component classifier matches components created during distributed executions to components created during the profiling scenarios. The abstract
model of inter-component communication contains nodes
for all known components and edges representing the
communication between components. To determine
where a component should be located in a distributed
execution, the classifier tries to match it to the most similar component in the profiling scenario. The premise of
scenario-based profiling is that profiled executions closely
match post-analysis executions. Therefore, if a component is similar to a component in a profiling execution,
then it will most likely have similar communication patterns. Based on the chosen distribution for a similar profiled component, the classifier decides where new components created during the distributed execution should be
instantiated.
Figure 6 shows the distribution chosen for our profiled
scenario. In this scenario, the user loads and previews an
image in Microsoft Picture It! from a server. Each of the
large black dots in Figure 6 represents a dynamic component in the profiled scenario. Lines between the components represent COM interfaces through which the connected components communicate. In the on-screen version of Figure 6, lines are colored according to the
amount of communication flowing across the interface.
Red lines represent interfaces with large amounts of
communication (communication hot spots) and blue lines
represent interfaces with minimal communication.
Solid, black lines represent interfaces that are not remotable (i.e., pairs of components that must reside on the
same machine). An interface may not be remotable for
any of the following reasons: the interface has no Interface Definition Language (IDL) description to enable
parameter marshaling; one or more of the interface parameters is opaque, such as a “void*”; the client directly
accesses the component’s internal data; or the component
must reside on the client or the server because it directly
accesses system services.
The “pie” slice in the top half of Figure 6 contains
those components that should be located on the server to
minimize network traffic and thus execution time. In our
example, the operating storage services, the document file
component, and three “property set” components are all
located on the server. Note that approximately one dozen
“property set” components (of the “PI.PropSet” class) are
located on the client. In order to achieve optimal performance, a component-based ADPS must be able to place
components of the same class on different machines.
After the abstract distribution model is written into the
binary, the application is prepared for distribution. When
the application user instructs Picture It! to load an image
from the server, the lightweight version of the Coign runtime will trap the related instantiation request and relocate
it to the server. The four components chosen for distribution in Figure 6 are automatically distributed to the server.
Coign distributes the component to the server by starting
a surrogate process on the server. The surrogate acts as a
distributed extension of the application; described components reside in its address space. A distributed version
of the Coign runtime maintains communication links between the original application process on the client and
the surrogate process on the server.
Figure 7 shows the distributed version of Picture It!.
The window in the lower right corner of Figure 7 contains
the surrogate process and the components distributed on
the server. Coign automatically created a distributed version of Microsoft Picture It! without access to the application source code or the programmer’s knowledge of the
application. The automatic distributed application is
customized for the specific network to minimize distributed communication costs.
Figure 6, Choosing a Distribution. Coign cuts the
graph using online network performance parameters to
minimize distributed communication costs. The pie
slice in the upper right contains the components selected for distribution on the server.
3.2. Discussion
We envision two Coign usage models 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 can fine-tune the distribution by inserting custom marshalling 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 used onsite by the
application user or system administrator. The user enables application profiling through a simple GUI to the
setcoign utility. After “training” the application to the
5
Figure 7, The Distributed Application. Component
instantiation requests are relocated to produce the distributed application. The new, distributed application
is functionally equivalent to the original, nondistributed application. Distribution is achieve by
modifying the application binary at run time, not the
application sources.
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, the Coign could automatically decide
when usage differs significantly from the profiled sce-
narios and silently enable full profiling for a period to reoptimize 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 relative message counts from the profiling scenarios
to recognize changes in application usage.
4. Architecture of the Coign ADPS
The Coign runtime is composed of a small collection
of replaceable COM components; see Figure 8. The most
important components are the Coign Runtime Executive
(RTE), the interface informer, the information logger, the
component classifier, and the component factory. The
RTE provides low-level services to the other components
in the Coign runtime. The interface informer identifies
interfaces by their static type and provides support for
walking the parameters of interface function calls. The
information logger receives detailed information about all
component-related events in the application from the RTE
and the other Coign runtime components. The information logger is responsible for recording relevant events for
post-profiling analysis. The component classifier identifies components with similar communication patterns
across multiple program executions. The component
factory decides where component instantiation requests
should be fulfilled and relocates instantiation requests as
needed to produce a chosen distribution.
4.1. Runtime Executive
The Coign Runtime Executive is the first DLL loaded
into the application address space. As such, the RTE runs
before the application or any of its components. The RTE
patches the COM library and other system services to trap
component instantiation requests. The RTE reads the
configuration information written into the application
binary by the setcoign utility. Based on information
in the configuration record, the RTE loads other components of the Coign runtime.
The RTE provides a number of low-level services to
the other components in the Coign runtime including:
interception of component instantiation requests; wrapping of component interfaces to intercept inter-component
messages; management of thread-local stack storage for
use by other components in the Coign runtime; and access
to configuration information stored in the application binary.
The current Coign runtime contains a single RTE. The
DLLs for profiling and “regular” program execution differ in the choice of components to run on top of the RTE.
6
,QWHUIDFH
,QIRUPDWLRQ
&RPSRQHQW
&RPSRQHQW
,QIRUPHU
/RJJHU
&ODVVLILHU
)DFWRU\
&RLJQ5XQWLPH([HFXWLYH57(
Figure 8, Coign’s Component Architecture. Runtime components can be replaced to produce lightweight instrumentation, detailed inter-component
communication trace logs, or remote component instantiation.
4.2. The Interface Informer
The interface informer locates and manages interface
metadata. With assistance from the interface informer,
other components can determine the static type of a COM
interface, and walk both the input and output parameters
of an interface function call. The current Coign runtime
contains two interface informers. The first interface informer operates during scenario-based profiling. The
profiling interface informer uses format strings generated
by the MIDL compiler [13] and interface marshalling
code to analyze all function call parameters and precisely
measure inter-component communication. Profiling currently adds up to 85% to execution run time. Most of this
overhead is incurred by the interface informer.
The second interface informer is used after profiling to
produce the distributed application. The distributed informer only examines enough function call parameters to
locate interface pointers. As a result of aggressive preexecution optimization of interface metadata, the distributed informer imposes an execution overhead of less than
3% on most applications.
4.3. The Information Logger
The information logger summarizes and records data
for automatic distributed partitioning analysis. Under
direction of the RTE, Coign runtime components pass
information about a number of events to the information
logger. The logger is free to process the events as it
wishes. Depending on the implementation, it might ignore the event, write the event to a log file on disk, or
accumulate information about the event 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 event logger creates detailed traces of all component-related events
during application execution. One of our colleagues has
used traces generated by the event logger to drive detailed
simulations of the execution of component-based applications. The null logger ignores all events. Use of the null
logger insures that no extra files are generated during
execution of the automatically distributed application.
4.4. Component Classifier
The component classifier identifies components with
similar communication patterns across multiple executions of an application. Coign’s scenario-based approach
to automatic distribution depends on the premise that the
communication behavior of a component during a distributed application can be predicted based on the component’s similarity to another component in a profiling scenario. Since, in the general case, it is impossible to determine a priori the communication behavior of a component, the component classifier groups components with
similar instantiation histories. The classifier operates on
the theory that two components created under similar circumstances will display similar behavior. The output of
the post-profiling graph-cutting algorithm is a mapping of
component classifications to computers in the network.
The current Coign runtime includes eight component
classifiers created for evaluation purposes. Experiments
indicated that the most accurate results are produced (at
reasonable cost) by grouping components of the same
type that are created in the presence of the same stack
backtrace.
4.5. Component Factory
The component factory produces the distributed application. Using output from the component classifier and
the graph-cutting algorithm, 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 them to another machine 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 very
straightforward since most of the difficult problems in
creating a distributed application are handled either by the
underlying DCOM system or by the component classifier.
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 component
classifier and the interface informer.
7
4.6. Summary
The component structure of the Coign runtime allows
it to be used for a wide range of analysis and adaptation
tasks. The scenario-profiling runtime is converted to the
distribution-realization runtime by changing the interface
informer and information logger components. By changing just the information logger component, one of our
colleagues has generated extensive traces of the activity
of component-based applications. These traces were used
to drive a simulator to analyze the performance of algorithms for a large distributed object system.
5. Evaluation
Because it makes distribution decisions at component
boundaries, Coign depends on programmers to build applications with significant numbers of components. For
our experiments, we use a suite of three applications built
from COM components: Microsoft Picture It!, Octarine,
and the Corporate Benefits Sample. We believe that these
applications represent a wide class of COM applications.
Microsoft Picture It! [12] is a consumer application for
manipulating digitized photographs. Picture It! 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. Picture It! is a non-distributed
application composed of approximately 112 COM component classes in 1.8 million lines of C++ source code.
Designed as a prototype to explore the limits of component granularity, Octarine is a document processing
application similar to Microsoft Word. Octarine contains
approximately 150 classes of components ranging in
granularity from less than 32 bytes to several megabytes.
Octarine’s components range in functionality from userinterface buttons to generic dictionaries to sheet music
editors. Octarine manipulates three major types of documents: word-processing documents, sheet-music documents, and table documents. 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 x86-assembly source
code.
The Corporate Benefits Sample [11] is an application
distributed by Microsoft Corporation to demonstrate the
use of COM for creating client-server applications. The
Corporate Benefits Sample provides windows for modifying, querying, and creating graphical reports on a database of corporate employees and their benefits. The entire sample application contains two separate client frontends and four distinct server back-ends. For our purposes, we use a client front-end consisting of approximately 5,300 lines of Visual Basic code and a server
back-end 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 [10].
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 at run time. 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.
5.1. Simple Distributions
For our first set of experiments, 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 computational power
on an isolated 10BaseT Ethernet network. For simplicity,
we assume that there is no contention for the server.
Figure 9 contains a graphical representation of the distribution of Microsoft Picture It!. In the profiling scenario, Picture It! loaded a 3 MB graphical composition
from storage, displayed the image, and exited. Of 295
components in the application, eight were placed on the
server. One of the components located on the server is
the component that reads the document file. The other
seven components are high-level property sets created
directly from data in the file. The property sets are located on the server because their output data set is smaller
than their input data set.
As can be seen in Figure 9, Picture It! contains a large
number of interfaces that can not be distributed; represented by solid black lines. The most important nondistributable interfaces connect the sprite cache components (on the bottom and right) with the user interface
components. Each sprite cache component manages the
pixels for an image in the composition. Most of the data
passed between sprite caches moves through shared
memory regions. These shared-memory regions correspond to non-distributable component interfaces. While
Coign can extract a functional distribution from Picture
It!, 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 Picture It! must be replaced with distributed
IDL interfaces, or Coign must be extended to support
transparent migration of shared memory regions; in essence leveraging the features of a software distributed
shared memory (DSM) system [1, 15].
Figure 10 contains a graphical representation of the
distribution of the Octarine word processor. In this sce-
8
V
Q
Q J
J
5
5
P
P X
X Q
Q
(
( \
\
J
J H V
H W V
V
V V
V
V
V
V
D
O
D
V
D
O
O
&
D
V
V O
& V &
V
V &
W D Z
V
Q
OD W V S O R R
G LW
& S OD 2 &
W L
V
V
V
V
D
O V D
O
V & V &
V U OD OU
OD J & W
0U &
&
H J H
S Q 0Q
S D Q D
U
H
U U
J
W W W W
H H U U
D
J J
H
U
H H H H
W W W
Q
H
D D J JH H U U
H H H
U D
J 6
66 6
D
Q
J H H U
H
6 66
D DQ Q QD D J J H
UD S S S S
LN 0
S S S
D
J
R R R R
00 D D Q Q D D
U
Q W
R
W U U U UR
D
W W 0
H U
U UR UR LOH
D DQ Q
R Q
J H U
6 3 3 3 3 3
H
Q Q W W00
)
D
,
3
D J H U
, ,
H H
0Y
,
Q Q W 0 0
, , ,3 F
Q D J H U
3 33 3
( Y Y YH H Q QW W W0
D Q D J JH HU U
3 33 R
LOH , (
Y H H Q
J H U
0 D Q D
'
) 3 , ,( ( ( Y Y H HQ
W 0 D DQ QD D J H
Y
0
3 3 , , (
Q W
Q D J
Y
H Q W 0 D D Q D
3 3 , ,( (
Y H Q W 00 D Q
U
,
3
3 3 ,( ( Y YH HQ QW W 0 D
JH HU
3 , ,(
D
Y H Q W 0
3
Q DJ
H
W
D
3 ,(,( (Y Y HQ Q
0 DQ
3
W
3 , ,( Y YH
Q W0 W
3
H
3 ,((
Y HQ 6H HW
3 ,
W
S 6
3 ,( (Y
UR S 6H HW
3 ,
W
3 ,3 3UR S S6 H
UR
W
6
3 ,
3 ,3 3UR S 6H HW
UR S
W
3 ,
3 ,3 UR S66H
U
3 ,3 UR S
JH U
HW DQD JH
3 ,3 UR
U
S6 0
3 ,3
DQD JH U
3 ,3URYHQW 0
DQD JH U
3 (
QW
JH U
3, (YH QW0 DQD
DQD JH U
3, (YH QW0
QD
0
3, (YH QW 0D QDJH U
3, ,(YH QW 0D QDJHHU
YH
D
3
,( YHQW 0 DQDJ
3
,( YHQW 0
3
,( YHQW
3
JHU
,(
DQD
3
W0
JHU
YHQ
DQD
3,( YHQ W0 DQD JHU
3,( YHQ W0 DQD JHU
3,( YHQ W0 DQD JHU
3,( YHQ W0
JHU
DQD HU
3,(
W0
YHQ
QDJ
W0D
3,(
JHU
YHQ
DQD
3,(
W0
JHU
YHQ
DQD
3,( YHQ W0 QDJHU
HU
W0D
3,(
YHQ W0DQDJ
3,( YHQ
HW
3,(
URS6
3,3
H
V
W D D
, 2
V Q
L V
V
& Q
L
D UW O
O
S V
V D
R
8 S , U Z
$ S
V
UW
V
&
V V & D
D S
R :S
R N 2 N
6
V
U PD ,
V D , O
U $ 83
W ,
6
F U G
H
O
D
G R
W Q 8
( U
O
D
H R Q R Q F P H R G R W %8
O &8 &
Q L
( / H
U
S *
&
D F L H R
L
(
D H
,
:V
& , D ,
PF F H
' :
( / / 2J
H D
& $
\ S ( /
D H
, 8U 8 J 3 3 K
:'
2 H D
, , , , 6 $
8
W
H Q
6 '
H K Q U D
, , ,
/ 22
8U
D R R
&' ,
H
3 33 3 D H U
2 , ,
PD
33 3
2 H K KF FD
Q H
F P &&
N H
, , 3 3 3
(
0
H K F D
D K
W D 6 , , ,
LQ
3
( /
P
K F D
&W
P F
U
& , ,
3 3
( / 2
R D
2
F D
& H
R
,
W Q
3 3
6
( / 2H
I
D && H
, ,
3
WL LU HY 0 &
V ( / 2 H K
H
3
W
F
3
Q / 2 H K
& H
,
W LU U S ( H
3
OL
F D
D
H
3
U
WL LU S S 6
2 H K
, ,
)
7 H K F D &
U S 66
H
3
WL
Q K FD D &
S 6 , ,
3
H
R
F
&
U
W
LW
3
LU S
6
H
3
L D &
, ,
W
(
S 6
V & H
3
W L
/
,
W
R H L U
3
,
2 H S WL US S 6
(
3
/
Z 6 PUS 6 6
,
3
S R 6 ,
2WH H
L
3
Z 6 9 R
U &
, , 3 3
H
(/
L
S )
3
,
,
3
W
9 R
P
U 1
2 H
U
,
3
)
Z 6
R
,
3
IV
,
H
S
3
L
W
1
, 3
Q
H
9 R
U
DU
(
6
) 3
3
/
7 S , 1 ,
2W H [ R
,
3
U
Z 6 )
3
3
,
H
S WU
W
L
3
H
,
9 R
U $
6
)
3
,
S , 13
W
R
,
3
H
H
OL U
W
3
H 6S ) 3
F ,
6 R
S U3 R 3
R
W H
'
,
U
3
, 3
W H 6S R
U
3
W H 6S
, 3
R
3
W H 6S U 3
UH
,
U
6S R
3
3
U H JD Q W H
6S RU 3 , 3
J
D
,
U H DQ
0
R
W
U
3
QH
3
U H JD D 0
W
Y( , 3
J Q
QH
,
U H DQ D 0
Y
W
3
(
Q
U H JDQ D 0
,
H
W
3
QH Y (
U H JD Q D 0
,
JD D W Q Y (
, 3
H
W
QD 0
3
QH Y (
0
W
Y , 3
QH (
,
Y
U HJ
3
(
D QD
,
U HJ
3
0
W Q
D
H
U HJ QD 0
W Q Y (
,
HY ( 3
D
, 3
U HJ QD 0
DQD W QHY
, 3
U HJ
0
W QH (
D
Y(
,
U HJ QD 0
W Q
D
HY ( 3
,
U HJ QD 0
D QD W QHY ( 3
, 3
0
U HJ
W QH
D
Y(
, 3
U HJ QD 0
D QD W QHY (
, 3
U HJ
0
W QH
D
Y(
,
U HJ QD 0
W Q
D
HY ( 3
,
U HJ QD 0
D QD W QHY ( 3
,
U HJ
0
D QD W QHY ( 3
,
0
W Q
HY ( 3
, 3
3,6SULWH&DFKH2 /(
3,3URS6HW
3,6SULWH&DFKH2/(
3,3URS6HW
3,1,)9LHZ2/(
3,3URS6HW
3,6SULWH&DFKH2 /(
3,3URS6HW
3,1,)9LHZ2/(
3,3URS6HW
3,6SULWH&DFKH2/(
3,3URS6HW
3,1,)9LHZ2/(
3,3URS6HW
U HJDQD 0
W Q HY (
, 3
U HJDQD 0
W Q HY (
, 3
U HJDQD 0
W Q HY (
, 3
U HJDQD 0
W Q HY (
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
W H 6S RU 3
, 3
U HJDQD 0
W Q HY (
, 3
U HJDQD 0
W Q HY (
, 3
, 3
Y(
W QH
0
, 3
DQD
HY (
W Q Y (
, 3
U HJ QD 0
H
D
W Q
, 3
U HJ D QD 0
HY ( 3
W Q Y (
,
U HJ
0
H
D QD 0
W Q
U HJ
, 3
Y(
D QD
W QH
U HJ
0
, 3
D QD
HY (
W Q
U HJ
0
, 3
DQD
HY ( 3
W Q Y (
,
0
U HJ
H
D QD 0
W Q Y (
, 3
U HJ
H
D QD 0
W Q Y (
, 3
U HJ
D
H
DQ
W Q Y (
, 3
0
U HJ
H
D QD 0
3
W Q
U HJ
,
D QD
Y ( , 3
U HJ
QH
(
3
W QHY (
0
,
3
QD 0
W QHY (
,
3
JD QD 0
W QHY (
,
3
U H JD
D
W QHY (
,
Q
0
3
U H JD
,
QD 0
W QHY (
3
U H JD
Y
W
,
QD 0
QH Y (
3
U H J D QD
W
0
,
H
QH U 3
3
D
U
JD
W
R
,
U H JDQ D 0 6S RU 3 , 3
3
3
U H JDQ W H 6S
U
,
3
3
R
W H
UH
,
U
3
3
6S R
U
,
3
H 6S R
(
W
3
,
H 6S HY (
,
3
W
Q HY (
H
3
,
W
W
Q HY (
0
,
3
W W Q HY Y ( ,
QD 00
( , 33
Q H
D QD
Q HY (
W
3
J
D
,
QD 0 W
H
Q HY
3
(
,
U HJ D QD D 0 W
Y ( , , 3 3
0 WQ
U
HJ D Q
H Y (
U HJ D QD 0
Q H Y ( , , 3 3
( U
HJ JD QD
3
W W Q QH HY Y ( ,
U
0
3
D
H
( ,
Q H Y
33
U HJ
( ,
D 0 W W
H
3
Q D 00
W Q Q HY Y
U
( , ,
3 3
W
D Q D
Q H
Y ( ( , ,
3 3
Q D 00
D
J
,
W W Q
H Y Y ((
33
H J D Q QD D
0
( , ,
Q H H Y
3 3
H J D
U
0
Q
33 3
, , ,
H Y Y ( (
U H J D DQ QD D
3 33 3 3 3
((
W W W Q Q H H Y Y
, , ,
H J
U
0
,
Q Q H H
U
H J D Q
0
Y Y ( 1 3
0 W W
6 3 , , , , , ,
H J D
Q Q
U
D
Y ,
& 31 3 6 3
0 W
H H
H J
U
U S U
Q D D
0
H ) R
Q Q
U
H
W W
R U , U S U
D Q Q D D 00
Q 9 S U R
U
0
W
PR ) R U R
J D D Q Q D D
W W L 6
WL S
00
H J J D D Q Q D
S 9 S WL S
H 6
H
0
H H J
S 6
Q
D
U
6 H 6
Z H &H
D D
L
U U
H J J D D
R H H
&H
Q Q D 2 W D W
U H H J J
V
Z H
U U H H
F
D D Q
L W 2 W D W
U U
K
J J D /
F
LW
H
R
H H J (
K
/
H
2
Q
U U
(
H
U
7
/
2
U
(
D
/
Q
(
V
I
R
33
, ,
13
, U
R
)
9S
L 6
H
H
ZW
2
/
(
3
,
6
S
U
LW
H
&
D
F
K
H
2
/
(
3
,
3
U
R
S
6
H
W
33 3
, , ,
13 6
, R
U S
)
U
9 S LW
LH 6 H
&
ZH D
2W F
K
/
H
(
2
/
(
3,&
RPS
3,3
RVL
WL RQ7
URS6
3,6
HW
UDQV
SULW
IRUP
H&
3,3
URS6 DFK H2
3,1
HW
/(
,)9
3,(
LHZ
2/(
YHQ
W0
3,(
DQD
YHQ
JHU
3,(
W0D
QDJ
YHQ
W0
3,(
DQD HU
YHQ
JHU
3,(
W0
DQD
YHQ
JHU
3,(
W0D
QDJ
YHQ
W0
3,(
HU
DQD
)LO H0YHQ W0
JHU
RQLN DQD JHU
)L
HU
OH
3, 0RQ
&
3,
( R3 LNHU
DL
3
,( YHQW QW6
3
,( YHQW 0 WU D
DQ
WH
3,
YH
(
QW 0DQ DJ J\(Q
HU
3,
YH
0
(
QW
XP
DQ DJ
3
5
,( YHQW 0D DJ HU
JQ
3
,( YHQW 0 QDJHHU
3
DQ
,( YHQW 0
DJ U
3
,( YHQW 0 DQDJ HU
3,
YH
0 DQD HU
JH
3 (YH QW0 DQ
DJ
U
QW
3 ,(
0 DQD HU
JH
3 ,( YH
DQ
U
DJ
3 ,( YH QW
HU
3 ,( YH QW 0
3 ,( YH QW 0 DQ
3 ,( YH QW 0 DQ DJ
3 ,( YH QW 0 DQ DJ HU
3 ,( YH QW 0 DQ DJ HU
Q
,'
D
YH
0 Q D
H
3
3 ,' R Q W0 DQ D JH U
U
3 ,( R P W0 D
D J
P DLQ D QD JH HU
3 ,
3 Y
D
Q
J
3 ,
H
LQ
H U
D
J
3 , 3 UR Q
H U
3 , 3 UR S W
U
3 , 3 UR S 6 0
6 H D
3 , 3 U
S
Q
3 , 3 UR RS 6 H W
D
3 ,3 3 UR S 6 H W
J
UR S 6 H W
3 ,3
H
3
U
U
3 , ,( UR R S6 6H HW W
3
S
(
3 , ,(
Y
S 6 H W
3
6 H W
Y H
,( (
3
Y H Q
H W
3 , ,(
Y H Q W
W
3
(
Y H
3 3 , ,(
Y H Q Q W 0
3
W 0
Y H Q
, 3 3 , , ( ( Y H Q W W00 D D
Q
H Q W 0
Y
, ( (
3 3
D Q
Q W 0
3 3 , , ,( (
D Q D D
Y Y H
3 3
J
Y H H Q
(
W 0
D Q
3 33
, ,
Y
0 D D Q DD J H
, , ( ( Y Y H H Q Q W
J H
Q
, , (
Y
H Q Q W W 0
,
6 3 ( (
D Q D D J H U U
Q
H H
W 0
3
Y Y
Q D JJ H U
H
Y Y
Q Q W W 0 0
D
D J H H U
U S UR H H H Q
R U
Q
W W 0 0
D D Q
J H U U
Q Q
0 0
D Q Q D
W
S LW S
H U
W W D D Q D D
6 H 6 W 0 0
J
U
Q Q D
D D
J
& H 00
Q Q D D J J H H
H
D D
D D J J H H U U
W D W D D
Q Q
U
Q
J
H
F
Q
J H H
U
D D
K
H
D D
U U
J J
H
U U
J J H H
2
H H
U U
U U
/
(
U
P
Figure 9, Microsoft Picture It!. Of 295 components
in the application, eight are placed on the server.
H
F
V
Q
H
V V
L
H
W
H \
H
L
L
U
WU WU
X U
\H
U S
T D
V H
H H
U
F
Q
\
H
S S DR
U
LW
H H LR
Q
V
U
QU
D U
R R
U
H
V H
J 6
W W
H
U U
R
L
L 3
H X
Q H
H
D H LF H \ W
3 W \
OS
LW WU
V
R
U S T
J 3
H
FG
H
L
Q WL
U
U H
S
' U Q W V D V KV K L Q
H
D R
U H
+
H S
D V U K D H H
F
H UR
Q
6
L S Q S SS S '
X
O
UR
S R
Z Z
3J R
D H
0H S
DR R
H 6Q P V
J 3
R
ZU
LW D H
U U U U R V
R U
'R U D
Z
F
L
R PD
W
U
W RW R W
WU LWH
U
G
\
\
U
R H R ZU Z
V
L
U
H
3
J LH H S H LI
G G
UDLOH W
Q
F
U J OH WL X H %,
U
U U 0
LW
J3
L
L SQQ
H
Q H
Z
3
3 3
U
IL J P O W PR H \ F F W
DV
[ LQ Q LQQ LQ GLI W G W R LHW R
H
D UH
VK
U
R O6LW
W W L R V S 8 WR) H
W DW D
L
RX R H LH H W H
\
OS
Q W LQ Q LQ G LI
L
U
'
W R
Q
U [U W H
KSS
H X
U R0
H
I J O
W R W RRW Q
L
J
* 6F 7 D D D L RD
H
L
Q W Q G G &UR6 Z
T
R
U
S \ IL LW H [ \ [ D H D R Q
\
S
V
U
&
6
, 6
L
S
3:
3 3:
D L R L LQ LQ Q
U
U
D
R
1
+
D
U
OS
6
U
U W
W H
'
'
\ S H
U
W V
H3
R
:
S H
3 1, &
( W PW R ZU Z
H
O
H JH
DU U HH
13:
S
3 1D D L
O P R R W H 67 37
6$
H
V
D R
U H 6
F
LW
L SQD R
U 3J L LI J W P\ RR
:
/ RQU LQ G W GRLH
Q7 W
'2 2222
LQ+
3:
,
3
V H
2222222 Q
OS
LW
3J I W R Z
6 H WUR QLN
22222
R U
R D LQLQ
JW DIL LW H [
11
RW
:
22222
G O
O H
'
H
6
222
R
U
LW
U 0
LW GD H
WL
2& 3
222
D LQ WL LQ G WGR RO LWRQ HU RLQ R
3
U W R W H 6&
R+
D
2
2
Q
U
2
2
)
&
H
V
[
R LQ LQ
U H
U
R
3 W
U
222
Q7 3
22
F
D V U H W H
% W LW QWU O
H D 1, H S
: D D LQ WU 6
& LN 0
L SQ
O
22
22 :
1
R H
O Q 6
R
3
Q P Q
S R
LI J [ \[H D 73
22
22 1
O
U
RX 0
:
3
22
22
'
R U ( R ,'R R O LWHR WULWH
3 W
R
R
U R S\
U LW H
U
\U
3
22
22 : R /
W H 67
R
WU
Q
SH
U
U U 3
0RJQWU &
22
22
&
HU Q
O PR R Q 7
O
WU 6&R 6
D
H
VK
H 3
R
, 222
22 )
W
H
2P U R/(Q PRQ&RO
R
LI J W[P\
1
Q
J VK SS U
W R
HOS
2
22 H 3
H WU
R U WW WU
&
R
LW H HR 6&6
22
LW Q
S
LW VD S SDRUDU H
&
,W
L
R
(
W
O+
22
U
Q
&
22 2
6&R 6LWH
J IL
& X /RQ
URW
F
7
L S DRU UJ3
H
W D W R R Q
)
U
Q
2
2
O
,
%
2
2
R
U
1
UP LH RO LWHQWUR G LV LR
S
3
O \ '
2
22 2
D[
U 0
& R EH
2
/ FW
R DFN
HU
U 3 W [U HD31
UH
D RWLIQWU 6
2
2
Q
O
D 7
2
2 )
D U H W H
&%Z
OH
2
2 /1 RRUP
S
W Q H
H
\U +
OH
LI J [ \W H73
R
2
22 & /(
\
L
R
H
UP
6 U
H
2
U
V
\U
D
L LW W W 76
R QNQ H LNH
+
2
2 )
O
RQ
D
VU F
UP
2
2 2
, 2
D QQR H
L 1
RU
R WLYRQ W Z
2 )
L OL
Q R
F
W
2
2 8
L W )H3'
2
2 )
LQ GR Z
R
U QR
L W F
H0
2
2 $
L F D LQLQWGR
H & W F
LO
2
2
L
F
'
HN
L L '
) 3
D LQ
R'2
H GRQR(
2 :
2
U
/ '
G F
2 3
QWGRZ
2
H UH
R L
2 : DLLQ
2
2
2 3
QW
L LIL FL Q 0
H
HN
OL
Q W Q 8
2 :DLLQ GRZ
H GR
R R 8 )2
U
2 3
Z
2
2 :DLQWGR U
HN U GR FL 0 1
2
H
2 3 LQ LILH
H L LI FL Q P
2
2 : RW QW Z
H G QRLW RQ 8
W,
H
U
2 1 DLLQGR
8
2
2 3
U GRRFL 0 1
H
QW
OL
U HN
U
L H
2
2 :DL GRZ
L FL Q P 2
)
2 3 LQ LILH
H
P
U HN Q IL W Q 8
W,
RU
2 :RW QW Z
U HNL Q R R 8
2
)H
H L
2 1 DL GR
01
QR
N
2
2 3 LQ QW
L QRR 0P
LW F QD
Q
2 :DL GRZ
FH W V
W,2
U
R 0H
O H
O H Q
2 3 LQ
O R
Z
,W
HL )
6
2 :RWLILH
HL
UW
H
H 0
HOL )
9
QR
2 1
Y
H U HU H
L W *R OL )
L
DLQW Z
O
I
2
&
EDN
L Q LW F $
UH &
W
23 LQGR
OSHU
a
L /
R R1
S
O H SRUV
KF
2:DLQW Z WU RO +H
2
WL 0
+
H
23 LQGR
LVW
O GNFQ Z P
OL 2
RUW D R U RZ6
2:/(&RQ
)
RZ Q/
QNQ )
QR %
2
22 QNQ
LVW
HWL H
28 WUL QJ/
HU
WL
U 8
&P
2
U
6
(/R)
O 6
O R
26 HQX,'0 RQLN
2
QLNH
UW
Z
20 URJ
ZH U RUW P
UR2
0R
H
2
U
QR
L 9
L 9 H
23 U RJ,'
VW
L IL QR )
2
UH
&
W
G
W
23 0RQLNH
2
U D\H
R &
RZ Q/L
L /
S
O HSRUV
,WHP QNQ
LVW
2
GQOO D 1
U
+
28 WUL QJ/
O GNFQ Z P
*
QLNH U
2
W 6
RUW D R Q U D
26 HQX 0R QLNH
2
QR%
NQR)
2
20U RJ,' 0R
U
H
23 U RJ,'
WL
&
UR 8
2
P
U
23 0RQLNH
6
(/
)
2
U
P
,WHP 0RQLNH
UR 2
2
HWL 6
U HS
,WHP 0RQLNH
)
O RU
O H
2
W
+
O RU
2
,WHP
R&
W QRU H
L IL WQR
2
,WHP 0 RQLNHU
&
(
1
2
QR
,WHP 0 RQLNHU
LW FH
2
H P/ 2
O
2 8QNQRZQ/LVW
DU )
W H 6H 6
2
26WULQJ/LVW
UH
HJW [H 7
O GQ
2
2 0 HQX
D+
U H
GU
L IL QD 5
2
23URJ,'0 RQLNHU
U H
DR
L ILWW R 1
2
U HN
23URJ,'0 RQLNHU
R1
L QRE\ H.
2
W [ H
,WHP 0 RQLNHU
0
'
7
QRLW
,
2
,WHP
0
RQLNHU
J
U N
FH
L RRU 3
2
O HH
,WHP 0 RQLNHU
HQ
HOL )
U H6
Y 0
,WHP 0 RQLNHU
L QRLW F $
2
U HN
,WHP 0 RQLNHU
L Q
U HN
HW,
R 0P
,WHP 0 RQLNHU
L QR 0P
U HN
HW,
,WHP 0 RQLNHU
L Q
U HN
R 0P
HW,
,WHP 0 RQLNHU
L QR 0P
U HN
HW,
,WHP 0 RQLNHU
L Q
U HN
R 0P
HW,
,WHP 0 RQLNHU
L QR 0P
U HN
HW,
2 8QNQRZQ/LVW
N
L QR 0P
HW,
2 6WULQJ/LVW
0P
HW,
2 0 HQX
U HN
L Q R 0PHW,
23
U HN
L Q R 0PHW,
23U RJ,'
0R
U HN
L Q R 0PHW,
,WHPU RJ,'0
QLNH
U HN
L Q R 0PHW,
,WHP0RQ
RQLN U
U HN
L Q R 0PHW,
,WHP0RQ LNHU
HU
U HN
L Q R 0PHW,
,WHP0RQ LNHU
U HN
L Q R 0PHW,
,WHP0RQ LNH
U HNL Q R 0PHW,
28 0RQLNHUU
LNH
U HN
L Q R 0PHW,
26 QNQ RZ
U
U HN
L Q R 0PHW,
20WUL QJ/
Q/L
VW
LVW
U HN
L Q R 0PHW,
23 HQX
U HNL Q R 0PHW,
23U RJ,'
0R
U HN
L Q R 0PHW,
,WHPURJ,'0
QLN
U HNL Q R 0PHW,
,WHP 0RQ
HU
LNHURQLNHU
U HN
L Q R 0PHW,
,WHP 0RQLNH
U HN
L Q R 0PHW,
,WHP0RQ
LNHUU
U HNL Q R 0PHW,
,WHP 0RQLNH
U HN
L Q R 0PHW,
,WHP 0RQ
LNH U
U HNL Q R 0PHW,
,WHP 0RQLNH
U
U HN
L Q R 0PHW,
,WHP 0RQ
0R LNH UU
,WH
HW,
QLNH
0P
,WH P
HW,
U
L QR
0P
,WHP 0RQ
U HN
QR RU 3
2
2 P0RQ
J
U HNL '
HW,
LN
2 8Q0RQ
, R 0P
0
HU
HW,,
LNH
0P
2 6WUL
L QRU HNL Q
HW
NQ LN U
U HN
L QRR 0P
2 0 Q RZ
U HN
HU
HW,,
L Q
0P
2 3 HQ J Q
HW
U HN
L QR
0P
,WH3 U R X /LVW /L
U HN
2
VW
L QR(/ 2
,WH PUR J,'
2
U HNR
6
,WH P 0J,' 0
Q &O RU F
2
0 RQL 0 RQ
O RUW U DEOH
W R1
,WH P0
2
RQL NH R LN
O H W+Q R &
U L IL P
U R)
,WH P
U HS
RQ
HU
2
O RU
&
NH U QLNH
WL 6
H
,WH P 0
LN U
2
UW QURR)
U
,WH P 0 RQ
HU
O R
P R&
6
2
HWL H
,WH P 0 RQ LNHU
WL 6
Q
2
O RUW (/ 2
,WH P 0 RQ LNH
2
*
HWL 6
2
,WH P 0 RQ LNHUU
OO DR 1
QR&
H
U
W
\
2
LN
RQ
R
0
,WH P
O R\ D/ H
)
L IL WQD 5
,W P 0 RQ LNHHU
O H+
U H
W X
U HS
J
0
HOL 2
,W HP 0 RQ LNHUU
0
XR
2
,W HP 0 RQ LNHU
R F$
HV
D+
LNH
2
,W HP
L QY
N
LW X 5
O GQ
0 R
2
UH
U
2 HP
U H6
HU HO W R 1
2 8
2
0R Q
)
2
0 R Q LNH
2 6
L IL P
O H UH
U RR &
LN U
2
2 0 QNQR QLN
FH
UW Q / 2
H
2
2 3 WULQ
Q
LW
6
( R1
U
QR
LN
2
,W
WL O R
H
H
1
3
H
R
UR Q J Z H U
6 &L ILW W R 1
2
,W H UR
WL QR U H
2
H
LIL L W RR 1
J X /LVQ U
,W H P
U HH
,'
/
2
,W H P 0 J,'
RUW
LI IL W W 6
2
O
U H
L
,W H P 0
+
R 1
0 W LV
U
2
,W H P 0 RRQ 0
\UIL W RR)
W
O H
P
S
0
LN
H
Q
,W
L P
U R & 2
D/ H
UH
2
,W H P 0 RRQ LN H RRQ
R\ U 6
UW Q D * 2
,W
P 0 R Q LN H U Q LN
6
2
,W HHP 0
LN H
OO
W X
WL O R
H
H
R Q LN H U
W )
2
,W H P
H U
69
\ QD
8
2
,W
0 RQQLNLNHHU U
U
WL H
P0
U RQ )
H
L
2
,W HHP 0
GP
Z
N
LN H U
,W
R
D
Q U R/ 2)
22
,W HHPP 0 R Q
H U
R P
GU Z
,W
U
R &
2
P 0 RRQQ LN
(P
2 HP
U R 1
9
2
LN
0
Q %&
2 HP
Q R 2
22
0 R Q LN H
L
H
D
2 8
UW ILW /U )
0 R Q LN H U
2
Z L /NF QR 6
6
R L ( D H75
2
2
2 3
V
0 Q0 RRQQ LN HHU U
WL O U H
P[ D 1
W U GRUW H
22
WU N R Q LN H
&
22 3
6
R O
L
R H6
2
W QW RR 17
URHQLQ Q Q LNLN H U U
8 UR
S +
W,W,
2
H
HW
Q
6
LN HH U
H HJLIL ILW H 3
H
W
&
H W, ,
J X J RZ
22 0
L W[ U P
O HH
O
RU
H
W ,,
/ H U U
S
PH H
2 6 W QN J ,'
R
F H6 U U .
WW ,
QRH
O
)& W H UL
22 2
+
Q ,'
LVQ U
J 0
0 PPHH
W ,
W U
H
LW W
R
H
H
W W,
22 )&
R 0 W /
, RR 00 P
PP
RU
Q
'
H
R RD Q Q
O
2
E\
Z0
O
S
QQ R
H W, ,
LV
0
2
1
PP
/ U Q Q XJ
0
R
H
H
R
W
,
2
R
R
L
0
0N L Q Q R
2
W
H W W, ,
) & R
Q R Q
U
D
P
2
(PWU G /
0
NL
R
PH H
/ Q LN
W W, , ,
22 )2 R R U Q
GU
RD
R HH N
L QQ RR 00 PP
LV
H
W W , ,
HH
22
L L Q R
0
8 R /R Q WL PWU &6 O U
+
Q U U H HNN
2
LV LN H
W W , ,
HH
U W IL 6R LW G W
L Q Q RR 0 0 PPPP
22 &1)
U U H N
L
N
HW W , ,
W HU U
N
L L
)2
QD
)
O R 6 00
P HH
RQ U (P U H
U U HH N
W W , , ,
H
N L QQ QR
H
00 PPP
222 L 8)2 R R R U N P &6R U L 6Q H LW 0
W W W , , ,
HH
U HH N
U
L L
OG
R
222
H
0
OH $) R/ Q W PQ WH WU
W W W , 2,
HH
O
U U H N
00 PPP
HHH
N
222
LW
QQR R R
W
U
HH H
Q U (UP LI
00
PPP
W W, W, W, , 2222222222222222)22222
U U HH
RR
Q
R % R LW 6
12 7 0F R
W L
HR
L L QQ Q
00
PPP
W
R
HH H H
NP
N
U
2)&
R
U H Z D Q H LW
O
X
3
W U
L N
L L QQ QR R R
PPPP H 000
+
HHN N
H
OL &$0) 8)
F WU
R R / R R LY PQ &6R U
&
)
&
2
*
000U
P261)
QQ R R
NN
L L
R /R
1551) &2H $)
U U HH H
N R
Q
NL
Q
U Q W ( OE Q H R %R L O
S RQ
R 0000 / F
H
U U
H N L L L Q RRRRR J
G O
ZD W 6
R R R R R / D R D X R R R / 0F R R S'U N UP(PW LI 0
OS
U U H H HN N
QQQ
NN
R R
/
U +
Q
QH L
L
L & D LN 6
U
U U
Q
U Q U Q (O W Q O W U Q (R W
H
R
WH
, Q R R R R (R LW P
QF
L U
P W OL , PQ & URH
L N
LV
H
U U HH
L L L Q Q'
P
O
N
QQ Q
SH
H NWU
R % 6 U R U H
U U
L L
NNN
U
W
W H LI J H LI PW Q Y
U F
O LI
HHH
'U O
Q&
N N
L L L L
/ GR
H
W
R
O H U U &
&OS
Z R L O
\ LH H U LH U
D QW 6 Q
R &LN 6 O D
U U U H H H 0H N N N
L R EU 6 R6 R R H LV U O
N
U U U
HH H
WU
WL
D
U 6O RH
6L
QF HL
+
R HU
L O L O R / U 6R
F F
RU U U U
H QU
W R
L 6
Q HH
W
Q
0
N WU WH R
WL
W
6
W
6
Q
S
D
W
H
H
N
H
LW Q
Q
U
/ R
H
U UW &
W
R
O
G
O
UR
L
WL
WL UW \
R
H
LW WU OH
LV U O
&S
Q
N
R
+
H HRR
:
X
H
R F
O
H
O R
RH
W R+
O X
Q
H
SH
QU
+
U
V
LQ
+W
O+ WL
OS
W
H
O
WU
R
HU
&S
G
H
H
R
H Q
O R
+
OS
S
R
O
RH
U
O
O
S
H
QU
Z
D
H
U
H
W
U
Q
U
U
R
G
O
O
H
U
Figure 10, Distribution of Octarine. Of 458 components in the application, two are placed on the server.
nario, Octarine loaded and displayed the first page of a
35-page, text-only document. Only two components of
458 are located 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. While Figure 10 contains a number of nondistributable 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 is composed of literally hundreds of components. It is highly unlikely that these GUI components
would ever be located on the server. Direct documentrelated processing for this scenario is limited to 24 components.
3
3
6 6
U
H
9
Q Q
R
R
L
L
U
V
U
V
V
H
V
U
Q
U
U
H
D
9
R
U
H
O
H H
L
9 H
Y Y
V
9 &
O
U
V
W
9 U
V
O
V
LI
H
R
V
V
R
Y
W
D
U
H
U
V
W
O
V
U
H
W
D
U
H
W
O
9
V
D
O
Q Q
& Q
O
H
Q Q
9
D
& W
H
R
R R
O
R
U UH
V
W
L
&
9
R
UW
)
I
V
%
)
L
U
V
&
&
H
WL
W
9
I
H
& V
D
Q
G
V
O
WL
I
W
U
H
9
H
G
V
U
Q
V
D
U
R
I
H
V
O
L
&
Q
D
9
H
V
D
D
H
/
V
O
V
Q
L
&
WL
H
& D
%
%
W
V
D
Q
I
H
/
G G
O
&
WL
V
V
% W
V
H
D
H
I
WL
U
V
O
H
Q Q
V
% &
LI
X
WL
I
H
Q
V
D
D
D
% J W
W
D
O
&
U
WL
WL
H
I
V
H
W
H
Q
W
I
K
W
D
D
I
&
H
V
H
H
L
L
W
%
Q
Q
U
W
H
6 6
WL
I
I
H
9
H
Q
H
%
P 6 &
H
LI
H
U
Q
I
H
V
,
Q
WL
H
9
%
Q H
H
%
V
H
H
V
U
Q
I
H
WL
H
V
%
%
Q
H
Q
V
9
H
V
I
H
D
W
%
%
U
O
H
LI
H
V
V
H
Q
%
9
V
D
&
%
H
H
V WLI
O
H
Q
%
U
W
V
WL
H
9
V
D
%
&
Q
VL
V
H
H
O
W
I
V
WL
H
%
Q
D
H
/
9
&
V
V
I
O
W
L
%
H
V
Q
VW
H
/
&
VL
V
D
H
W
LI
%
O
Q
V
U
V
/
WL
V
H
%
H
D
&
L
H
O
W
I
V
Q
U
/
9
WL
%
H
&
VL
H
W
I
H
Q
V
V
WL
/
H
%
U
9
H
VL
VD
I
Q
O
VW
H
%
/
H
VV
H
9
LI
&
U
Q
W
%
D
VW
H
O
H
H
VL
LI
VV
U
9
&
Q
%
W
/
DO
H
H
H
V
VL
VW
U
Q
9
VD
&
LI
/
%
W
H
O
H
H
V
VL
VWL
9
%
&
Q
U
V
W
/
I
H
D
O
H
H
VL
VV
VWL
%
Q
&
9
/
W
I
H
D
O
H
VL
VW
V
%
&
LI
QH
VD
W
/
V
H
O
VL
%
WL
Q
&
/
U
W
IH
H
H9
VW
%
VL
Q
LI
U
/
H
V
H
H
VD
%
VW
9
QH
O &
LI
U
W
VV
H
VL
H9
DO
QH %
/
V
&
W
U
VV
WL I
VL
%
H9
HQ
DO
/
&
VWL
H%
W
U
VV
IH
H9
D
O & VL /
QH
W
VWL
U
VV
%
VL
IH
H9
DO
/
QH
&
VWL
U
W
%
IH
VL
H 9 VVD
QH
/
O &
V
W
VV
U
WL I
%
H9
HQ
D
U
O & VL /
V
H
H9
W
WLI
VV
%
VL
HQ
DO
VV
/
H
&
VWL
D
W V
O &
%
I
HQ
L/
WL
V
IH
H
WLI
%
QH
HQ
U H
%
V
H
9
V
WL I
%
VDO
HQ
&
HH
\RO S
H%
U H
9 V
P(
VWL I
VD
O &
HQH
NQ
U H
%
D%
9
VWL I
VV
HQH
DO &
U H
W VL
%
9
/ VWL
V
I HQ
VDO
H%
&
W VL
U H
/ VWL
9
VV
I HQ
DO &
H%
W VL
U H
/ VWL
9
V
I HQ
VDO
H
U H
%
&
W VL
9
/ VWL
V
I HQ
VDO &
H%
U H
W VL
/ VW
9
VV
L I HQ
DO &
H%
W VL
/ VW
L I HQ
H%
O
R
U
W
Q
R
&
U
D
%
H
LG
6
F
L
V
D
%
O
D
X
LV
9
H
LO
)
F
R
'
H
V
P D
H %
W
V S
\ S
6 $
U
H
9
V
U
V
H
U
U
9
OD H H
U
U
U
H
U
9 9
H H
V
& 9
U
H
V
9 9
H H
9
V
H
OD
V
V
9
\
V V
U &
V
V
V
D D
H
V
V
OR
OD
V
O
U O
H
V
V
9
D
U
OD
S
H
H
V
& &
O
&
U
H
OD
\
9
W
& &
V
W
P OD
H
H
&
OR
W
V
V
9
9 H
V
W
( &
L
W
D
V
L
S
H
V
\
V
W
O
L
/ /
V
V
W
V
L
U
J
P
LV
OR
/ /
V
&
V
H
LV LV
OD
U
V
/
S
D
W
V
OD
/ /
OD
9
H
U
V V
U
V
LW
W( &
LW
P
V
L
LW
9
H
I
R
I
W
&
LW
V V
I
V
W
LV
LW
H H
I
W& (
9
H
/ /
V
I
U LW
H H
W
LV
V
H
W
U
I
6
Q Q
H
V
IL
LV
H
OD
\
H
Q Q
WV
U
V
/
H H
V
H H
LV
V
IL
H
Q
&
OD
H H
OR 9
/ /
LW
V
9
Q Q
W
H
I
H
9
OD
V
LW
S
% % %
V
&
H H
I
WV
V
W
H
% %
Q
LV
V
P
IL
U
H
OD
WV
V
H
W&
Q
LV
% %
/
H
H
OD
V
IL
H
Q
&
%
W( &
LV
/
WV
H
9
H
H
Q
OD
%
IL
W
V
/
WV
LV
Q
H
\H HU
&
V
%
H
IL
H
LV
W
WV
/
%
OR
9
U
Q
OD
H
IL
S
H
H
%
/
LV
WV
Q
&
H
P
%
H
IL
9
VV
WV
/
Q
(
HH
H
V
IL
OD
%
H
W
U
\
WV
V
Q
H
&
H
%
LV
IL
OR
H
W
OD
Q
9
U
H
/
S
&
H
%
LV
H
P
WV
W
Q
HU
/
%
IL
H
9
VV
(
LV
9
V
H
D
W
V
V
O
%
Q
/
ILW
V
LV
DV
H
H
WV
Q
W& OD
&O
/
%
IL
HU
H
N
HU
&
H
LV
WV
LQ
9
Q
%
9
/ LVW
H
VV
HIL
L W/
V
VV
%
OD
Q
HI
OD
/
ILW
H
HQ
H
WV
QW&
W&
%
Q
%
IL
DQ
H
VW
GD
H
/L
Q
%
HQ
V
HQG
HU
H
HS
ILW
%
HS
9
HU
'
QH
W'
HU
VV
LWV
9
%H
LV
OD
HI
VV
9
/
&
HQ
OD
HU
VV
VW
LWV
%
&
OD
9
HI
/L
&
V
V
QN
HQ
VW
ILW
/L
%
O DV
/L
LW
QH
&
V
HI
VW
%H
ILW
HQ
/L
QH
V
%
U ILW
VW
%H
9H
/L
ODVV
HQH
V
QW&
%
ILW
QGD
HQH
HSH
U
%
9H
/L VW'
DVV
HILWV
U
W&O
U
%HQ
9H
/LV
9H
O DVV
HILWV
O DVV
N&
%HQ
/L VW&
IL W/LQ
HILWV
HQH
9HU
U DVV
%HQ
/L VW%
W&O
9H
HILWV
GDQ
ODVV
%HQ
SHQ
QW&
'H
QGD
HILWV
HSH
U
%HQ
/L VW'
9H
HILWV
O DVV
U
U
%HQ
/L VW&
9H
9H
HILWV
O DVV
O DVV
%HQ
N&
/L VW&
L W/LQ
HILWV
QHI
%HQ
W%H
/LV
HILWV
%HQ
,
8
*
%HQHILWV'HSHQGDQW &O D VV9HU
%H QHILWV/LVW'HSHQGDQW&O DVV9HU
%HQHILWV/LVW&O DVV9HU %HQHILWV/LVW&O DVV9H U
%HQH ILWV%HQH ILW/LQN&O DVV9HU
%HQHILWV%HQHILW/LQN&O DVV9HU
%HQH ILWV%HQ HILW/LQN&O DVV9HU %HQH ILWV%HQ HILW/LQN&O DVV9HU U H 9
V V D
O &
W Q D G Q H S H '
W VL / VWL I H Q H %
%HQHILWV%HQHILW/LQN&O DVV9HU
U H 9
VV D
O &
W QDGQHSH '
VWL I H Q H %
U H 9
VV D
O &
W QDGQHSH '
VWL I H Q H %
U H 9
V V D
O &
W Q D G Q H S H '
VWL I H Q H %
%HQ
HILWV
/L VW%
%HQ
HQH
HILWV
ILW/
'H
LQN
SHQ
&O DVV
HILW
GDQ
V'
W&O
9H
HSH
DVV
U
QGD
9HU
HILWV
QW&
'H
ODVV
SHQ
9H
GDQ
HILW
U
W&O
V/L
DVV
VW'
%HQ
9HU
HSH
HILWV
QGD
/L VW&
QW&
O DVV
ODVV
HILWV
9
9H
/L VW&
HU
%HQ
U O DVV
HILWV
9H
%H
U
%H
QHIL
W/L
QH
QN&
ILW
ODVV
%
V
9H
HQ
%H
U HI
QH
%H
LWV
ILW
%
QH
/
HQ
%
ILW
L QN
HQ
V
HI
&
%
LW
HI
OD
HQ
/L
LWV
%H
VV
QN
HI
%
QH
9
LW
&
HQ
ILW
/L
OD
%H
HU
V
HI
QN
VV
QH
LW
/L
&
9
/L
VW
%H
ILW
OD
QN
%
HU
V
VV
QH
HQH
/L
&
9
ILW
VW
OD
%H
V
'
IL W/
VV
HU
QH
/L
HS
9
VW
LQ
ILW
%H
HQ
&
N
HU
V
QH
&
OD
GD
/L
O DV
VV
%
ILW
VW
QW
V
H
&
9
&
V
%H
O DV
Q
9
OD
HU
%
HIL
QH
VV
HU
V
HQ
9
9
ILW
WV
%
/
HU
H
HU
/
H
L QN
ILW
Q
LV
&
%
V
H
/
W%
H
IL
OD
Q
WV
VV
LV
%
H
H
9
/
W'
HQ
IL
Q
WV
LV
H
HU
%
H
ILW
/
W& HS
ILW
HQ
/
LV
H
%
V
OD
H
Q
LQ
%
W
H
ILW
V
G
&
N
%
Q
H
V
D
V
&
HIL
OD
Q
/
QW
9
% HQ
H
V
OD
WV
LV
IL
V
&
H
H
V
'
W
W
Q HIL
9
U
%
OD
V
/
%
H
LQ
V
H
9
WV
H
H
% HQ
S
V
IL
Q
U
N
H
H
H
H
WV '
H
&
QG
9
U
%
IL
Q
IL
/
OD
H
HU
W/
D
H
% HQ
WV
V
QW
IL
LV SH
LQ
V
/
H
%
H
WV
N
Q
W' Q
&
9
/ LV
OD
&
%
H
H ILWV
G
HU
IL
OD
Q
V
W& H
D
%
H
% LV
V
WV
V
H
S
Q
Q
H
W
9
V
%
/
W
H
IL
H
& OD
Q
H
%
Q
H
H
&
9
WV
Q
V
LV
I
OD
U
H
%
G
H
H
V
OD
H Q
U
W
ILW LWV
D
V
Q
%
H
H
/
% ILW
V
V
Q
9
% H
/
IL
Q
H
V
LV
V
W
H
/
%
WV
H
ILW
/ LV
Q
H
H
LQ
9
& 9
Q
W
%
U
H
IL
H
Q
OD
/
V
H
LV
%
H
H
W& '
WV
H
ILW N& U
Q
% %
H
V
U
H
ILW
LV
W
H
Q
/
%
H
V
I
/ /
& OD
S
OD
Q
LV
% %
LW
H H
W
H
V
I
LQ
H
H
LV
LW
OD
9
&
V
Q Q
H
V
W
ILW
V
H H
N
Q
Q
V
H
IL
/ /
W& & OD
V
& V
H H
V
Q Q
V
L
G
U
I
W
H
V
I
OD V
V
/
LW
V
L
OD 9
H H
I
LW
9 DQ
V
OD
W
H
I
LV
V
LW
V
/ /
V
9
I
V
V
LW
W
U
L
&
H
LW
W
V
V
V
V
V
W
9
L
& O
V V
U &
H
V
/ /
V
W
&
L
D
9
/
O
9
U
L
W
H
O
V
&
/ /
V
L
V
OD D
D
H
&
9
L
H
U
V
W
V
O
L
V
V
U
V
W
U
D
H
V
V
O
V
W
V
& &
W
D
V
W
V
U
&
O
9
V
V
& &
O
9
9
V
O
D D
H
O
9
V
D
H
O
V
H
9
U
D D
V
V
U
H
V
V
9
U
V
V
H
U
V V
H
U
9 9
U
9
9 9
H H
H
U
U
H H
U
U
U
%HQ
U H 9
VV D
O &
W QDGQHSH '
VWL I H Q H %
%HQ
U H 9
V V D
O &
W Q D G Q H S H '
VWL I H Q H %
%HQ
U H 9
V V D
O &
NQ
L /WL I H Q H %
W VL / VWL I H Q H %
U H 9
V V D
O &
W VL / VWL I H Q H %
%HQ
U H 9
V V D
O &
H H\ R
O S P(
W V
L / VWL I H Q H %
H%
I HQ
/ VWL
W VL
H%
DO &
I HQ
VV
9
/ VWL
U H
W VL
H%
DO &
L I HQ
VV
9
/ VW
H%
W VL
U H
DO &
I HQ
/ VWL
VV
9
W VL
H%
U H
DO &
L I HQ
VV
9
/ VW
U H
W VL
VDO &
V
9
H%
U H
I HQ
VWL
G$
P
$'
QL
2
DO &
(% '
VV
H%
9
L JQ
UH
I HQ
HQ
/ VWL
%
W VL
DO &
QH
VV
9
IH
%
U H
VWL
QH
/
L
%
IH
V
VWL
W
QH
/
O &
D
IH
VL
H%
VWL
VV
W
/
HQ
O &
9
%
D
VL
V
H
WLI
W
H
V
&
U
V
HQ
DO
L/
%
WLI
H9
H
VV
W V
&
V
U
/
HQ
O
9
VL
VD
H
WL I
H%
W
V
U
&
V
/
HQ
%
9
DO
VL
WLI
H
H
VV
W
V
%
Q
U
O &
L /
H
H9
VD
I
W V
QH
&
%
U
V
H
VWL
O
D
9
H
LI
H
%
/
Q
VV
VW
U
H
VL
H
9
I
/
Q
%
H
W
WL
H
&
U
VL
I
V
%
O
QH
W
/
D
&
VWL
H
VL
QH
%
VV
O
LI
/
W
H
VW
VD
&
H
VL
%
I
9
V
Q
O
/
W
D
VWL
H
H
%
&
V
VL
H
9
Q
U
/
O
V
H
D
W
%
H
&
LI
H
VL
Q
%
9
VW
H
U
VV
O
W
H
LI
H
Q
VD O &
H
%
/
VW
9
V
LI
H
Q
D
U
H
%
H
VW
V
VL
I
/
H
Q
9
V
U
%
WL
W
I
H
/
VL
V
H
H
%
&
WL
H
9
Q
W
V
%
U
VL
/
O
LI
Q
H
H
&
H
D
%
L
VW
W
/
Q
H
U
V
O
&
H
% %
V
I
L
D
Q
H
V
(
W
V
WL
I
H
% %
O
V
&
V
H H
Q
D
I
H
WL
P
W
% % %
V
V
Q Q
V
(
9
O
H
H
% %
I
WL
D
(
H H
V
S
V
P
WL
I
Q
H
H H
V
H H
9
O
Q Q
V
P ( (
H H
R
WL
V
I
H
Q Q
H
9
S
V
U
P
\
I
Q Q
H H
WL
S
(
O
I
H
R
P
H
H H
WL
9
I
U
V
(
S
H H
O
V
I
H
P
WL
\
WL
I
R
U
V
I
H
O
S
WL
I
I
P
H
(
V
R
&
\
V
WL
O
S
(
WL
H
WL
WL
U
\
R
V V
H
( /
S
O
P P
V
V
O
D
&
H
\
R
%
O
H
V
P L
R
% %
H
\
% %
O
H
S S
V
D
V
D
\
&
H
H
O
S
D D
V
Q
&
H
O
W
R
D D
H
O
9
V
R
O
% N
Q Q
& D
H
\
Q Q
O
R
H
\
&
V
D
O
D &
N
H H
\
N
9
N N
&
V
V
D
U
O
Q
H
H
H H
D
&
V
V
& O
& &
O
N
V
D
H
D
V
U
9
&
O
V
V
&
O
9
V
O
O
D
D
H
&
D
D
&
V
O
9 V
H
O
D D
V V
O
9
V
V
O
U
H
D
U
V
D
V
9
V
V V
V
H
9
V
V
V
U
H
V
U
V
V
H
9
9
9 9
U
9 9
H H
U
H H
9 9
H H
U
U
U
U
H
H
U
U
U
U
%
H
Q
H
I
LW
V
%
D
Q
N
&
OD
V
V
9
H
U
%
H
Q
H
I
LW
V
/
LV
W
&
%
H
Q
H
I
LW
V
/
LV
W
&
%
H
Q
H
I
LW
V
/
LV
W
&
%
H
Q
H
I
LW
V
/
LV
W
&
H
U
H
U
H
U
H
U
OD
V
V
9
OD
V
V
9
OD
V
V
9
OD
V
V
9
Figure 11, The Corporate Benefits Sample. Of 196
components in the client and middle tier, Coign locates 135 of the components on the middle tier rather
than the 187 components chosen by the programmer.
V H
F
LH
V V
W
Q
U
H
V H
H
L LW
F
\ H H \
H
W U
L
U S X U
U
U
W Q
V V
\
U
D RU T D
H
H H
U
H
H
H
S S
\ H X
Q UH H Q
L LW
OS
U S
D U
V H
W U
R R
L
3J 6 R
H
U
F
LR D RU T
Q H U U
H
WW
U
L
W
H H
R
+
Q U HH
W Q
L J 3 3
H
GD H LFH W
U
U H \
S S
O
U
LFVQ
W
W
\
R
J6
H
R
V
L 3
DV VK
U
OS
S Q L 'HU Q RH
F
\ H X
U R
W D
V H
H
U U
L VQSKS
'R
H U OS
U S T D
KDH H
XD V U
L
WU LW
FVG H
H
H 3 3
S SRS
W
L
LW WU
U
U
O
U
OS
D RU H Q
V
Q
L
D
R
+ HJH
6
R0 R H
R J R UD U D U
Q6H
QP
SQDV
R
'
U H
Q U H 6 LW DVKV K
ZU Z RO LW
O H
U
U U
H O LNLQ
'
HH3
S LHS\JH
+ R
D,
H S
RX R U U U 0
J
R
SS
LRXP
U WU
J3
RLH R Z 6 Z
FV
U OW
LW UR QGO
L 3
H3 3
J L J OHLI P
U U R0 HH
S R
U + O
HRQ
H%
U
\
W DH L SQSSRDU U
HW DW D LI W P
H\FFW
GLI WG W R&UR W R Z
S\ L LI J
6H W U R URH W O
8
U
U
G QWL
DRDU U
W O U [U W H[ \W RW
H
3
R
S
V
RH
I
G
W
Z ZO LW QH LQ
F
R
Q
W LW QR R
OS
U
L
W
W
U
' UU
W RW RRW W L RVS
L Q
H
U L
D U
H&
[ [
LQR L LQLQ
3
H
R 0 Q HRWULWH WU
JW OHP W W H
S DV UU U 0 J3JH
LL
Q(QPQG GL W
R
Q6
*
W \ HDHD RQH
Q H 3
D DL /RU L LQLQQWLILQ GW R R6 LN O%
S
X
&
6
,
'
'
\S
6 Q HQ
3 IL ILW H[P\RR
+
'
RR HW
S
1
, 7&6
O
R
GWU &
U
R HH3
31
R
R J VK
W
Q
RD D L
Q' RO LW&
W DW D
W HRW W
Q 6737
UW
3::
U R0
RO6
H OU W
RD LQLQQQPR , R
:
1
L R
6$
2&
H
1, 7
H
H LW VDVK SS
S\LI JW H
3
UU 3
O [U [ DRR Q
61
)3:
L U ( JWU&
LW RG LV WLR
&
UR6
Q
S
6
F
S
L
2
2
2
2
2
2
3
S
&
D
H
[
H
:
F
D
RR
W R&R6&
S
RDU
2
2
2
3
2
2
1
H H UWH \
+
O
L SQ
1, 7
2
22
F
H WUN
V
Q
1
2
222
2
22
/0RQ(
O
:
3
W HW H 73
DRDU U H LI JW O PR
2
W WU O
2
2
22
U O6
LW QF / H
U R/ QUP
22
H\
:
22
22
H
H
JL
\ RW RQ7673
L [P
2
2
&
LW
U 'R U UJ3
22
)2
RRXW (
H HR RD Q HO
22
P
R
QP
2
2
2
X
IL W H
, W RW
+ UUU 0
22
2
/R U E IL WU 6
U
UW \\\
2
222 3
V
3
Z HU
W DW D
61
T
U W R H 6&
22
&%
U U WD
3
)
R
2
2
WH &
2
U
WL
R
Q
V H
H
H
&
[
P
&
Q
U
R
Q
2
2
6
H
H
7
D
L
H
,2
% &
, 22
U QDDD V LI JW O [ DHD 1
LN
H
2
2
)/ RRRU/(
LW WU \U SRU W 6
2
2
UPQ HQ RZZ
1 222
2222
HRQQQ L R
L L [\
H 73
1
YR W
U H D U HW X H
RQNUP
2
2
RHVW W H
N
&
W HW 73
W R Z
2
2
L &
2
2
)
JX R WL
2
R WL LQ G
H S Q 3
L LW OL U FR Q76
2
2
RR
2
2
GW R Z
)
2
2
S R
Q LW W F)HL 1
8 F0
R DR \ V
, 2
2
DLQLQ Q GW R
H
2
2
O R(FF
' 22
22 )
DLQL
\U
R U LW VG Q\ D U R
$
L L F3
GW
LOH
U U 3
Z
3
2
2
\ E /L '
: DLQLQ
' 2
L SQXDD//
F
H
2
2
D H 3
)2 3
DLQLQ GRHU Z
LIS U
' R 2
U
:
H
D02
2
VK 'RU R0
2
3
R
H
Q J V
:
D
'
2
KSS U S \UO LE
W 7H
WP
3
2
2
LQ IL WGR
R
:
U
2
2
W RZ
LW D SS
OL 2
DU H3
RR 6
2
O
W H
3 RWLLQ
HOS
2
V Q RU U H
P\WR
& 2)2
DLQLQGILH
Z
22 :
W D71
F
+
L S DRUD
JLILJ [ R
DLQWL W R Z
U 3
2
2 1
6
O W
3
U
R LQ GW R U
:
R 3JW D
6
WH
U
2
2
R LV
W H&
3
'
D LQLQ G H Z
H
U 0
2
2
H
W D[U R
2
2
:
7 2
WU/
Q
IL W R
1
U H
2
U
LN
G
, 2
2
3 D LQWLLQ
O
W
UU HH3
W O [ DHD31
GW ZRQQ
2
2
R
R
2
2 :
LV RQ
3
7 2
D LQLQ GR
UU HH
2
U
:
+
LILIL JH[\WH73
RZ
1
/ 0
2
2
D LQ(&
2
2
3
LNH
\UHV H
WH 6
QJ
LILIL LWW R
:
2
2
2
L
2
3 /QNLQ X,'
Q
RQ VW
H
,7
2
2
2
HDQY LWW RR 1
2 :
F
WUHQJ
U
0 /L
H
G
2
G
1
R
HUU
8
Q
Q
2
2
H U G RR
LW $
,'LNHU
1
LN
6 UR
2
2
H
U
N H
Z LVW
LNH
2
2
F
RQ
V
LIRFLFL Q
W 1
2
X
H UL Q
L D
2 0
3 U RJ
QR/ 0RQ
RQ
N
2
2
H
3 0
TH
'D 2
LW
L H
H
L RL W R
Q 8
QN QJ
2
X,' 0
U
'
2 P
U
H GQ ILW 0
2
8 WUL
8
'LNHUU
6
,WH
HQ
H
R
R
H
U
G
1
R
2
2
6
RJ
LNH
S U W X H
N
RF 01
HU
L H
P
0UURJ,
HUU /LVW
2
2
RQ
\U
H
R
2 3
RQ LN
QLIL FL L Q
LN Q
U HWJXR WL V
W,2
HU
3 0
P 2
2
0 RQ
D
\
HR W RQ 8
2 P
RQ LNH
Z LVW RQLNLNHU
P0
Q 3
U RS\UO E0
W,
DR
8 H
\D/
0 RQ
,WH
1
Q
R
QR/
2
,WH P
L W VGQ
DP
2
LIL P
H
P0
DD/
VH
0 RQ
R
,WH
W 7
PQN QJ
F
X 0
H
W R
,WH 8
0
L
HUU
L SR
W,2
6 H
WUL X,'
\O E R
,WH
V H WU H
R H
,' LNH
& 2
2 6 HQ
'
L WU
UU 3
S OU RD 1
U RJ RQLN
HU
S
2
2 0
2
HU
3 U RJ
\W 7
U
RQ LN
HS R
2
0
U HW P
2
LN HUU
6
3
2 3
RW 6
0 RQ
K
2
H
R
P
[H
LIJH
U
2
RQ LN
0
P
&
VSSD
L W 7
3
2
,WH
U
2
0 RQ LNH
K
\U
,WH P
R U J W RQ
0 RQ
V SS
, 2
DQ HJD
,WH P
D
0
DUU 3
U D 1
HUU
2
,WH P
RU
R
QD
W[
2
LW VS
JD
,WH P 0 RQLN
3
3
LNH UU
F
H7
2
L RU 0
,WH
U D
W[
LNH
H
H
LVW
2
,WHP 0RQ
'
U 3
UH
3
0RQ
RQLN
2
,WHP
W O[\WH7
HJ
RZ Q/
U H
G
WHP 0
LVW
2
,,WHP
HU
O R
6 2
UH
QNQ
L H
QJ/
QLN U
WH
7 2
+ U H
LILIL W R
28 WUL
X 0R
Q
RQ LNH
, 2
26 HQ
0
\UHVLUY
1 2
HLIIL WW R 1
HUU
20U RJ,'
RJ,'
DQ LG
LW R 1 2
23 U 0 RQLN
HG R
$R 1 2
23 0RQLNH
NHUU
2
,WHP
RL W L D
W D
U HH
HP 0 RQL
QLNH
2
,W
H U LVW
UG
R FL F
Q '
,WHP0R
N
H
'
L Q
L ILFL Q
U HU
8
RZ Q/
2
,WHP 0 RQLN
WR 8
LVW
HUU
HF
N H
2
,WHPQNQ
L IR
QJ/
RQLN
HL Q
L W 01
QH
2
28 WUL
QLNH
R
H GR
R P
26 HQX
,' 0
XT
0R
U H U GR
FL 01
W,2
U
H
20U RJ
H
P
LNH U
H
Q8
23U RJ,'
N
L ILFL Q
L Q
6
W,2
0RQ LNH U
H
H
23
RW R 8
HP 0RQ
WL
QLNH
2
,W
H
NHU
1
VR \
O 0 2
,WHP 0R
RQL NHUU
P
2
,WHP
SU E
D7
R
W,
U
W 6
0 RQL
QLNH
P
H
,W HP0
LNH
R&
2
W
,WHP0R
VH
0RQ
R\D U H
2
,WHP
L WU H U W X
L IL W
HP
R\ D/
2
,W
R
SRU HJX
H
O
1
DQD / \U ED7 2
3
,WH
P0
QLNH
U
G
2
RW 6
\U
H
,WHP
0R
RQ
LNHU
2
V QX 0
\W 6
VH
S OP
,W
HP
L WU H DQR
L W FL SRUR3
2
R&
,WH
P0
0R
RQLNH
QLNHUU
S
'
U HW [H
2
VH
2
/ LVW
L WU H RU 3
7
2
K SDU H
2 8QNQ
6WULQ RZQ
J/LVW
L ILJWHW Q
SRU V
,
U
J DU R 1
2
2
0
HQ
X
3
SR 3
2
W [D3
2
3UR
J,'0
RQL
NHUU
U HJ VKSSDU
2
H7
JD
2
3UR
R QLNH
RUU3
DQD
2
U D
,WH
P 0J,'0
RQ LNHU
W [
\U D
3
2
V SR 0
H
QR
,WHP
0 RQL
NHU
O H7
2
LW F
U 3
,W
HP
L '
6
W [\W
2
U H
,WH
P0
0R
RQLNH
QLNHUU
H7
2
U H
,WH P 0 R QLNH U
L IJHW Q
, 2
U H
R1
L LW R
,WH
P0
U HG
2
U H
,WHP
0 RQ
RQLLNHU
NHU
L IILLWW R
O R+ U
1
2
,WHP
NHUU
H
HVL Y
L IL W
1
2
,W HP 0
0 RQL
R QLNH
\U
G $R
DQ R
2
D1
,W HP 0 R QLNH U
HG
W F
D'
RLF
L W'
,WH
P
0 RQ
HG
L Q
2
RF
,WH
P
RQ LNHU
LNHU
8
2
L Q
U HNLU H
,WH
P0
0
L IL W R
8
2
,WHP
0 RQ
RQLNHU
LNHU
Q
R 01
2
U HNU H
,WHP
0
RQ
LNHU
L
I
P
L
W R 1HW,
2 8QNQ RZQ
/L VW
HL GQ
2
RR
2
6WUL
QJ/LVW
P
FL 0
Q8
2
H QX
HW,
2
2 0
3UR
J,'0 R QLNH U
HUGH
LW Q
2
2 3 URJ ,'0 RQ LNHU
LRILF
R8
1
2
,WHP
U HN
L Q
0
W2
,
,WHP0R
H
ORE
DP
7
H
,WHP0RQLNH
\UP
R
W &
6
2
2
,WHP0RQLNH
U
HF QH XTH 6
H
WL VURH
S
R
,WHP0RQLNHU
U
1
2
,WHP0RQ
QLN
W XR\ D /
LH
OIL WER
D7
2
,WHP
HU
LNH
W XR\ D /
\U RW 6
2
,WHP0R
0RQLNH
U
J
0
S
H
O \WR 6
2
,WHP0 QLNHU
VH
L WU H SUR
UH3
D
GQ
QD
X
&
2
,WHP0 RQL
U
RQLNH U
R
UR
3
W P
[H
7
2
2
,WHP0R
\U DQ R
LW V
F
LS
'
U
Q
,
,WHP0RQ
Q NH U
UH
H
LJ
IL H
WWR
1
2
,W HP0
0R LNH
U
VH
L WU H SR
U 3
K SD
U JD
U D3
2
,WHP
Q LNH
U
LNHU
RQLN
VSR
U 3
W [ H7
2
,WHP0R
HU
VH
L W U HS R
U 3
V
KS
SR
D
JD
D3
2
,WHP0RQLNH
UU0
3
WOU[
7
2
28 0
QLNHU
RQL
U HJD
\WH
2
26QNQ
U
NH U
VQ
SD
R
U 3
H
W[
H6
7
2
20WUL
RZ
Q/
\U D QR
LW F
L '
UU H
,1
2
23 HQQJ/LVW
LVW
H
LJ
IL H
WWRQ
2
23URJX
UU H
LLIILLWW R
1
2
28U
,'0
R
1
26 RJ,' 0R
RQL
UL H
H
L IG
L W$
R
1
D2
2
20 QNQ
UL QJRZQ/L
NHU
QLN
U HG
O R+
H
V
Y
D
W
'
26 WHQX
/LV
\U D QR
LW F
L '
2
2&WDQ
VW HU
H GRF
L Q8
2
2) RQ GDU W
H GRF
L Q8
2
2 RU WURO G0
2 2/ P 6L6LWH HQX
2
1
WH
2 & (& RQWU
W,2
H
L IL W R
P
2
)
RQ
U H
0
RO
HW,
R
1
2 1
+H
Q
P
L IL W R
2 &RU WUR
OS HU
U HNLU H
2
RFL0
Q8
2) RW P6O6
L QR
2
2 2 RQLIL
HU LWHLWH
U HN
L Q8
W2
WUR
1
HG
RIF
2 ) RU
H,
/(
P
HUGH
L LW R
2 8RU
0P
6O6
2
2 ) QN
D7
P& L WHLWH
L QR
2
6
O UER
2 1RU
%RQ
U HN H
2
QR
\ WR &
2 & RW
P
DF
2
SILP
2 ) RQ
R1
LILH ZQWUR
2
L O WE
2 2RU
NGO +
WL VURH
D7
2
H
WURU
2
2 ) /(
/L UR
W 6
H
R
P
H6
/
T
U
6
HO
D
\
X
W
8
VW
\ &
6O6
H
2
RU
S SH
H
R\\ D/
2
W XX
OP
2 ) QNP&RQ
L
RQD 0
R 7
& U
HF Q
2
W JD
)L $ RU QR
% WHLWH
RQ
RSW [H
, 2
2
2 O H0
W Q
FW P ZDFWU
U H3
WUR
GQX U 3
JH
2 7
LY
RO
W RD1
U VLSR
2
NG
UUH
2
2
'
L ILD
O
H
SR
2RRRQH Q/L
+
7
U H3
2 1
UR
LW F
L WU H DQR
2
/(OE LNH
6H
UJ
3
HOS
VH
DU
W [
2 & RW
VW
3
SR
S
U D
2
\U
KS
2 ) RQ
V
JD
OH
H7
LIL&DU'
[\
2
& HU
U 3
SDU
3WH
W 6
2 2RU
FW
SR
KS
HU RQU
2
RQ
V
WUR
RU 0
WO [
2 ) /(
H7
RF L RQ
L WU HHSR
U 3
2
,1
2
2
VH
Q
WUR
JH
8 RU P6O6 WUR
WR
DQDRU 3
2
2 )
N
& L LWH O +
L WU
QN
P
O
VH
U HJ VFLS '
UU H
2
2
H
L IL W
RU
WH
1
0
%RQ
QR
LW
2
2 $
HO
P
QR
WR 1
2
ZDFWUR
'
SH
\U D
1
&S'
L ILILW R
2
2 )
Q NGO +
RD
W D
U
L LW $
UH
,
) $
2
/L UR HO
2
R SOL
UH
2
LO
LI
L '
8
VW S SH
H
2 2
Q FD
H FRUP
8 2
YGLW LFQ
U
2 &
& U
0WLY WUR
Q H
W,2
VL QR
2
RQ
RFFL R 1
WL
P
) / R H6
H
2 1
+H
1
W, 2
R
U D
WUR
HG
GRLIL W 0
2 5
Q 6O
RRQ(&
2
RW R P
O R \ HU H
G
2
LN LW6 Q
O
8
5 RWL
UP
2
2 1
L ILR 0
8
H
LU Q
2
UH
XO IL WUR RHHHLWH:
N
H
W,
LL Q
Q 1
Q
*
H
F
D
U
2
2
6
OH
P
2
H
Q
U
LQ
NL GR
2 & DRWL
Q U H O6 W
RF
WR
07
2
F
ILR
2
2 )
G
U HH
LQ
/ OOH
ILJH U LWH LWUR WL
2
HG
2
W 6
R
ED
&
ULH
R
& RR (
H
H O +R
2
2 )
O\U
R 1
2
Z
N H
Q
Q &
\ U0
2
P
UP
2
2
1 R
RQ
U H
WR 7
WU
/
6
2
,W 2
H
6
L ILO ED
WW6
RS
R RQD RX
H
R
2
R UP
OS
&
,W,WHHP FU
WU 6
O WU\ V
2
O \
WL V U /
H\UH
R 7
2
/ WLIL 6
R LW
H
6
P
,W,W HP
R H
P 0(ROO
H \DD/
, 2
U
HQ
H LO6H LW R
X +
\ D0
2
2
,W2HHP
H 6 RR
RS W [H
W 1
3
U WHLW H O +
0 R&ED
W
2
,W H3
P 0
XDQQX
XT W WXJ
J W RDH73
DQ
H
3
0 R QL R
2
,W,W H PU 0
2
H
QH
HLIL DU [ D 7
QU&
G
NH
3
OS
G
UH
2
,W,W HHP
P0
2
RU
U HW 6
R RRQQ
W
HF
U
JW D
UU H
7
OH
R
S'
2
,W,W HHP
P 0
U URR
HU
JR
LN
, 2
\ Q
J W[
VF
DU 3
Q
HS
U
,W HP
0 R, QQL LN H
O +
L
O [H
1
P 0
H
2
W R1
SRUDU 3
WU
1
2
,W,W HHP
NH
D'
L WU
0 RR Q'LN
S
3
W JLH
W RR 1
LW K
U0
0
U
2
,W,W HHP
HRO
VH
P 0
2
VKS R
W'
HHUU
QR 3
LIL IL W
OS
0 RRQQQLNLN0
2
L W RD
,W,W HHP
S D U U HH
P 0
W, 2
8
D R
U
U
3
L IILW $
L Q8
H
,W HH P
UU H
H
VDQSR'
H
0 RRRQQ L LN HHU R
L GLW F
Q 1
P
P 0
0
U
W, ))
,W , H P
\U S RU
U H
H
LNN H
Q
L
0 RR QQL LN
R FLFL W R0 1
J VF
)
,W,WHHWH P
UL Y
H U
H
0
RR IL
OLOL L a2
R P
0
LNN HH UU
LN
,W,WHH
VDQGG
P 0
U HS U H R
RRQQQLN
LW
H
L
W
R
R
W
O
2
,
H
&
H
P
H
)
,W
H
U
L WU
R Q LN H U
H
Q
P
H
00 HR IL
+U HH U L QH
,W WHH P
P
2
0 RRQQQ LNLN
L
D
0 $1
OL 2
H UU
V H
,W,W H P
U
N L RR 0
0
R \
2
2
H6
2
,W,WHHHH P
P 0
0
H U
*
LNLN HH U
V
O
\U
G
2
, H
0
Q QQRRH W FR0
P 0
R Q LN HH U
U
2
2
P
Z )8
2
2
H
WH P
P
L W
) 2
2
0 RRRQQ LN HH UU U
L N
LL Q
0
U
N
2
2
P
2
2
0
L ,W HYIL RL U RQR/2)
R Q
H UU
2
2
3P
&
0
H H NN
7
0
W PNU
2
2
L QF
1 2
1
RR QQ L LN
22
22
0
U
0
H Q H
2
U UUH
6 L K QP(URRRD*
RR Q L L N
2
2
UW V6U N
2
2
2
2
51 RHUR0 RRR QQQ L LNNNHHH
W )8
R &
22
PQWO D
)
22
D H HD Z
R
U
)7
Q
L N H
2
2
2
% UW IL H
O Q RQR 2)&
UE
2
22
QH
O
)&12U HD RWLWL[WJR QQQ L LNLNN HH U UU
2)2
L
U
2
22
RH
RR 1
)75
)2
O
,
22
Q DR 6
,'
Q L L LNN HHH U U
F
2
\ G PNU /
H
L
2
2
6)8
W W,W, W, , , , ,
RR/D[Q ILILH.
F QWL6
(U Q R/UH 1
1
HLW F /
O U9
D
QP
O H
2
222
*
R/R
LNNNHHH U UU
W W WW ,, ,, ,
W
HHHH
2
P W D
DR 73H
)2
)R
9 L NUW H
22
WW WW W , , ,, ,, ,,
161)& W RQU U QWLI (P J H U H0
H
R &
2
2
U
[Q
W IL (
RHU 0 $P
HHHH
2
2
2
2
2
L GU
11
V GR WL H
P
L
P
P
, , , , , 22
1
W W WW WW WW ,, ,, ,, ,,,2
HHHHH
W 6H U \ H U U U
RRDDU N (P
U Q
UL P
LO &
Z%
P
W W
H
H Z
R
P
R
W RUO
F
HHHHHHH W W W W W W W W W W W W W W
P
P
) 2 RRWR R U QO QPQP URLH&HH
6RH
P
& JIL ILWW[
15
9
P
P
HHHHHHHHH HHHHH H$51
ERU
Z
P
0
P
P
PP
O
0
0
RR
L L JR W 0
W
&
6
Q DRL O U H6HH
S+
0
P
P
P
P
P
PP
1
)&)&2*
0
L
H., Q Y
L
0
0
RQ
P
P
P
P
P
P
PP
3P
26
0 RRR/W W W WL U LI P
W HG R% 6O U R OH
H
W 6 R H
0
P
P
P
P
F QH
H
)
0
0
R
0
0
D FXW U Q(
00
&
Z
DLN
/NU
W L
Q O 6U U H '
LI LI LI I \ LH UR\D ZDRL 6 Q FH
O
L
S
HQRRRRRRR
0
0
0
FRRRRR/ DR
WO
0
0
00
U
N
0
0
0
0
0
0
00
W
OL
/U
W W H
6 U
W
RRRRR
U H
L GR H
RH
0
0
0
0
L L LHLH
H
H
R0
U Q( OO WLI QRLYHLIL PWU &
V
\0
L QQQQQQQQ
U QP
U FH
9 QFQHLW WU W
G
R RRRR
WP
QU
UO
HL JQHU H R HH U / U L O6
R
6
L
(
G
W
W
R
E
Q
Q
L
R
L
L
L
W
N
U
U
R
R
R
Q
Q
H
+
W
NNNL L L L
R
R+
RRRRRRRR RJRRRRR
WH LH /NU
W U
W
HHL
6 U UU D
UW
L L L L L Q QQQQQQQQ
L
O Q
HHHHHNN
RR
NNN
LI R
U
S
O R
9 GR
R
QQQQQQQ Q, QQQQQ OO H
R& \
N U O R
LW Z
NN L
+
+
\
DQ
&E L LL L L L L
U H6 L 6Q
O U U U U HHHHHHHNNN N
'
66
D
Q
O
O H
H L LVU O
H
W
L
NNNNNN L L L L L L L L
HH
U
&
U U UU
R / 0
R
Q
UN
H
H
H W R+
S
U U U U U H HHHHHHH NNNNNNNN LN LNLNLNLNLNR D L O LW O
G
H
F
D UH
LW WU
X
H
O
RH
U
HHHHHHHH H0
Z SH
G
S
R O
OS
HHHHHQ U W
U
H6H6Q
U UU UU UU
HR
QU
H
OH
+
\
W
LW
UU UU UU UU
&
H
OS
R
& LW LW W
U RU U U U U W O
U
R X F
H
U
U
D
+
UW
Q
U R H
HR
X V W
U
R
Q
Q
R
RH
H L
O
O
R
G
W
QU
H
L
O Q
Q
N
+
O
W
H
OS
+
+
W
H
U
U
H
U
R
D
HR
H
U
O
O
Q
S
U
OS O
G
H
H
O
U
H
U
U
In the original distribution, chosen by a programmer,
187 of 196 components are located in the middle tier.
The programmer’s distribution is a result of two design
choices. 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++.
Coign analysis shows that application performance can
be improved by moving some of the business-logic components from the middle tier into the client. The distribution chosen by Coign is quite surprising. Of 196 components in the client and middle tier, Coign would locate
just 135 on the middle tier. It would be extremely awkward for the programmer to create the distribution chosen
by Coign because it runs counter to the programmer’s
logical separation of the application. The Corporate
Benefits Sample demonstrates that Coign can improve the
distribution of applications designed by experienced client-server programmers.
H
J RZ RZRZHU Z
UDLOH W GQWGW GLIL W GRW
WRF) DLQLQDLLQDLQLQRWDLQLQDLQ
3:3:13:
6R 3:
3
' 2222222222
Figure 12, Octarine with a Multi-page Table.
Coign locates only a single component on the server
for a document containing five-page table.
Figure 11 plots the distribution for the Corporate Benefits Sample. As shipped, Benefits can be distributed as
either a 2-tier or a 3-tier client-server application. In the
2-tier scenario, the Visual Basic front-end and the business-logic components are located on the client while the
database is located on the server and accessed through
ODBC [9]. In the 3-tier scenario, the Visual Basic frontend is located on the client, the business-logic components are located on the middle tier, and the database is
located 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.
9
5.2 Changing Scenarios and Distributions
The results 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. 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.
The merits of a distribution customized to a particular
usage pattern are not merely theoretical. Figure 12 plots
the optimized distribution for Octarine loading a document containing a single, 5-page table. For this scenario,
Octarine places only a single component out of 480 in the
application on the server. The results are comparable to
those of Octarine loading a document containing strictly
text, see Figure 10. 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
13, Coign places over 282 component on the server out of
786 created in the scenario. 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 most likely be forced to optimize the application
V H
VV
H
F
L
V
W
VH
LH LH
Q
W
U
W
H
V
V
U U \ H H\
VV
LH F
WL
H
WU Q
LH LH
H
HH U S XU
U
H
\
F
LW LW
U
\
UW
UW
H
H
S S D RU T D
V H
U
U
Q
U U \
D S
H U\ H
F
U H
R Q UH H Q
H
H
DU
R
H
SX
LW Q
V V
HH
U U R3
SD S
QU R
X
LRW
RUT
QH
H
6W
SS D
OG
H
U H \
VV
RHU
H
3L J LW LW
U
Q UH
3
T
R
UR Q URU
V
U
U RR
L J
V W
R
WL J 3
H X
U R 3
LH LH
VGD H LFH W
HW W H
U U \
W D
H
H
LR J
U S T D
LW J6
K LFS
HU
K
\Q
U
H
U\
UW UW
HU
LFVDVK
3W 3
F
QQ LW '
\+
WL
HH
SS '
D UH Q
XX 6
DH
L VQV
J 33
VK
F
\
UH
OG
H
SQS
D
HH \ U
F
LFVGD
S S QR
R
KD
U
UH
V
SDS S
RXD V U
H H
L VG
W
RR LW
RD U
'
S SS
Q
HH
Q
V
L
D
R
D
K
Q
H
N
D
V
R
R
Q U SS U H
R
U
U
'
6
K
S
R
D
U
SQQ\\ LWH U
U
R
U
D
R 6
LU
R0
L U UU UUU UD RD '
H
R H UR R D S
U U R
L 3J
QS SS 'RXDV UUUR
U U U UH3
F
H Q
PV
XDDD V H
H
U0
JQHGGQY
\+
LV
U U U UU UR
H HHH
U Q R
Q H
X
3
LHS\J
U
WL J
3 W GDH
JLH S I
RDUU U U R0
S DRS
0
R H
J
D
S
WL
3
XP
,
R IL ILH
L L 3
R/
UR N HH UH
D IL RR
R
LR
J 3 HH
3 3 R UH
O
HH3
3
T
LP
U OHW
LW J 3
FVQQ
UD
W D
LFVD
U
'
W DLIJW P
LU D
UR
L LFLFWL G
L L LI LI J
/
L 3
OHW
S0
U
S S\LILI JWH
UU3
H3
H%
W OHWD W J
H
V V WL 3
R
H
H
H\ FW
VKVK L S
D
D
V
H
W
W
JW W H
0
8
I
U
U
W
H
[
G
LV
L
L
G
J
O
W
W
W
S
J
H
U
U
[
R
D
\
3
R
$
U
L
L
L
H
Q
H
\RRWW W LFR S W 0
[ [U [UWL W OHU O LI \OH L R Q
'SQ
H
W RW
J IIL JW H
U W W H[\[
SK
F
S '
S K LFVGDXX6
OP
RQQ
LFDRR
LV
QSSS
RX R HH
+
RRWHW\H
V*
RY UU UUUURD
S
[P EW PU RLIF R
V
L W H[P
O
HDR
RS
S
W DWD
Q
L 3
W OH
R W HW H D
D HDRWH
DU UUU R0
RS'SQQRRH
O
\
QH 1
S\
DRDR
W 11
E WL LFWL G ILH
UUD
R\
&
6
,
6
'
'
\S
6P
1
8
8
'
HRW\WR
LHLH
U '
UUD
U
WRW RRQ
R
[U [U WRRW H
, 7&
6 1
1
,Q 7
LHH
\
LH V
731
U UU U HH
H
DR
H3
RWR
R
UILW J
3
UUURXD\
6
WS H
,7
30
H
U\
[ \
1
,Q7
D0
3
D Q &
R
H D 76
1
1
373
QQLF$ WLWLIWLIWLI J
3
OP
H
UW UWLH
JLILI J
&
3
UW \\\
HDH
DUU U 0
&
6
7
J
DDVLW
6
$
W
6
6
J
6
J
3
W
H
R
W
7
1
U
D
+
R
W
H
H
,
7
1
0
L
&
6
D
L
3 //U
OG
7
L W H[P
WD
31
U
\RWR H 6
[ O[W DW D
UU DW
QHH3
P
2
2
2
2
2
2
2
,2
2
2
2
'
2
RRRWH
7
2
2
2
2
2
2
2
2
W R
73
Q U SH H \
U Q
2
2
2
2
2
2
H
HR
1
Q
2
2
2
2
2
2
U[UWLI JW S
R
L WH
RW 6
U
H
8
2
2
2
2
DQV R
D
U
OW[D
U [UWRR
WH
1
,7 8
'
2
2
2
2
2
2
2
2
LS
HR
D1
QHW\
2
2
2
2
HDHDR
U H H
&
[P
OH
6
V
Q RL LWILWJ
2
2
2
2
+
WLRJH UR RS D
1
1
U\OH
LN HH U\
Q
HD 1
2
2
1
WH
[\
&
2
,76
LI
H N
Q
2
2
,W2
H
2
2
2
2
HR
H N
, 7
W HD 73
LH
LWH
QHUG
1
DH
R
22
'
3
73
LFVD
UG
7
WH
2
REWP U\
3 U Q
OLV
H
GL Q&
R
2
2
Q7
W\
U
L
F
G
L
1
R
2
2
2
2
O
U UH H
L
3
2
,
W
V V
UW
U
L
R
Q
R
2
2
D
R
LV
HN
7
L QH
&
2
2
R (
WW F
6 R E IL RRY UUU 'SQ
3WLR
Q
H 1
LIR
2
2
SK
2
2
H N
,7
FH
UG
6
H
WR
SH
GQ
2
2
2
2
HH UU URD
F
2
2
2
SK V
LI R
L L)
D0WLLF
6
LFWL GILIL
L FFR /
LF
7
F3'
2
Q
1
2
LH
22
2
L UL Q
H
&
Q
URS
R S LF
RR
HHN
UR
U
'
2
2
2
QLF$
LW WL LQ
U
LIR
2
PR
6
WLWL I ILHH
'
3
7
S
'
0UD
UD '
2
XH
RQ0
2
22
2
QH
LR
R 2
2
2
H1
U H U GG
L FF 0
R
RRWLWL J
JH
H
2
W W3
J3U UUU
W
T
2
8
R
R01
8
WDR
O 2
G3
'2
2
H
RILW W L LQ
8
2
,W2 8
H N
'
RWH
[OH
XXW H
H
L
LRF
U
P
[ DW J
QQD
L )2
RQ P
2
2
D1
1
1
0
2
ILJH3 XD
W\
QH
HN
L U Q ILWF
1
R
2
HDU[UD
U HH
\R
L LQ
0
8 H
8
1
\RH6
2
'
,7
W
R DD
1
W,2
LIR R
2
2
HDRWL [
2
GQH
H N
P
2
HU
H
6
S0
LU G
W, 2
1
LW 0 Q 8
7
WH
U
RR
2
V
P
/U VLW U
N
H
3
/
2
H
H P
LU H
7
OG
U\
QH
LR
2
2
F
U H HHG
H V
8
2
2
Q
OH
\
F
W
3
R
H
1
IL L L 0
R H
2
1
U OH
R
D
QLILR
,2
2
,7 R
H N
U GR
W, 2
IL S
2
UWL H
W Q
P
W\
LN
Q 1
EWLP
QU
UH
RW 0
2
WR
U\+
U
2
2
H UWL
&
Q
H
U\
H
H
HN
L ULHQ
P
DR
OH
2
2
G
LR F
H
6
W,2
8
2
DH
RIL
G
WLR H SSH
U H H
R R1
8
R
6
R
H
2
L ILWF
LL Q
0
Q
GQ
WR
LV
7
W, 2
2
R
G
1
P
DE
WLLF
UU
N
LF
HU
2
0
YH
Q P
2
R
V J UR
RRILR
1
LU H
&
R
R
W
H
2
6
R
LF
G
U
N
2
2
Q
WL
UR
U
F
0
7
H
SQD
8
W, 2
V
HL H
QLI FL 0
ILIL H UU'D
R 1
8 H
2
Q
2
HP
1
LF$WLWL
HH
SK3
W2
V
2
L L Q 1
8
IL H UR S
GQLIR
V
P
2
,W2
8
G
WDR
N
SK3
3
RRLW W RQ
R WL ILJH
LU H
H
'
P
UR S
2,
2
U\ WLH
0
8
2
8
H W,2
UR
HU
QL RF 0
2 D1 RRWL W 3UD
U
RP
1
WH
QD S
IL F
W,2
'
[ OH
HNU
0
J UD
1
1
LL Q
R
2
QH
2
WLR UR
FH
2
2
[UW
DW3
1
J
1
W\
U
U
HL Q
,
2
LFV
P
LIL W0
H
H
H
RQ 8
W,2
7
[UD
HQ
3
GRH
U HNU
2
U
D
JH
6
W
G
2
R
H
H
8
W,2
7
QG
HNUL H
1
2
LH U'S
D
QD
H
FL W0
RXXW HTX
R P
2
3
2
OL
QLIR
7
JHSUR
2
RXD
HL Q
LQ
H
1
3 RWLI
D\\R 6
LF
H
U
Q P
2
2
LILR
)
H
[W3
0
GR
W,2
2
1
QWH
//D LWH
8
R W0
2
U HNH
R 8
,
OH
RP
H
2
U\H
P
W,2
7
FL W0
W\
HNULU G
R P
1
2
H
R
U
&
LR
WR
2
EOLILHU
SRV
U
2
2
U
Q
6
ILF
D
HL H
1
QP
2
6
RW
NH
U
H
H
GH
WLR
W,2
2
QR
)H
GR
7
QLR
Q
RPU\
ILR
8
2
U
OH
U HNU G
1
H
W,2
2
RQL
WR
01
8
WR
LW F
&
U\
LH
GHDU\+RO
RF
2
DEWLI
H UL H
V
R
2
2
6
2
Z
01
F Q UUH
P
RGH
Q VH
QL I FL Q
QD
7
HN
L H
R
LF
P0
2
H
WLH V
H
H
Q
LF
2
L
L ILRLWLR
Q8
P
U
OD
W,2
WLR
WLR HU
WUV
L QR
Q
1
GYL
N
,WH
O R
HN
LN
8
9
H
LF
LH
H
8
U 'LF
SHU WLH
2
QR
WR
01
W,2
HU
8
UW
Q
D$
2
WLILIL
6
'
LH
2
2
2
SVDJ UR SHU
,LW Q
H
R
HUU
Q
R 0
P
OE
U HU
DW
2
WLILIL
RW
DQ
UQ
R&
1
UR
3 UR
SV
H
H
R
R
0
2
'
1
H
P
JH
H
K
W
0
1
RW
H
3
H
UR
,
2
S
0
DN
O HSR
L L ILY
L *
1
WV
W, 2
DSSV3
0H
2
1 WH
[WOH3
OOLH
K
2
L /
QRWW F
H
RH
JU URSK
+
)
2
W\
OU G
OLL )
WL R $
2,Q
7
H[WD
O R
UD
&
NFQ Z F
6
RUW
W3
)
2
1
UW
7 DU
0
DU\
a
2
2
LHV
D
Z
DJ
RQP
H[
H
2
H
WLRQ
R%
WL H
WQ
6
DU LHU 'LF
R&
UQ
P
2
23
7
ZL Z
R)
OL )
NUQ
H
URSHUW
6
V
3 RWLIJHU
LO 6
S
&
2
G3WHU
UR
O HSR
URSQDJ
W LH
L 9
(
8
2
2
9
R
P
2
H
QWH
H
/2
21
SRXQ
U
)
[W3
U\H
H
+
LUIWL WQ
2
2,
R
OUV
/
\RX W HTXHQF
RP
UH
GN
GU D
2
)
R
27
W\OH 0D
/D
H
R
OO D
S
UW FQ
R
2
2&
/D\RX
GQ
OH
&
Z
2
26 WRU\
D
LWH6
1
LHU
Q
DEOH
R
P
D
%
*
UH
2
26
+
QNU R
W 6 2
RWLI
SRV
WL H
WL R &
O RH
27
O G
RP
P
2
21
U
6
)
6
Q8
O R
2
WRU\
QR
(
UR
2&
QD
QLNH
DEOH
LW UW QR
/2
2
26
UW P
)
HU
UH
0R
2
UR
27
GH
+
RWLIL
G
WFH
H
2
,WHP
U
O6H H
&
)
L FR
OGHU
R&
L I(
L WQR
\
RGH
2
21 Q
UD
HN
QDUH+R
H
QLFGYLV
2
28
L R
6
/2
QR
1
WP
2
28 LFWLR
U
LHU
LW F Q
RE\ UU H
[D
D$
)
DU\
LJ
2
2'
H7
2
RWLI
LHU
IL WQ
D
'DW
0
LH
LHUU 'LFWLRQ
H'
H
O U
RWLI
2
21
5
.
R1
WR
2
RWLI
WIL [
HH
HU SHUWLHV
UH
,
21
U SV
N
L Q
RWLILH
JH
6
U
2
21
J
1
QDJ
H
3UR
R
H
N
QWH
V
2
21
HY
0D
R U3
3UR SHUWLHV
7
N
H[W
UU H
LL Q
2
2,
HN
Q
URS
SK
0
2
W\OH
RL W F
27
\
SV 3UR
H
[W3
JUD
N
R
H
UU H
LL Q
2
26
HN
QR
0$
SK
3UR
OL )
DUD
0
27
WLRQDU HUWLHV
P
JUD
N
R 0
H[W
LL Q
23
QR
P
H
U 'LF
W,2
DUD
URS
V
0P
H
27
WLILH
P
W
JHU
R 0
R
G3
,
23
H
URS
3RXQ
QWH
HWW,,
0P
21
P
U HN
H[W
2,
H
RPS
L QR
U
H
27
HN
WW,
H
0P
2&
QR
N
LL Q
UU H
R 0
HW,,
N
26W\OH0
DQDJW HU
0P
HN
P
QR
H
LL Q
W,
R 0
UU H
26WRU\/
D\RX
H
27DE
OH/D
N
0P
P
HN
QR
H
WW,,
LL Q
R 0
2
1RWLILH
U \RX W
UU H
H
2
&RP
N
0P
P
QR
H
HN
WW,,
N
2
6WRU\SR VL WH6H TX HQ FH
UU H
LL Q
H
0P
27DEOH
R 0
QR
H
HN
WW,,
UU H
N
,WHP 0 RQ LNHU
LL Q
P
0P
H
R 0
U
21RWL
ILH U
H
HN
WW,,
2 8Q LFRGH
LL Q
P
U
QR
0P
H
H
R 0
UH
2
8QL
FR GH
N
H
WW,,
QR
2'L
FWLRQ
DU\
N
R
LL Q
P
0P
HW
HN
UU H
'DWD$
GYLVH+ROG
HU
N
0
QR
H
LL Q
R 0
W,,
P
2
1R
ILHU
H
HN
2
1R WL
WL
P
0P
L Q
UU H
H
WW,,,
21R
WLILHU
ILHU
R 0
H
U
N
W
L Q
2
1RWLI
LHU
H
R
N
L
P
U
QR 0
H
HN
0P
U H
2
,
QWH JHU'L
FWL RQ DU\
QR
H
N
LL Q
R 0
WW,
U HN
U
P
,,
2
7H[
W3URS
HN
H
2
6W\OH0
DQV
DJ HU
L QR
U
P
0P
QR
H
H
WW,
N
,
27H[
W3URSV
LL '
H
0P
0
Q
W
N
23DUDJ
UDSK 3URS HUWL HV
UH
,R
H
W
0
JR
,
27H[ W3URSV
UH
P
Q
U 3
U HS
R
U
W,
N
LLL Q
23DUD
JUDS K3URS HUWL HV
H
0
HN
2
21RWL ILHU
R
H +
UH
P
QR
0
H
OO R
O RUW
N
L Q
2,QWH
JHU'LFWLR
QDU\
U
P
UW Q
0
HN
H
R 0
WW,
P
,,
27H[
W3URS
V
L Q
R&
Q
H
W
R
2&RP
SRXQ
G3URS
P
U
R(0
H
W
,
26W\O H0
DQDJ
HU HUWL H V
D
P
E
O&
/2
W
H
,
26WRU\/
D\RX
WW
H
W L U6
LO IR
F6
27DE OH/D
\RX
L WU
H
2
P
2
21RWL
UR
1
R)
2
2&RPILHU
SRVLWH 6HTX HQFH
2
26WRU\
H
WL 6
R
Q
2
2 7 DEO H
WLOO 6
UUWW P
UR
R&
)
,WHP
HWL H
6
R
Q
R
&
2
21 0R
U HS
O H W+
OX R
R
U\
WD
Q/
R
&
(
/
2
2
28
RWLI
QLN
\H
OO D *
2
28QLFR
HU
H
LJ
IL Q
W D
R5
1
2
2
2'
QLFLHU
GH
U H
O GQD +
HV X RU 0
UN
H
'DW
RGH
LFWLR
Q
0H
)
21
QDU
QR
LW F H
O HH
6
LH
Y
LR
WO F
OL 2
21D$G
RWLIL
YLVH
U
X$
5
2
21
RWLILHU
HU \
+ROGH
L ILH
WU R
21
R
HWL U6
H
P
R1
)
2
2
2,QWH
RWLILH
WLILH U
U
H
L Q
6
R
O R
UW (
Q/
R2
&
2
2
27
U HS
O H+
O R
UWW
&
26
JHUU
UU H
LLIILLWW R
2
27H[W
W\OH
'LFWLR
H
R1
1
2
23
H[W3UR
0D
SV
UU H
LLIILLWW R
1
2
27DUD
QDU\
3UR
QDJ
H
R
1
2
23
H[W
J
UDS
HU
W X R\ D/ \U R
W 6
2
21DUD 3UR SV
K3URS
RWLI JUD SV
L ILP
WU R
1
2
2
2,Q
HW6
LOU6
H
R)
27 WHJLHU
SK3UR
HUWL
HWLH
R
UWH
R
&
2
2
2&
H[W3
HU'
D
\
OQD
D
*
26 R
SHU HV
PS
ZH
L Z
9
L G
U9
GOQ
2
26
URSLFWLR
W\OH
RX
P
U WR6
)
2
27
V
QDU\ WLHV
WRU\
QG
0D
V
LG
/N
F
QD
Z%
R
N
2
21DEO
/D \RX
3URSHU
O R
UW Q R &
SWR
U
QP
UQ
R8
)
2
2&
QDJ
RWLIH
/D\
U HS
O H+
O R
UW Q
&
2
26 RP
LHU
HWLR 6
(
P
U/R2
)
2
27
WLHV
RXWWHU
WRU\SRV
H
WL 6
OU R
ULWIL W
QR
R1
&
2
2
,WH
DEO
LWH6HT
P0
H
21
H
U HS
O H+
O R
UW QR
&
(
/
2
28
RQLN
RWLI
XHQF
H
UH2
)
28
QLF
LHU HU
QR
L WWFH
H
O6
HH
6
J
WP
[D
2
2
2'
QLF
RGH
H
Q
D7
5
2
'D
LFWLR
RGH
2
WD$
2
1
QDU\
1
GYL
21
2
L IL WW R
2
2
1
VH+
RWLI
U H
R
7
L
2
2
H
1
I
ROGH
LW [
H
R LH
2 1RW
UHH
WW,,
U 3
.
U
P
JR0
27
,Q R WLI
U
,R
H
2
LILLH
WW,,
RE\0
N
H
0P
Q
P
WLI
LL'
WH
HUU
6H[
27
QR
H
2
LH
GU LDQR
R 0
UU H
P
JH
WW,,
H
W\ W
D+
0
HN
P
LL Q
N
U HN
27
3H
U
0
R
H
Q
OH0
,
2
O GQ
U
UU H
R
P
N
W
3
UH
Q
0
H
DU
[W
H
P
'
L
21
3 H[DJ
WW,,
HN
H
3 UR
2
LF
U
LL Q
R 0
N
QR
0P
H
DSV
P
UU H
W3UD
27
,Q DU
UR
QD WLRQD
WW,,
HN
H
DJ
2
RWLI
LL Q
R 0
N
QR
0P
H
SV
P
J
UU H
26
URSK
&HWH
WW,,
R
HN
H
2
LHUD
LL Q
P
R 0
N
0
H
[WJH
SV3 HU U\
Q
P
RP
UU H
N
,,
27
6 W\
U SK
R
0
W
H
Q
H
3
U
L
R
P
N
UR
2
0P
WW,
WR OHSRX
H
'LF3
LL Q
UU H
2&
UR
HN
H
SHU
QR
1 D
U\ 0
0P
N
2
WW,,
EO
SV WLRURS
H
UU H
P
2
RWLI
LL Q
R 0
QR
H
6 R
H/
HN
0
DQ
N
,WH
7
D\
G
0P
WW,,
QD HU WLH
H
/D
QD
WRP
UU H
P
2
LL Q
R
QR
H
HN
0
2
D
SRV
P
W ,,
P0
RX3
N
U\LH
1
U \R
EO
JHU
R
0
H
UR U\ WLHVV
P
Q
UU H
2
8
L
R
0
W
N
H
Q
H
HN
2 8 QL
W
RW RQ
SHU
LL QR 0P
WW,,
XW
H
'
UU H
H
' Q FR
LILHULN LWH6
HN
0P
R
P
2
DW
LL Q
R
WW,,
WLH
N
Q
H
LFLF
P
2
R 0
N
UU H
H
1D
H
0
GH HU
HTX
2
V
N
LL Q
WLR
W,
RG
H
1
0P
P
QR
UH
R$
2
1
R
N
HWW,,,
WLIGYL
QDU
RW
R 0
2
H
N
LL Q
UU H
HQ
Q
1 R
H
2
0P
H
N
W2
WLILILLH
H
, R
2 7
UU H
\
FH
L QR 0P
HUU VH+
P
HN
WLI LH
H
2
0
WW,,,
6Q
2
ROG
R
U3
HWH LHUU
2
RJR0
P
H
7
W,
P
H
W\[W
Q
3
LL Q
2 7
J
HU
N
WW,2
2
, R
0
H
N
H
HU
2
0P
P
H
D
H0
3 H
UUH
[OH
3
L'
QR
2
2
1
R 0
2
W 0
2
,
0P
2
LL Q
D [UD
Q
'
R HN
6
2
7
N
QR
3 UR
W J
QR
R U/F
1
&
2
2
2
SLF
L Q UUU H
WHWLUD
UR
DQ
LN
HN
6
N
2
H[
3UD
OO (
N
R URR)
&
L Q
2
2
V
ILH
6
2
R
J
URSS
)
2
UH
UUH
H
E
L IL WP
7
W\
R&
2
2
D WLR
H
P
WJH
UD
QR U
&
1
Q
2
WR
2
UW P
UR
U
&
R
KV J Q
OH S3
UW U WD
D
U
*
2
'
6
2
SSV
/D2
L O6
R
R
2
1
7
EU\ 0
UR
UW Q
(
O R
R& H
6
R
K 3 H D
R
WL
+
WR
2 R
2
OILO WQ
OH/RX'
5
2
2
D5
P
D
WLORR&
S LF 3 URU U\
H
WL 6
2
UW Q
1
LH
H
3F)
Q
OH
&
EU\IL
R
H DQ
S
U\H
O WXR
2
2
V WL U S
JH
)
:
Q/
2
WLUW 6
2
G
H
R
3
OH SRU/D
UH O
D LOH
D\
\RD
UQ
HUH
2
2
2
:
R
OL )
3RQRS HU
R
\D 0
L ILP
2
2
H
3
R
LQ
O
/
LQ
V
D
$
2
2
0
J
R
U
:
UW (
+X X
2
2 3
LWHRX
)
1 LQ
UR DU HU WLH
LQ W
2
L O6R
WUF
&R
R
XW HU
2
W6
LP
H
$
: DLQGWGR
O H W HV
2
S
R&
6
SH\ WLH V
W
L Q
2
2
HY
2
N
3 DRLQ
2
SS 0
UH D+
WL QR
WLILGW RZZ
H6
WL O Q
H
2
2
:
UF
V
2
LQ
LQ
HT
R
UWL
1
RUW OU H
2
8
')
Q
L O6
R
W6
3
D
D
H
2
2
2
O F H
WH
2
+
QR)
2
:
H
,P
UR
O G
XH
LW
UZ
3
LQ GR
2
2
LQ
WL R
2
V
UH
LW
H
DRWL
&
2
:
U /R)
O HQR
Z
2
S
QN(
)2
2
L 2
Q
Q
:
&
UQRR1
2
DLQ
LQILGW
2
2
R P
UH
)
P
O2
FH
2
L
Z
3
R
/R7
H
/LQLQG
%&
2
2
2
2
WH
W ILW(R
$ 2
:
GQ
R
3
UH
DR 6
2
RRQ(G
:
L O RW0
FR)
8
W R UZ
2
D
2
2
ZR
2
2
Q
)
1
FQ
UP R
2
3
/
&E
2
DLQ
WL6
O U D
L UNQR
:
N
LQ
)
QY
1
&ZZ
2
2
2
UW LH
2
L GR
&
3
U /R
:
RLQLQGW WU
D
L H P
,W2
QP
&
RR
(
2
2
U
WV
W
QR
2
U
UQR
RR)
8
)
H
WL GW R6
HN
R&
2
DLQLQ
O
6
P
H2
2
2
W '
O Q
+
WU
2 2
SR
Z
Q )
3
22
2
% UW
2
P/
R Z LW 6
RUROU H Q D
RRLQLQGIL
&
WH
LIL P
UR
/ )
2
&
R6
2
2
RH
&
2
HLWWU
QN
P
1
OH
ONFFH
2
2
U 0U QWU
GW R
(U R
&
+
NWFQ
2
2
2
)
UZ
RS
&
/
WL O U Z
R
22
2
R
HRO
H
&
QRRR)
%
RRJ(P
P
2
2
2
Q
%
)6
2
LG
LW V
RZZ
2
&
UH
RU WL 6 Q D
2
R&
R
)
2
2
O H QR
6
UW LW UQ
U
RR/(QWU
+
S
W+
/R &
22
2
/
2
UW
,'
Q 6O6
H F QR
R
1
2
X
O
R
6
2
&
W W0
,,
2
Q
LI P
8
WL6
(
UQR
2
)
SR
/NUW H
LW
H
O
3
2
R/WUP
LNRQ
H
O
UH
W
D
W
R
3
)
R
H
D
P
H
,
2
H
U
0
L
G
R&
OS
W WW,W, ,
2 L )
W QQLU QUU 6
W WU & O%
LWH
RE
U6
2
) RR
&
UQ(
0
HH
O
2
UO R H
H
P
WL
WV
H
R
WW,, ,,
2
R
HHH
U GX QN
R UWQ8
P R
OH$8R/
RS
6
RR
2
WL H
H
PP
3
UWUR
6
2
+
2
:
SR
O R
3
&
Q
R
UQ
Q
JQJJQH
2
WL6
HW WWW,W,, ,
:
UH
P
L N0 P
2
FRQ U (
I WUR
P
U
LQ
2
H
H
3
Q O
QWL OUD/
2
0
&
PHHH
,'
2
, XJQ
0
W W W, , 2
WULHO6
Q
&
R
:
N PP
2
LWO6
UW
'
HH
3
0
O
QR 0
2
R
0
:
R
6
WLUW H
P
H
2
3
DLDL WLU
S
GLN +
0 P
W 2
P
GL Z
P
:
Q &
HHH
2
2
HL WU
2
2
1
H
P
RU &LO6
RQ RR
P
2
DLQ
O
3
QR
0
QQRY
P
QRH
V
Z
/
:
RRR 0
LQH H
3
RH
WL0
P
2
2
LQ
%6
W
0
2
P
2
:
0
2
P
1
L QQ
W,H
W,W,W, , , ,,
W Q0
0
2
Q
3
D DLQ LQG
GW QH R
3
2
2
UW U
R
0
RLO6RWHLWWUQ HR
QQ
LQHN
0
H
:
J U OS
3
08
2
00U3
R
O H
LN
W W WW W,W, , , ,
2
2
LN
HHH
/R
2
WR
+
N
R V
1
:
Q RW O
LN
,W2
L 6ZDQWH
LN
3
D DRLQLLQLQ
0
U W6
P
P
HH
2
O
L L Q QRRRRR 0
W WW W, , 2
:
3
H
2
2
Q W/
U HHH
+
HHHH
2
2
2
:
LL Q
P
U
R
2
2
2
RH
P
LQLLQLQWL QGWG W RZZNH H QFWU LWH WU H O
P
H XQ V
N
Q 0P
W 2
RRRRJ
Q
DLDR
U
H
HHH
P
2
2
,W,W ,W,W ,W
8
H 0
U UU HH
Q
R
L
QQ
P
2
2
, ,, 2
W,H
W,W,W, W,W, W, W, , , , 2
R
R +
O
WHN
P
P
LUN0
JQ
N
L
0
2
2
2
, , ,, , 2
2
2
2
2
, , , , , ,,
QQQ
P
H
S
H
LN
QLQWL GQGWILG
U UU H N
36
0
P
P
HH 0
8
U OH/NR
LN
Q
D DR
P
0
WH
WH
W 2
W
P
3
O
00
LN
HH H
RW R Z
H WV
Q,, X
LN
P
3
W W WW W
W W W W W WW
HHH
I WR H
HHHH
Q
WLLQLQG
GO
O
OS
LN
3
0
H
HW
HW
H
H 8
3
36
LN
6
8P
0
W Q/ LQL LQLQ
P
P
Z
H
HH
'J
RR
UU
LN
0
0
RRR
P
PP
HHHHH HHHHHH
P
P
0
LN
UU
H
W LH
R
U
L '
6 P
P
P
P
GW R
F LVUR
0
0
U UHW QP
UZ
HHH
RQ
0
3
3
0
+
P
P
P
3
R R
Q
OS
0
UU HWU Q0
30
6
8
P
P
P
P
P
33
0
6
8
P
P
P
P
H
U UUH
Z
QQQ
L N( QGWILH
RR U
0
P
P
P
P
P
P
WL W
RR
/
RRRR
0
0
R ZUZZ
0
U UU UHHH0
0
00
W Q0
R
R L N JJQQQ G
W
0
0
U
LN
LN
UU WQ
U U HU
LUN0
L L L LQ Q
0
0
0
U HW Q
R
RRRJJQQ
R SH
H
L N
0
0
0
UUR V
XJ & R R
QQ
0
0
0
0
0
0
0
0
0
RR L N
UZ
QQQ
JJQQQR
R
0
0
0
0
0
OS
RH
RU
Q
R LUN0
Q &
U
QQQ
R QHH
H NNN
RRRR R
LUN
,'
, ,' R
LN
ZZ
QQ
, XJ
RRRR,, XJRQ
LN
'
LN
LN
RRRRRRJ
JQQ
Q
LN
Q W/
U UU UHHH N
QQ
R
LN
LN
RRR
RJJXJ QR
/Z
H
' L' QQ Q
QRRR
RRJ JQQQRRRRRR
LN
QQQQ'
H
UU
L
R
R
LN
HH
QQQQ
,'
RQ
L
U
,
N L
HHH
QQ'
, XJ
, , XJ QQQQQQ
Q
N
LN
LN
/Z
QQ'
V
LN
L
LNLN /Z
0LVQ
Q
RQQQ
QQQ
Q,
'
'
HHH
0
N
L
L
0
U
R
0
L
Z
L
'
H
U
N
N
H
L
L
L
L
H W
NNNNLNN
LN
L
N HH0
UU U UU U
0LVQ
QHH
Z
LN
LN
LN
LN
L
Z
WU
LN
LN
LN
L /
WU
HH H
LN
LN
LN
LN
L N
LN
0
N
UU
/
/
U RR WV
HH
N
U RW /
HHHH
QH
R
R
0LV
HH0
LQHHHHH0 0LVQHHHHHH
HHH
H0
R W / R
QQ /U UU U
QQ LVO
UU U U UU U R WV
/UU UU U R
O
U U UU U R R W
Q
Q L LL
L
R /
LN
V
L
U U UU U UU U UU RR W
N
N W+
Q
L LN V
Q L
Q Q /
LV
QQ
W N
HH W
N
HH
LNL
H
V
L
L
LN
L
W
HH
UU
N W
N
LN V
N
OS
UU
H
UU
H
H
W
HH
H
H
UU
U
UU
U
U
lennium will provide automatic migration of live components. We are attempting to create distributed systems
that are self-tuning and self-configuring; automatically
adapting to changes in hardware resources and application
workload.
Creating a higher level of abstraction does not come
without cost in performance. However, Millennium
hopes to gain efficiency by spontaneously optimizing
applications for the current distributed environment and
eliminating unnecessary boundaries between the operating system and programming language runtimes.
Bibliography
[1]
Figure 13, Tables Interspersed Between Text. With a
five-page document containing fewer than a dozen embedded tables, Coign places 282 of 786 application components on the server.
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 intercomponent 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 changes in the relative computation power of the
client or server (through an extension to the graph-cutting
algorithm), or changes in network latency and bandwidth.
[2]
[3]
[4]
[5]
[6]
6. Conclusions and Future Work
We have described the Coign ADPS. Coign is the first
ADPS to automatically distribute binary applications built
from components. Coign has successfully distributed
three commercial-grade applications: Microsoft Picture
It!, the Octarine word processor, and the Corporate Benefits Sample from the Microsoft Developer Network
(MSDN). The largest of these programs is 1.8 million
lines of source code. In terms of complexity, several of
the Octarine scenarios we have tested instantiate over
3,800 components. Coign has even proven effective in
re-optimizing manually distributed applications.
Coign is part of the Millennium project at Microsoft
Research. The project aims to develop distributed systems that provide a new level of abstraction for application programmers and users, managing machines and
network connections for the programmer in the same way
that operating systems today manage pages of memory
and disk sectors. Beyond the capabilities of Coign, Mil-
10
[7]
[8]
[9]
[10]
Amza, Cristiana, Alan L. Cox, Sandhya
Dwarkadas, Pete Keleher, Honghui Lu, Ramakrishnan Rajamony, Weimin Yu, and Willy
Zwaenepoel. TreadMarks: Shared Memory
Computing on Networks of Workstations. In
Computer, 29(2):18-28, February 1996.
Arnold, Thomas R., II,. Software Testing with
Visual Test 4.0. IDG Books Worldwide, Foster
City, CA, August 1996.
Dahlhaus, E., D. S. Johnson, C. H. Papadimitriou, P. D. Seymour, and M. Yannakakis. The
Complexity of Multiterminal Cuts. In SIAM
Journal on Computing, 23(4):864-894, August
1994.
Ford, Lester R., Jr. and D. R. Fulkerson. Flows
in Networks. Princeton University Press,
Princeton, NJ, 1962.
Hunt, Galen C. Automatic Distributed Partitioning of Component Applications. Ph.D. Dissertation, Department of Computer Science.
University of Rochester, July 1998.
International Business Machine, Inc. VisualAge
Generator. Version 3.0, Raleigh. NC, September
1997.
Kimelman, Doug, Tova Roth, Hayden Lindsey,
and Sandy Thomas. A Tool for Partitioning
Distributed Object Applications Based on Communication Dynamics and Visual Feedback. In
Proceedings of the Advanced Technology Workshop, Third USENIX Conference on ObjectOriented Technologies and Systems. Portland,
OR, June 1997.
Michel, Janet and Andries van Dam. ([SHUL
HQFHZLWK'LVWULEXWHG3URFHVVLQJRQD
+RVW6DWHOOLWH*UDSKLFV6\VWHP. In Proceedings of the ACM SIGGRAPH, pp. 190-195.
Philadelphia, PA, July 1976.
Microsoft Corporation. Microsoft Open Database Connectivity Software Development Kit.
Version 2.0. Microsoft Press, 1994.
Microsoft Corporation. Microsoft Office 97. ,
Redmond, WA, February 1997.
[11]
[12]
[13]
[14]
[15]
[16]
11
Microsoft Corporation. Overview of the Corporate Benefits System. In Microsoft Developer
Network, January 1997.
Microsoft Corporation. Picture It! Version 2.0,
Redmond, WA, September 1997.
Microsoft Corporation. MIDL Programmer’s
Guide and Reference. Windows Platform SDK,
Redmond, WA, April 1998.
Stabler, George M. A System for Interconnected
Processing. Ph.D. Dissertation, Department of
Applied Mathematics. Brown University, Providence, RI, October 1974.
Stets, Robert, Sandhya Dwarkadas, Nikolaos
Hardavellas, Galen Hunt, Leonidas Kontothanassis, Srivinasan Parthasarathy, and Michael Scott.
Cashmere-2L: Software Coherent Shared Memory on a Clustered Remote-Write Network. In
Proceedings of the Sixteenth ACM Symposium
on Operating Systems Principles, pp. 170-183.
Saint Malo, France, October 1997.
van Dam, Andries, George M. Stabler, and Richard J. Harrington. Intelligent Satellites for Interactive Graphics. In Proceedings of the IEEE,
62(4):483-492, April 1974.
Download