The Coign Automatic Distributed Partitioning System

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