Am 08.07.2015 um 03:02 schrieb Fam Zheng: > On Tue, 07/07 16:54, Christian Borntraeger wrote: >> Am 30.06.2015 um 15:19 schrieb Fam Zheng: >>> epoll is more scalable than ppoll. It performs faster than ppoll when the >>> number of polled fds is high. >>> >>> See patch 4 for an example of the senario and some benchmark data. >>> >>> Note: it is only effective on iothread (dataplane), while the main loop >>> cannot >>> benefit from this yet, because the iohandler and chardev GSource's don't >>> easily >>> fit into this epoll interface style (that's why main loop uses qemu_poll_ns >>> directly instead of aio_poll()). >>> >>> There is hardly any timer activity in iothreads for now, as a result the >>> timeout is always 0 or -1. Therefore, timerfd, or the said nanosecond >>> epoll_pwait1 interface, which fixes the timeout granularity deficiency is >>> not >>> immediately necessary at this point, but still that will be simple to add. >>> >>> Please review! >> >> Is there a branch somewhere, so that I could give it a spin? >> > > Here: > > https://github.com/famz/qemu/tree/aio-posix-epoll > In file included from /home/cborntra/REPOS/qemu/include/qemu/option.h:31:0, from /home/cborntra/REPOS/qemu/include/qemu-common.h:44, from /home/cborntra/REPOS/qemu/async.c:25: /home/cborntra/REPOS/qemu/async.c: In function 'aio_context_new': /home/cborntra/REPOS/qemu/include/qapi/error.h:57:20: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized] error_set_errno(errp, os_error, ERROR_CLASS_GENERIC_ERROR, \ ^ /home/cborntra/REPOS/qemu/async.c:291:9: note: 'ret' was declared here int ret; ^ cc1: all warnings being treated as errors
With that fixed, it seems to work. Still looking at the performance.