From: David Coleman (David.Coleman_at_roxio.com)
Date: Wed Feb 04 2004 - 16:29:42 PST
Grapevine is an interesting system that allows objects to be moved from
node to node instead of entire processes. It is a new language as well
as system designed for this task. It is not "currently" a general
purpose system; it is focused on allowing distributed programs. I'm
always surprised and troubled by single-language systems. I realize
this is sometimes due to time constraints. However in this case I
believe the compiler support necessary to successfully implement a truly
fine-grained mobile object probably would not translate well to C++.
I'm sure the fact that this troubles me is simply due to my experience
with large general-purpose systems such as UNIX or Windows.
Multithreading through objects is handled by the compiler/environment
through the use of monitors. All code within a monitor is guaranteed by
the system to be thread safe. However, I have concerns that this
prevent fine-grained multithreaded design. The paper on the user level
thread system spent quite a bit of effort designing an efficient
multithreaded access to a queue using locality and efficient
busy-waiting approaches. I worry that compiler-generated code wouldn't
have that same level of efficiency. As we've seen throughout this
quarter, exposing functionality to allow for extendable systems is
usually a necessity, possibly allowing individuals to implement their
own multithreading support of objects might be useful.
The use of a forwarding address for object location is clever. However,
I believe there will be pathological cases on large, heavily-loaded
systems where this could lead to very poor performance or possibly even
infinite searching. Also, the concept of moving objects to systems
based on their parameters is very useful. However, how to
programmatically make that decision wasn't clear. I didn't see a
mechanism for discovery of attributes of surrounding nodes to decide
how, when, and where to move objects. For example, it would be nice to
decide to move an object to a multiprocessor box if it has free cycles,
or another box if it has special hardware that will accelerate
computations.
Overall, I found Emerald a very interesting system. While limited-use
systems worry me a little, I could see the benefits of adopting this
style of approach, if not the detailed implementation, in the future.
This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 16:27:17 PST