lkml.org 
[lkml]   [2004]   [Oct]   [16]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateSat, 16 Oct 2004 10:43:04 +0200
FromAvi Kivity <>
SubjectRe: [PATCH 1/2] aio: add vectored I/O support
Joel Becker wrote:

>On Sat, Oct 16, 2004 at 07:18:45AM +0200, Avi Kivity wrote:
> 
>
>>It is a huge performance win, at least on the 2.4-based RHEL kernel. 
>>Large reads (~256K) using 4K iocbs are very slow on a large RAID, while 
>>after I coded a similar patch I got a substantial speedup.
>> 
>>
>
>	I'd think we should fix the submission path instead.  Why create
>iovs _and_ iocbs when we only need to create one?  And even if we
>decided aio_readv() was still nice to keep, we'd want to fix this
>inefficiency in io_submit().
>
> 
>
Using IO_CMD_READ for a vector entails

- converting the userspace structure (which might well an iovec) to iocbs
- copying all those iocbs to the kernel
- merging the iocbs
- generating multiple completions for the merged request
- copying the completions to userspace
- coalescing the multiple completions in userspace to a single completion

error handling is difficult as well. one would expect that a bad sector 
with multiple iocbs would only fail one of the requests. it seems to be 
non-trivial to implement this correctly.

IO_CMD_PREADV, by contrast, is very simple, intuitive, and efficient.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:07    [from the cache]
©2003-2008