[comp.lang.ada] Timing in distributed Ada programs

jeffw@sce.carleton.ca (Jeff Wilson) (11/09/89)

     A couple of weeks ago I posted an item requesting
clarification of some timing issues with respect to Ada.
In particular, what does the time REALLY mean in a timed
entry call?  Is it the total time the calling task is
willing to wait (including any communication overhead), or
is it the time the calling task is willing to wait in the
called task's queue (independent of communication overhead)?

     The responses indicate that there is no consensus, and
in fact, each interpretation has its merits.  For distributed
systems, communication overhead MUST be considered because it
may affect how the software is designed, particularly in
regards to task-to-node allocation.  However, a consistent
model is needed such that a conditional entry call is the same
as a timed entry call with a delay of zero.

     I think one's interpretation depends on how a rendezvous
is viewed.  If it is viewed from the calling task's perspective,
the specified time includes communication overhead.  If it is
viewed from the called task's point of view, the communication
overhead is ignored.

     I propose a method which allows both interpretations to be
used in the same call:  rather than giving one time, associate
with a timed entry call a total delay time AND a queue delay time.
The total delay time is managed on the calling task's processor
while the queue delay time is managed on the called task's
processor.  Pluses of this method are:

- if the called task's processor fails during the timeout period,
  there is still a record of the calling task so it can be revived
- it gives a more complete specification of the timing component
  of the interaction

Minuses of this method are:

- the possibility of data inconsistency exists because information
  is kept in two places (some sort of protocol would be needed to
  ensure both tasks agree about the state of the rendezvous)
- Ada doesn't support it, nor does any other language I know

Why should we have to settle for one interpretation when it doesn't
fit our application?  This method allows one or both of them to be
used as necessary.  Ignoring the syntax and implementation details,
does this method bridge the gap?

Jeff Wilson
Systems & Computer Engineering
Carleton University
Ottawa, Ontario, Canada
jeffw@sce.carleton.ca