From: Ingo Molnar <mingo@elte.hu>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] tracing/function-graph-tracer: prevent from hrtimer interrupt infinite loop
Date: Thu, 18 Dec 2008 12:22:16 +0100 [thread overview]
Message-ID: <20081218112216.GE14332@elte.hu> (raw)
In-Reply-To: <alpine.LFD.2.00.0812181136410.3492@localhost.localdomain>
* Thomas Gleixner <tglx@linutronix.de> wrote:
> On Thu, 18 Dec 2008, Ingo Molnar wrote:
> > * Frederic Weisbecker <fweisbec@gmail.com> wrote:
> >
> > > Impact: fix a system hang on slow systems
> > >
> > > While testing the function graph tracer on VirtualBox, I had a system hang
> > > immediatly after enabling the tracer.
> > >
> > > If hrtimer is enabled on kernel, a slow system can spend too much time
> > > during tracing the hrtimer_interrupt which will do eternal loops,
> > > assuming it always have to retry its process because too much time
> > > elapsed during its time update. Now we provide a feature which lurks at
> > > the number of retries on hrtimer_interrupt. After 10 retries, the
> > > function graph tracer will definetly stop its tracing.
> >
> > hm, i dont really like this solution - it just works around the problem by
> > 'speeding up' the system. If we have a _real_ slow system, there's no such
> > way for us to speed it up.
> >
> > Thomas, what do you think - would you expect this lockup to happen on
> > really slow systems? If yes, is there a way we could avoid it from
> > happening - by driving some sort of 'mandatory interval', that is doubled
> > in size every time we detect such a bad hrtimer loop?
>
> In reality I have not seen such a problem yet, even on an old real slow
> P1 which I tricked to do highres, but of course if we add such time
> consuming debugs and make it slow enough the system will spend all the
> time running the tick timer :)
>
> We should at least warn once about such a loop.
>
> I'm not sure about the mandatory interval though:
>
> Try the same test with HZ=1000 periodic mode (HIGHRES/NOHZ=off) and I
> bet you see the same problem, just not in hrtimer_interrupt().
that would be important to double-check. Frederic, does the system lock up
with a periodic 1khz HZ tick just as much? I.e. does the processing of a
single timer interrupt take more than 1 milliseconds?
Granted, if the system is too slow to process the system clock, it's not
useful.
But that's my point: instead of just randomly disabling functionality
until the system gets 'fast enough' to process timer IRQs, how about
dynamically and adaptively extending the required minimal timeout between
hr-timer IRQs?
That will in essence self-tune the system into some minimally working
state - instead of locking it up. Note that such a method would work with
any source of timer IRQ slowness - not just tracing.
( And maybe the lockup is somehow hrtimer IRQ induced. If a 1khz clock
still works for Frederic then that angle has to be investigated. )
Ingo
next prev parent reply other threads:[~2008-12-18 11:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-18 1:09 [PATCH v2] tracing/function-graph-tracer: prevent from hrtimer interrupt infinite loop Frederic Weisbecker
2008-12-18 10:34 ` Ingo Molnar
2008-12-18 10:48 ` Thomas Gleixner
2008-12-18 10:56 ` Frédéric Weisbecker
2008-12-18 11:22 ` Ingo Molnar [this message]
2008-12-18 21:07 ` Frédéric Weisbecker
2008-12-18 21:16 ` Ingo Molnar
2008-12-18 21:36 ` Frédéric Weisbecker
2008-12-18 21:44 ` Ingo Molnar
2008-12-18 22:00 ` Frédéric Weisbecker
2008-12-21 10:00 ` Ingo Molnar
2008-12-21 10:12 ` Ingo Molnar
2008-12-21 12:21 ` Frédéric Weisbecker
2008-12-22 10:46 ` Frédéric Weisbecker
2008-12-18 10:51 ` Frédéric Weisbecker
2008-12-18 11:16 ` Ingo Molnar
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=20081218112216.GE14332@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/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