From: "andrzej zaborowski" <balrogg@gmail.com>
To: Gleb Natapov <gleb@redhat.com>, dlaor@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RESEND][PATCH 0/3] Fix guest time drift under heavy load.
Date: Wed, 5 Nov 2008 16:48:32 +0100 [thread overview]
Message-ID: <fb249edb0811050748k1e2b8d77nd68dddc01af06e08@mail.gmail.com> (raw)
In-Reply-To: <49119551.2070704@redhat.com>
2008/11/5 Dor Laor <dlaor@redhat.com>:
> Gleb Natapov wrote:
>
> On Fri, Oct 31, 2008 at 02:17:19PM -0500, Anthony Liguori wrote:
>
>
> Gleb Natapov wrote:
>
>
> Qemu device emulation for timers might be inaccurate and
> causes coalescing of several IRQs into one. It happens when the
> load on the host is high and the guest did not manage to ack the
> previous IRQ. The problem can be reproduced by copying of a big
> file or many small ones inside Windows guest. When you do that guest
> clock start to lag behind the host one.
>
> The first patch in the series changes qemu_irq subsystem to return
> IRQ delivery status information. If device is notified that IRQs
> where lost it can regenerate them as needed. The following two
> patches add IRQ regeneration to PIC and RTC devices.
>
>
>
> I don't think any of the problems raised when this was initially posted.
>
>
> So? I raise them now. Have you tried suggested scenario and was able to
> reproduce the problem?
>
>
>
> It is the same issue, just another scenario.
>
> Further, I don't think that always playing catch-up with interrupts is
> always the best course of action.
>
>
>
> Agree. Playing catch-up with interrupts is not always the best course of
> action. But sometimes there is no other choice.
>
>
>
> As I've said repeatedly in the past, any sort of time drift fixes needs
> to have a lot of data posted with it that is repeatable.
>
> How much does this improve things with Windows?
>
>
> The time drift is eliminated. If there is a spike in a load time may
> slow down, but after that it catches up (this happens only during very
> high loads though).
>
>
>
> Gleb, can you please provide more details:
> - What's the host's kernel version exactly (including the high-res, dyn tick
> configured)
> - What's the windows version? Is it standard HAL (pit) or ACPI (rtc) or
> both?
> - The detailed scenario you use (example: I copied the entire c:/windows
> directory, etc)
> - Without the patch, what the time drift after x seconds on the host.
> - With the patch, is there a drift? Is there increased cpu consumption, etc
>
> Btw: I ack the whole thing, including the problem, the scenario and the
> solution.
I don't, as far as I understand it's a -win2k-hack type of addition,
i.e. the hardware doesn't do this but we want to improve usability by
working around a bad guest behaviour. Modifying qemu_irq abstraction
doesn't sound like the right place for that, qemu_irq contrary to what
the name suggests doesn't have to be connected to any interrupt.
Instead you can have the interrupt sources register a callback in the
PIC that the PIC calls when the interrupt wasn't delivered. Or.. in
the case of mc146818rtc.c wouldn't it be enough to check if the irq
has been acked by reading RTC_REG_C? e.g.
static void rtc_periodic_timer(void *opaque)
{
RTCState *s = opaque;
rtc_timer_update(s, s->next_periodic_time);
+ if (s->cmos_data[RTC_REG_C] & 0xc0)
+ s->irq_coalesced++;
s->cmos_data[RTC_REG_C] |= 0xc0;
qemu_irq_raise(s->irq);
}
Cheers
next prev parent reply other threads:[~2008-11-05 15:48 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-29 15:22 [Qemu-devel] [RESEND][PATCH 0/3] Fix guest time drift under heavy load Gleb Natapov
2008-10-29 15:22 ` [Qemu-devel] [PATCH 1/3] Change qemu_set_irq() to return status information Gleb Natapov
2008-10-29 15:22 ` [Qemu-devel] [PATCH 2/3] Fix time drift problem under high load when PIT is in use Gleb Natapov
2008-10-29 15:22 ` [Qemu-devel] [PATCH 3/3] Fix time drift problem under high load when RTC " Gleb Natapov
2008-11-05 12:46 ` Dor Laor
2008-10-31 19:17 ` [Qemu-devel] [RESEND][PATCH 0/3] Fix guest time drift under heavy load Anthony Liguori
2008-11-02 13:04 ` Gleb Natapov
2008-11-05 12:45 ` Dor Laor
2008-11-05 15:48 ` andrzej zaborowski [this message]
2008-11-05 16:33 ` Anthony Liguori
2008-11-06 7:16 ` Gleb Natapov
2008-11-06 9:37 ` andrzej zaborowski
2008-11-06 10:08 ` Gleb Natapov
2008-11-06 13:21 ` andrzej zaborowski
2008-11-06 14:18 ` Gleb Natapov
2008-11-06 14:35 ` andrzej zaborowski
2008-11-06 15:04 ` Gleb Natapov
2008-11-06 15:41 ` Anthony Liguori
2008-11-07 23:18 ` andrzej zaborowski
2008-11-08 8:23 ` Gleb Natapov
2008-11-06 13:44 ` Paul Brook
2008-11-05 17:43 ` Gleb Natapov
2008-11-06 17:28 ` David S. Ahern
2008-11-05 16:43 ` Anthony Liguori
2008-11-06 3:55 ` Jamie Lokier
2008-11-06 8:12 ` Gleb Natapov
2008-11-06 14:10 ` Anthony Liguori
2008-11-06 14:24 ` Paul Brook
2008-11-06 14:40 ` Anthony Liguori
2008-11-06 14:51 ` Gleb Natapov
2008-11-06 15:37 ` Anthony Liguori
2008-11-08 8:36 ` Gleb Natapov
2008-11-08 22:14 ` Dor Laor
2008-11-09 7:40 ` Gleb Natapov
2008-11-09 16:38 ` Anthony Liguori
2008-11-09 21:00 ` Avi Kivity
2008-11-09 16:36 ` Anthony Liguori
2008-11-10 14:37 ` Gleb Natapov
2008-11-10 15:24 ` Anthony Liguori
2008-11-10 15:29 ` Gleb Natapov
2008-11-10 15:46 ` Anthony Liguori
2008-11-10 15:51 ` Gleb Natapov
2008-11-11 14:43 ` Gleb Natapov
2008-11-11 17:26 ` Anthony Liguori
2008-11-11 20:17 ` Anthony Liguori
2008-11-12 11:42 ` Gleb Natapov
2008-11-12 11:54 ` Glauber Costa
2008-11-12 12:38 ` Dor Laor
2008-11-06 3:41 ` Jamie Lokier
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=fb249edb0811050748k1e2b8d77nd68dddc01af06e08@mail.gmail.com \
--to=balrogg@gmail.com \
--cc=dlaor@redhat.com \
--cc=gleb@redhat.com \
--cc=qemu-devel@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).