![]() | |||||||||||
Messages in this thread |
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 | |||||||||||