From: Ingo Molnar <mingo@elte.hu>
To: Darren Hart <dvhltc@us.ibm.com>
Cc: Lee Revell <rlrevell@joe-job.com>,
lkml <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Mike Galbraith <efault@gmx.de>,
Steven Rostedt <rostedt@goodmis.org>,
Florian Schmidt <mista.tapas@gmx.net>
Subject: Re: rt20 scheduling latency testcase and failure data
Date: Mon, 15 May 2006 10:13:41 +0200 [thread overview]
Message-ID: <20060515081341.GB24523@elte.hu> (raw)
In-Reply-To: <200605131601.31880.dvhltc@us.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 1237 bytes --]
* Darren Hart <dvhltc@us.ibm.com> wrote:
> On Saturday 13 May 2006 11:21, Lee Revell wrote:
> > On Sat, 2006-05-13 at 11:06 -0700, Darren Hart wrote:
> > > 1 [softirq-timer/0]
> >
> > What happens if you set the softirq-timer threads to 99?
> >
>
> After setting all 4 softirq-timer threads to prio 99 I seemed to get
> only 2 failures in 100 runs. #51 slept too long (10ms too long!), the
> latency appeared after the sleep in #90 (nearly 483ms worth). Those
> latencies seem huge to me.
have you tried to use the latency tracer to capture this latency? It is
programmable to a high degree. (I've attached trace-it.c that shows how
to use it)
(If the latency is particularly long you might want to increase
kernel/latency.c:MAX_TRACE.)
once you have a latency trace, you can use grep to produce some
highlevel overview of what's happening. E.g. syscall activity:
grep ' [<>] ' latency_trace.txt
or context-switches done:
grep ' : __schedule <' latency_trace
looking at the highlevel traces should give you a quick idea of what's
going on, and then you can zoom into the time period that triggers the
long latency. (but feel free to also send these traces to us, preferably
in bzip2 -9 format.)
Ingo
[-- Attachment #2: trace-it.c --]
[-- Type: text/plain, Size: 2375 bytes --]
/*
* Copyright (C) 2005, Ingo Molnar <mingo@redhat.com>
*
* user-triggered tracing.
*
* The -rt kernel has a built-in kernel tracer, which will trace
* all kernel function calls (and a couple of special events as well),
* by using a build-time gcc feature that instruments all kernel
* functions.
*
* The tracer is highly automated for a number of latency tracing purposes,
* but it can also be switched into 'user-triggered' mode, which is a
* half-automatic tracing mode where userspace apps start and stop the
* tracer. This file shows a dumb example how to turn user-triggered
* tracing on, and how to start/stop tracing. Note that if you do
* multiple start/stop sequences, the kernel will do a maximum search
* over their latencies, and will keep the trace of the largest latency
* in /proc/latency_trace. The maximums are also reported to the kernel
* log. (but can also be read from /proc/sys/kernel/preempt_max_latency)
*
* For the tracer to be activated, turn on CONFIG_WAKEUP_TIMING and
* CONFIG_LATENCY_TRACE in the .config, rebuild the kernel and boot
* into it. Note that the tracer can have significant runtime overhead,
* so you dont want to use it for performance testing :)
*/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <linux/unistd.h>
int main (int argc, char **argv)
{
int ret;
if (getuid() != 0) {
fprintf(stderr, "needs to run as root.\n");
exit(1);
}
ret = system("cat /proc/sys/kernel/mcount_enabled >/dev/null 2>/dev/null");
if (ret) {
fprintf(stderr, "CONFIG_LATENCY_TRACING not enabled?\n");
exit(1);
}
system("echo 0 > /proc/sys/kernel/trace_all_cpus");
system("echo 1 > /proc/sys/kernel/trace_enabled");
system("echo 0 > /proc/sys/kernel/trace_freerunning");
system("echo 0 > /proc/sys/kernel/trace_print_at_crash");
system("echo 1 > /proc/sys/kernel/trace_user_triggered");
system("echo 0 > /proc/sys/kernel/trace_verbose");
system("echo 0 > /proc/sys/kernel/preempt_max_latency");
system("echo 0 > /proc/sys/kernel/preempt_thresh");
system("[ -e /proc/sys/kernel/wakeup_timing ] && echo 1 > /proc/sys/kernel/wakeup_timing");
system("echo 1 > /proc/sys/kernel/mcount_enabled");
gettimeofday(0, 1); // start tracing
usleep(100000);
gettimeofday(0, 0); // stop tracing
system("cat /proc/latency_trace");
return 0;
}
next prev parent reply other threads:[~2006-05-15 8:13 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-13 2:24 rt20 scheduling latency testcase and failure data Darren Hart
2006-05-13 9:20 ` Florian Paul Schmidt
2006-05-13 11:55 ` Mike Galbraith
2006-05-13 15:39 ` Steven Rostedt
2006-05-13 16:36 ` Mike Galbraith
2006-05-15 8:04 ` Ingo Molnar
2006-05-13 18:06 ` Darren Hart
2006-05-13 18:21 ` Lee Revell
2006-05-13 23:01 ` Darren Hart
2006-05-14 3:46 ` Mike Galbraith
2006-05-14 5:48 ` Mike Galbraith
2006-05-14 7:04 ` Darren Hart
2006-05-14 7:38 ` Mike Galbraith
2006-05-15 8:13 ` Ingo Molnar [this message]
2006-05-16 1:30 ` Darren Hart
2006-05-16 7:22 ` Sébastien Dugué
2006-05-18 9:14 ` Darren Hart
2006-05-18 11:24 ` Ingo Molnar
2006-05-18 8:44 ` Sébastien Dugué
2006-05-18 8:47 ` Ingo Molnar
2006-05-18 8:58 ` Sébastien Dugué
2006-05-18 8:56 ` Ingo Molnar
2006-05-18 9:18 ` Sébastien Dugué
2006-05-18 9:38 ` Darren Hart
2006-05-18 9:58 ` Sébastien Dugué
2006-05-19 5:48 ` Mike Galbraith
2006-05-19 5:58 ` Mike Galbraith
2006-05-15 5:43 ` Mike Galbraith
2006-05-15 16:52 ` Lee Revell
2006-05-15 11:20 ` Sébastien Dugué
2006-05-15 21:49 ` Darren Hart
2006-05-15 11:15 ` Sébastien Dugué
2006-05-15 14:34 ` Darren Hart
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=20060515081341.GB24523@elte.hu \
--to=mingo@elte.hu \
--cc=dvhltc@us.ibm.com \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mista.tapas@gmx.net \
--cc=rlrevell@joe-job.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.