From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:59585) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R9ZEq-0002I6-Qa for qemu-devel@nongnu.org; Fri, 30 Sep 2011 05:18:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R9ZEl-00004s-7J for qemu-devel@nongnu.org; Fri, 30 Sep 2011 05:18:36 -0400 Received: from david.siemens.de ([192.35.17.14]:28351) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R9ZEk-0008W7-TY for qemu-devel@nongnu.org; Fri, 30 Sep 2011 05:18:31 -0400 Message-ID: <4E85895E.1020101@siemens.com> Date: Fri, 30 Sep 2011 11:18:22 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <20110930081849.GC4512@yookeroo.fritz.box> <4E8581F7.2070300@siemens.com> <4E8583F4.6040102@siemens.com> In-Reply-To: <4E8583F4.6040102@siemens.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] Avoiding nographic_timer exits List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson Cc: qemu-devel@nongnu.org On 2011-09-30 10:55, Jan Kiszka wrote: > On 2011-09-30 10:46, Jan Kiszka wrote: >> On 2011-09-30 10:18, David Gibson wrote: >>> With PowerKVM, exits from KVM to qemu are even more expensive than on >>> x86. One significant source of these we're finding (since we usually >>> work in -nographic mode) is the nographic_timer. >>> >>> At present, we're using a hack to disable it, but that's obviously not >>> a long term solution. From examination, it looks like the only >>> purpose of this timer is to flush coalesced mmios. So it seems like >>> the timer should only be activated when a coalesced mmio region >>> actually exists, but I'm not entirely sure how to go about that. >>> >>> Thinking longer term, it seems very odd that a userspace periodic >>> timer handles this at all. Surely it would make more sense to use a >>> kernel timer within KVM, which can be activated only when there are >>> actually pending coalesced MMIOs in the buffer. >> >> Coalesced MMIO should only be flushed when a device depending on it gets >> accessed - either by a VCPU or by the iothread (to update the graphic >> output e.g.). We are working on such a concept (to reduce latency for >> VCPUs with real-time constraints). > > The MMIO flush in nographic_update dates back to 62a2744ca0. Mmh, I do > understand the need for flushing with active graphic, but I do not see > the need without such output. We "need" it in nographic_update for VNC as that one registers its own refresh timer. However, the qemu_flush_coalesced_mmio_buffer calls in the update timers are both misplaced. They belong into the update handlers of those display device models that use coalesced MMIO. Will write a patch. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux