Avi Kivity wrote: > Anthony Liguori wrote: >>> >>> What about aio completions? The only race-free way to handle both >>> posix aio completion and fd readiness is signals AFAIK. >> >> We poll aio completion after the select don't we? Worst case >> scenario we miss a signal and wait to poll after the next select >> event. That's going to occur very often because of the timer. > > if select() doesn't enable signals (like you can do with pselect) you > may sit for a long time in select() until the timer expires. > > Consider a 100Hz Linux guest running 'ls -lR' out of a cold cache: > instead of 1-2 ms disk latencies you'll see 10 ms latencies, killing > performance by a factor of 5. > > I see the following possible solutions: > > 1. Apply Anders' patch and keep I/O completions signal based. > > 2. Use signalfd() to convert aio completions to fd readiness, > emulating signalfd() using a thread which does sigwait()+write() (to a > pipe) on older hosts > > 3. Use a separate thread for aio completions > > 4. Use pselect(), live with the race on older hosts (it was introduced > in 2.6.16, which we barely support anyway), live with the signal > delivery inefficiency. > > When I started writing this email I was in favor of (1), but now with > the new signalfd emulation I'm leaning towards (2). I still think (1) > should be merged, preferably to qemu upstream.
There is a 5th option. Do away with the use of posix aio. We get absolutely no benefit from it because it's limited to a single thread. Fabrice has reverted a patch to change that in the past. Regards, Anthony Liguori ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel