[comp.os.misc] optimization languages in distributed systems

buck@siswat.UUCP (A. Lester Buck) (11/03/90)

The book "The LOCUS Distributed System Architecture" (1985), by Popek and
Walker, begins with a general discussion of distributed operating systems.
They cover the desirable features of transparency to hide the distributed
nature of the system.  But then they deal with the very real issue of
optimization control.  Excerpts:

    One of the functions that conventional, nontransparent systems
    provide is the ability of applications to take explicit
    network-related actions for the sake of optimization.  Placing
    a given file at a particular site, or moving a resource from one
    site to another, are obvious examples.  [...] Unless some means
    are provided in a transparent environment to accomplish the same
    optimization actions, one could fairly expect significant
    performance difficulties, even in a local network.

    The principle by which this optimization goal can be accomplished
    is straightforward.  One can think of the set of functions by
    which the distributed system provides service to applications
    as an _effect language_.  [...]  We argue that a separate
    _optimization language_ should be created, _orthogonal_ to the
    effect language.  The optimization language is _semantics free_,
    in the sense that whatever is stated in the optimization language
    cannot effect the outcome of a program; i.e., cannot change the
    result of any statement or series of statements in the effect
    language.  The optimization language permits one to determine
    the location of resources, request that the system move a
    resource, etc. [...]  In the case of a distributed operating
    system, this orthogonal language might consist of additional
    system calls such as:

	my_loc - returns the site name at which the call is made
	object_loc(object_name) - returns the site name of the named
		object
	make_near(object_name, site_name) - tries to move object_name
		to a site where access from site_name will be efficient
    
    With this kind of interface, a program such as the fragment below
    executes correctly whether or not the optimization commands are
    successfully performed by the system.

	x = my_loc;
	make_near(file_foo, x);
	open(file_foo);
    
    Note that the total set of system calls is available to a given
    program, so that it is certainly possible to create a program
    that will behave differently depending on the site of execution
    (i.e., not in a transparent manner).  Consider the following
    program fragment:

	if object_loc(file_foo) = my_loc
	    then call x else call y

    We consider the above a necessary dimension to the transparency
    concept. [Mention of how the optimization language is non-procedural
    in a programming language based transparent system.]


I am working on various aspects of large distributed mass storage systems
where the applications want complete transparency to the storage of the
data, but where certain types of data must be "near" where the data will be
used (e.g., Cray data on co-located high speed disk array).  Does anyone
know of implementations of such an optimization language in a distributed
operating system?  IBM's Transparent Computing Facility (TCF), which is an
instantiation of the Locus architecture, offers a few pieces of the
optimization language.  A user may give fstore values which determines where
files are stored and how many copies are replicated, and may move the
computation to the file (but not the other way around).  I was looking for
more full blown optimization languages from other distributed systems.

Please post and/or email and I will summarize if there is any interest.

Thanks alot!


-- 
A. Lester Buck    buck@siswat.lonestar.org  ...!uhnix1!lobster!siswat!buck