From: Praveen Rao (psrao_at_windows.microsoft.com)
Date: Wed Feb 04 2004 - 13:27:21 PST
Emerald is a distributed computing system that allows for fine grain
mobility. Mobility in Emerald is at object level where objects can be
anything from small data objects to process objects.
The paper discusses benefits of fine grained mobility which include the
benefits of process migration - load sharing, communication performance,
availability, reconfiguration, utilizing special capability, and
additional benefits of data movement, invocation performance and garbage
collection.
One has to wonder about the performance cost of such fine grained
mobility. To address this, authors state a goal of achieving performance
compared to traditional procedure calling systems in local scenarios and
comparable to RPC in remote scenarios.
Emerald is not designed for long-haul networks and is only suitable for
local area networks with a limited (~100) number of nodes. It also
assumes that all the nodes are homogenous and that they are trusted.
These assumptions sound somewhat restrictive but I can understand that
scope needs to be narrowed for such ambitious design.
To achieve these goals Emerald uses a new language and a new kernel. New
language allows Emerald to introduce semantics for object movement. The
interesting things about Emerald are that process can traverse through
different nodes and that there is no separation of code and data (in
terms of classes and objects). Code of an object is part of the object
itself, and this allows for mobility at the fine grained object level.
Emerald follows call-by-reference model but has optimizations to move
dependent objects together to avoid the cost of remotes calls resulting
from this model.
An Emerald process is a thread of control that is initiated when an
object with process is created. A process can invoke operations of its
object or objects references by this object. This thread of execution
can move across the nodes as the objects move. In traditional systems
the state of a process is distributed in various OS data structures and
the process might reference data by names (or indexes) that are relevant
only on local machine. Emerald's object oriented nature alleviates the
first problem and second problem is solved by naming the objects in a
global way. Finding of objects is done using forwarding addresses.
Emerald allows the objects to have embedded pointers for efficient local
execution (which is mostly the common case). Upon movement, this
pointers need to be translated. This is done using the help of compiler
and the concept of templates. For Garbage collection of the objects
Emerald uses mark and sweep algorithm.
The paper includes performance measurements of Emerald system but
doesn't compare it to the performance of a traditional (local) process
oriented system. It does show the gains with mobility though.
This seems to be neat idea barring the practicality of one language,
applicability only in a small network and performance concerns.
This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 13:27:29 PST