Implement an fd pool to get real AIO with posix-aio
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Fri, 26 Sep 2008 15:59:29 +0000 (15:59 +0000)
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Fri, 26 Sep 2008 15:59:29 +0000 (15:59 +0000)
commit5353872545861d8d21bf9fcc64a25cbfc8cd2eac
treee33448006dbfd0c24d1580f28b83cac1c6d17ec2
parent997306fc2246048b9a4e8df4b4bb96eab6c65a82
Implement an fd pool to get real AIO with posix-aio

This patch implements a simple fd pool to allow many AIO requests with
posix-aio.  The result is significantly improved performance (identical to that
reported for linux-aio) for both cache=on and cache=off.

The fundamental problem with posix-aio is that it limits itself to one thread
per-file descriptor.  I don't know why this is, but this patch provides a simple
mechanism to work around this (duplicating the file descriptor).

This isn't a great solution, but it seems like a reasonable intermediate step
between posix-aio and a custom thread-pool to replace it.

Ryan Harper will be posting some performance analysis he did comparing posix-aio
with fd pooling against linux-aio.  The size of the posix-aio thread pool and
the fd pool were largely determined by him based on this analysis.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5323 c046a42c-6fe2-441c-8c8c-71466251a162
block-raw-posix.c