evaluation 4/27

Vagelis Hristidis (vagelis@cs.ucsd.edu)
Thu, 27 Apr 2000 02:08:07 -0700

Experience with Grapevine: The growth of a distributed system

This paper evaluates the Grapevine , which is a distributed Operating
system. It provides interconnecting facilities for both homogeneous and
heterogeneous systems. It's main purpose is to send and deliver messages to
individuals and to mailing lists. Grapevine provides two services to the
user applications, the message service for data exchange between network
nodes and the registration service, which takes care of naming and
authentication procedures. A big concern is scalability, Experiments showed
that when the number of users comes close to 10,000, then there are big
delays in the delivery of mails. Emphasis is also given to reliability of
the system in the case where a link is broken down. A problem arises because
Grapevine allows users to check their mails without deleting them from the
inboxes, so the system can become overloaded.
A disadvantage of the maintenance procedure of the system is that there must
be a human operator at each server. It also seems that no careful provision
was taken for malicious users , for example it is possible for a server to
run out of disk space.
A last comment is that the routing process is not clearly explained and this
makes understanding the system's operation difficult.

Fine-grained Mobility in the Emerald System

Emerald is an object based language and system that is designed for
distributed programs. Its main facility is the migration of objects, which
can not only be processes , but also data. This last addition to previous
languages has many advantages like better performance when bringing for
example the data and the process that acts on these data on the same node.
Emerald moves objects when the user or the Emerald compiler asks for it. It
provides much flexibility because it is fine grained. In general the system
should be efficient if the programmer knows how things work. Of course the
compiler gives some help, but only if the programmer provides it with some
extra information. For example if one knows that a process will use several
times an object he should tell the compiler to move that object to the
location where the process runs.