Re: Is non-blocking collective I/O desirable?

Dror Feitelson (feit@cs.huji.ac.il)
Fri, 14 Feb 1997 09:41:16 +0200

Let me offer the following very simple minded observations, part of which
summarize previous messages in this thread:

1. The purpose of collective I/O is to inform the system about a set of
related I/O operations, in order to enable various optimizations.

2. Collective does not imply synchronous. Therefore it also does not imply
blocking.

3. A non-blocking routine returns "as soon as possible", and this depends on
the implementation. However, the operations is completed only when it is
polled successfully or waited on.

4. Non-blocking operations to files are akin to relaxed memory consistency
models - if you use appropriate synchronization, all is well. If you
interleave different types of overlapping operations (that is,
overlapping both in time and in file addresses), then you're asking for
trouble and the system does not guarantee anything.

The bottom line is that non-blocking collective operations are desirable, and
should not be ruled out because of semantic difficulties when they are
overlapped with various other operations. Whoever wants to use this argument,
should provide a convincing case for writing code with interleaved overlapping
operations but without appropriate synchronization. I think this case is much
weaker than the case for collective non-blocking operations.

-- Dror