qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH][RFT] Fix the regression with SPARC emulation


From: Anthony Liguori
Subject: [Qemu-devel] Re: [PATCH][RFT] Fix the regression with SPARC emulation
Date: Wed, 08 Oct 2008 14:40:51 -0500
User-agent: Thunderbird 2.0.0.17 (X11/20080925)

Blue Swirl wrote:
On 10/8/08, Anthony Liguori <address@hidden> wrote:
The attached patch should be the proper fix for the sparc performance
regression.  Unfortunately, this means abandoning signalfd() in favor of the
signal handler/pipe trick but I don't see another solution to the problem.

That's too bad, what was the problem?

signalfd() worked fine for KVM because KVM handles the main loop in a dedicated thread. This means select() is always running in that thread. With normal QEMU, something needs to kick the VCPU execution out of it's loop to handle the IO request. You need something like a signal to do because you need to be able to execute code to basically do cpu_interrupt.

The signal-pipe stuff works before we can write to the pipe to queue up the io completion, but also do the cpu_interrupt. I was hoping to set SIGIO on the signalfd() to just have a signal handler that did cpu_interrupt but it doesn't appear that signalfd() supports SIGIO so that's not an option.

Maybe there should be two commits for future bisections, one that
reverses the signalfd patches and second one that adds the signal/pipe
stuff?

It would be difficult to do that because of the aio refactoring that came after the signalfd implementation.

 Please test and let me know if this works for all of your cases (it did for
me with -clock unix and -clock dynticks).

Works here too, with AIO and AIO disabled.

Okay, I'll commit.

Regards,

Anthony Liguori





reply via email to

[Prev in Thread] Current Thread [Next in Thread]