Re: I/O Chapter Updates & Jan Meeting Agenda
Anurag Acharya (acha@cs.UMD.EDU)
Tue, 14 Jan 1997 17:26:18 -0500
>> 2. Proposal to Delete Asynchronous Functions with Implicit Pointers
>> Asynchronous I/O has a larger overhead than synchronous I/O. Careful
>> orchestration of computation and i/o is necessary to achieve a
>> performance improvement over blocking read/writes. Only large data transfers
>> should be done (i.e., large enough so that they are really going to disk
>> and not just being cached, ...
>>
>> With that in mind, I do not see the usefulness of the asynchronous
>> read/write functions with implicit pointers (both global and private).
>> In cases where asynchronous i/o is useful, the user should
>> know the explicit file offsets and where the data sits.
>
>Now, here I disagree with you 100%. Explicit offsets are MUCH nastier
>than implicit ones, because the implementation does not know where to
>look for the next block until the user makes the call. With normal use
>of implicit offsets (i.e. relatively few seeks), the implementation can
>preload data with a reasonable chance that it will be useful. Yes, the
>addition of the 'sequential' hint is pretty well equivalent.
[...]
>I would favour abolishing the use of explicit offsets entirely, but
>that might be controversial :-)
Sequentiality of access is a characteristic of the application and not
the I/O interface it uses. Eliminating explicit offsets will change
nothing. If the application makes random I/O requests, some variant of
lseek() is always available to the programmer. Contrariwise, using
explicit offsets does not preclude read-ahead based on the recent
request patterns or hints.
anurag