Grapevine review

From: David Coleman (David.Coleman_at_roxio.com)
Date: Wed Feb 04 2004 - 16:29:42 PST

  • Next message: Gang Zhao: "On behalf of David Winkler -- Review: Experience with Grapevine"

    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.


  • Next message: Gang Zhao: "On behalf of David Winkler -- Review: Experience with Grapevine"

    This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 16:27:17 PST