From: Stefan Hajnoczi <stefanha@gmail.com>
To: Michael Roth <mdroth@linux.vnet.ibm.com>
Cc: qemu-trivial@nongnu.org, pbonzini@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-trivial] [PATCH] main-loop: For tools, initialize timers as part of qemu_init_main_loop()
Date: Fri, 27 Jan 2012 05:46:06 +0000 [thread overview]
Message-ID: <20120127054606.GC17836@stefanha-thinkpad.localdomain> (raw)
In-Reply-To: <1327166033-17922-1-git-send-email-mdroth@linux.vnet.ibm.com>
On Sat, Jan 21, 2012 at 11:13:53AM -0600, Michael Roth wrote:
> In some cases initializing the alarm timers can lead to non-negligable
> overhead from programs that link against qemu-tool.o. At least,
> setting a max-resolution WinMM alarm timer via mm_start_timer() (the
> current default for Windows) can increase the "tick rate" on Windows
> OSs and affect frequency scaling, and in the case of tools that run
> in guest OSs such has qemu-ga, the impact can be fairly dramatic
> (+20%/20% user/sys time on a core 2 processor was observed from an idle
> Windows XP guest).
>
> This patch doesn't address the issue directly (not sure what a good
> solution would be for Windows, or what other situations it might be
> noticeable), but it at least limits the scope of the issue to programs
> that "opt-in" to using the main-loop.c functions by only enabling alarm
> timers when qemu_init_main_loop() is called, which is already required
> to make use of those facilities, so existing users shouldn't be
> affected.
>
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
> main-loop.c | 2 +-
> main-loop.h | 12 ++++++++++++
> qemu-tool.c | 3 ++-
> vl.c | 5 +++++
> 4 files changed, 20 insertions(+), 2 deletions(-)
static struct qemu_alarm_timer alarm_timers[] = {
#ifndef _WIN32
#ifdef __linux__
{"dynticks", dynticks_start_timer,
dynticks_stop_timer, dynticks_rearm_timer},
#endif
{"unix", unix_start_timer, unix_stop_timer, unix_rearm_timer},
#else
{"mmtimer", mm_start_timer, mm_stop_timer, mm_rearm_timer},
{"dynticks", win32_start_timer, win32_stop_timer, win32_rearm_timer},
#endif
It seems Windows host already has a "dynticks" implementation. Have you
tried using this instead of "mmtimer"?
mm_start_timer() is using 1 ms intervals!
Stefan
next prev parent reply other threads:[~2012-01-27 5:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-21 1:08 [Qemu-devel] [PATCH] main-loop: Fix SetEvent() on uninitialized handle on win32 Michael Roth
2012-01-21 7:49 ` Paolo Bonzini
2012-01-21 17:13 ` [Qemu-devel] [PATCH] main-loop: For tools, initialize timers as part of qemu_init_main_loop() Michael Roth
2012-01-21 20:39 ` Jamie Lokier
2012-01-22 12:32 ` Paolo Bonzini
2012-01-23 0:12 ` Michael Roth
2012-01-23 7:49 ` Paolo Bonzini
2012-01-27 5:46 ` Stefan Hajnoczi [this message]
2012-01-27 8:09 ` [Qemu-devel] [Qemu-trivial] " Paolo Bonzini
2012-01-27 5:46 ` Stefan Hajnoczi
2012-02-01 22:10 ` [Qemu-devel] " Anthony Liguori
2012-01-27 5:41 ` [Qemu-devel] [Qemu-trivial] [PATCH] main-loop: Fix SetEvent() on uninitialized handle on win32 Stefan Hajnoczi
2012-01-27 14:52 ` [Qemu-devel] [PATCH v2] " Michael Roth
2012-02-01 22:10 ` [Qemu-devel] [PATCH] " Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120127054606.GC17836@stefanha-thinkpad.localdomain \
--to=stefanha@gmail.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).