qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [v1 PATCH 2/3]: Helper routines to use GLib threadpool


From: Anthony Liguori
Subject: [Qemu-devel] Re: [v1 PATCH 2/3]: Helper routines to use GLib threadpool infrastructure in 9pfs.
Date: Wed, 16 Mar 2011 08:10:41 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.14) Gecko/20110223 Lightning/1.0b2 Thunderbird/3.1.8

On 03/16/2011 04:20 AM, Stefan Hajnoczi wrote:
On Tue, Mar 15, 2011 at 1:13 PM, Anthony Liguori<address@hidden>  wrote:
Why even bothering signaling for completion with the virtio-9p threadpool?

There's no sane guest that's going to poll on virtio-9p completion with
interrupts disabled and no timer.  Once we enable the I/O thread by default,
it won't even be necessary for the paio layer.
It's not just about preventing livelock under extreme cases.  If you
omit the signal then !CONFIG_IOTHREAD builds will see increased
latency because virtfs request completion will piggy-back on other
events that *do* interrupt the vcpu.

But realistically, the timer is firing at a high enough frequency that I doubt you'd even observe the latency.

There's an easy solution here, just do some sniff testing to see if you can tell the difference. I bet you can't.

   I'm no fan of !CONFIG_IOTHREAD
but skipping signals is currently bad practice and will continue to be
until CONFIG_IOTHREAD is removed entirely.

The proper solution would be a thin abstraction for thread-safe
notification that compiles out signals when CONFIG_IOTHREAD is used.
Then we have one place in QEMU that does signalling correctly and we
can optimize it or remove CONFIG_IOTHREAD completely without having
the burden of duplicating this code in several places.

We have probably 5 different ways to wake up a CPU. I don't think we should add a new one just for this.

!CONFIG_IOTHREAD needs to go away in the very near future. I'd rather focus on that.

Regards,

Anthony Liguori

Stefan




reply via email to

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