On Thu, 04/16 14:03, Stefan Hajnoczi wrote:
> On Thu, Apr 16, 2015 at 12:57:29PM +0800, Fam Zheng wrote:
> > v3: Rebase to master for 2.4.
> > Although epoll_pwait1 syscall is still being worked on [1], the QEMU
> > part
> > (if any) will base on this, so let's merge it first.
> >
> > That part is not included in this version because I'm still evaluating
> > by
> > comparing epoll_pwait1 with epoll+timerfd as with current master they
> > seem
> > to be really close.
> >
> > [1]: http://www.spinics.net/lists/linux-api/msg08216.html
> >
> > v2: Emulate nanoseconds precison of timeout with ppoll and timerfd.
> > Their performance is on par with each other, but both much better than
> > qemu.git:
> >
> > syscall high # of fd low # of fd
> > -------------------------------------------------
> > qemu.git(ppoll) 44 96
> > ppoll+epoll 85 101
> > timerfd+epoll 87 109
> >
> > (In high # of fd case, 3 activated but idle virtio-console devices are
> > attached, which will add us hundereds of fds to poll)
>
> Have you rerun benchmarks with this patch series?
Yes, here:
syscall high # of fd low # of fd
(Unit MB/s) (Unit MB/s)
-------------------------------------------------
qemu.git(ppoll) 24 73
ppoll+epoll 49 77
timerfd+epoll 49 82
>
> I wonder how the ppoll-only performance changes. It seems like there
> are now additional copies of <fd, events, revents> information and
> corresponding malloc/realloc/frees.
>
> Stefan