On Wed, Nov 24, 2010 at 04:16:04PM +0100, Paolo Bonzini wrote: > On 11/24/2010 12:14 PM, Michael S. Tsirkin wrote: > >>> buffered_file timer runs each 100ms. And we "try" to measure channel > >>> bandwidth from there. If we are not able to run the timer, all the > >>> calculations are wrong, and then stalls happens. > > > >So the problem is the timer in the buffered file abstraction? > >Why don't we just flush out data if the buffer is full? > > It takes a lot to fill the buffer if you have many zero pages, and > if that happens the guest is starved by the main loop filling the > buffer. > > Paolo
To solve starvation we really should return to main loop as soon as possible, give io a chance to run. The timer based hack is probably the best we can do by 0.14, though. -- MST