From: Joanna Rutkowska <joanna@invisiblethingslab.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Ian Pratt <Ian.Pratt@eu.citrix.com>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
Dan Magenheimer <dan.magenheimer@oracle.com>
Subject: Re: A clocksource question
Date: Fri, 12 Mar 2010 01:27:28 +0100 [thread overview]
Message-ID: <4B998A70.3050500@invisiblethingslab.com> (raw)
In-Reply-To: <4B9877CA.4060204@goop.org>
[-- Attachment #1.1: Type: text/plain, Size: 2918 bytes --]
On 03/11/2010 05:55 AM, Jeremy Fitzhardinge wrote:
>> and so, maybe my kbd hiccups are caused by some code executed by
>> the timer interrupt too frequently (maybe too much code executes per
>> each timer interrupt, because of some other bug)? Just a though...
>>
>
> Possibly, but doesn't seem too likely. Can you tell if your hiccups are
> accompanied by bursts of timer interrupts in /proc/interrupts?
>
> There is another possibility, which is that the scheduler is getting
> confused by xen's scheduler clock. Rather than just scheduling based on
> real time, we try to take into account time stolen from a vcpu so that
> it isn't credited against the process (which may have had all its time
> stolen by another domain). But that could just be confusing things.
>
> Does this help?
>
> diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
> index 0d3f07c..9029885 100644
> --- a/arch/x86/xen/time.c
> +++ b/arch/x86/xen/time.c
> @@ -161,6 +161,9 @@ static void do_stolen_accounting(void)
> */
> unsigned long long xen_sched_clock(void)
> {
> +#if 1
> + return xen_clocksource_read();
> +#else
> struct vcpu_runstate_info state;
> cycle_t now;
> u64 ret;
> @@ -190,6 +193,7 @@ unsigned long long xen_sched_clock(void)
> preempt_enable();
>
> return ret;
> +#endif
> }
>
Nope, it didn't.
I think that the important clue is this message appearing in my dmesg
(in Dom0 and also in DomUs):
hrtimer: interrupt too slow, forcing clock min delta to 540150561 ns
This is almost 0.5s (!) and I think this might explain my kbd hiccup. I
wrote that I feel it every 10s or so, but when I was playing on my
system without jiffies setting today, I saw this hiccup occurring much
more often; in fact it was more of a "slow keyboard/system" feeling than
a hiccup".
Anyway, this is a comment from the function that displays this warning
(kernel/hrtimer.c):
/*
* After 5 iteration's attempts, we consider that hrtimer_interrupt()
* is hanging, which could happen with something that slows the interrupt
* such as the tracing. Then we force the clock reprogramming for each
future
* hrtimer interrupts to avoid infinite loops and use the min_delta_ns
* threshold that we will overwrite.
* The next tick event will be scheduled to 3 times we currently spend on
* hrtimer_interrupt(). This gives a good compromise, the cpus will spend
* 1/4 of their time to process the hrtimer interrupts. This is enough to
* let it running without serious starvation.
*/
static inline void
hrtimer_interrupt_hanging(struct clock_event_device *dev,
ktime_t try_time)
{
force_clock_reprogram = 1;
dev->min_delta_ns = (unsigned long)try_time.tv64 * 3;
printk(KERN_WARNING "hrtimer: interrupt too slow, "
"forcing clock min delta to %lu ns\n", dev->min_delta_ns);
}
joanna.
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 226 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next prev parent reply other threads:[~2010-03-12 0:27 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-09 10:47 A clocksource question Joanna Rutkowska
2010-03-09 10:50 ` Keir Fraser
2010-03-09 10:54 ` Joanna Rutkowska
2010-03-09 11:06 ` Joanna Rutkowska
2010-03-09 12:07 ` Pasi Kärkkäinen
2010-03-09 12:10 ` Joanna Rutkowska
2010-03-09 15:42 ` Konrad Rzeszutek Wilk
2010-03-09 23:36 ` Jeremy Fitzhardinge
2010-03-10 22:13 ` Joanna Rutkowska
2010-03-11 0:07 ` Dan Magenheimer
2010-03-11 0:15 ` Joanna Rutkowska
2010-03-11 0:21 ` Ian Pratt
2010-03-11 0:44 ` Dan Magenheimer
2010-03-12 0:34 ` Joanna Rutkowska
2010-03-11 0:52 ` Joanna Rutkowska
2010-03-11 1:06 ` Jeremy Fitzhardinge
2010-03-11 1:19 ` Joanna Rutkowska
2010-03-11 4:55 ` Jeremy Fitzhardinge
2010-03-11 10:49 ` Joanna Rutkowska
2010-03-12 0:27 ` Joanna Rutkowska [this message]
2010-03-12 0:49 ` Jeremy Fitzhardinge
2010-03-12 0:38 ` Joanna Rutkowska
2010-03-12 19:02 ` Joanna Rutkowska
2010-03-12 21:24 ` Jeremy Fitzhardinge
2010-03-12 21:56 ` Tobias Geiger
2010-03-12 22:02 ` Jeremy Fitzhardinge
2010-03-12 21:01 ` Joanna Rutkowska
2010-03-12 21:13 ` Joanna Rutkowska
2010-03-12 23:48 ` Jeremy Fitzhardinge
2010-03-13 9:58 ` Joanna Rutkowska
2010-03-13 19:30 ` Jeremy Fitzhardinge
2010-03-15 6:49 ` Tobias Geiger
2010-03-16 6:01 ` Joanna Rutkowska
2010-03-17 13:35 ` Tobias Geiger
2010-03-17 15:21 ` Joanna Rutkowska
2010-03-17 16:20 ` Jeremy Fitzhardinge
2010-03-17 17:05 ` Joanna Rutkowska
2010-03-17 17:21 ` Jeremy Fitzhardinge
2010-03-17 16:26 ` Dan Magenheimer
2010-03-12 22:56 ` Tobias Geiger
2010-03-11 7:47 ` Keir Fraser
-- strict thread matches above, loose matches on Subject: below --
2010-03-12 11:42 Tobias Geiger
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=4B998A70.3050500@invisiblethingslab.com \
--to=joanna@invisiblethingslab.com \
--cc=Ian.Pratt@eu.citrix.com \
--cc=dan.magenheimer@oracle.com \
--cc=jeremy@goop.org \
--cc=xen-devel@lists.xensource.com \
/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).