[OpenAFS-devel] how does fileserver read from disk?

Kyle Moffett mrmacman_g4@mac.com
Wed, 14 Sep 2005 20:04:12 -0400


On Sep 14, 2005, at 17:05:19, Tom Keiser wrote:
> Second, we could use iovecs for the extension headers.  Unfortunately,
> most OS's limit us to 16 iovecs, so this would cut our max jumbogram
> size nearly in half.
>
> There is a third alternative, however: using posix async io's
> lio_listio() method to perform read-ahead / async write-behind.  For
> storedata_rxstyle, we could queue as much i/o as
> possible, and only block on disk i/o once all the data is queued in
> the kernel (or when the async queue fills).  Implementing
> fetchdata_rxstyle would be more involved, as we would probably want to
> implement some form of adaptive read-ahead scheduler.

Don't most of the OSes that implement POSIX async IO also have bigger
iovec limits?  Does OpenAFS use big iovecs on the systems that have
them? (Linux has at least 1024 since 2.2 days).  I think there's even
a POSIX macro that's defined to the number of available iovecs.  If
more are available, it may be simpler to detect that and let OpenAFS
use them.  For systems with fewer iovecs, you may just have to live
with a lower maximum throughput.  Since the poster is using Linux,
that will probably resolve his issue, although I guess others will
eventually run into the same problem.

Cheers,
Kyle Moffett

--
Debugging is twice as hard as writing the code in the first place.   
Therefore, if you write the code as cleverly as possible, you are, by  
definition, not smart enough to debug it.
   -- Brian Kernighan