From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Fix delay accounting regression
Date: Fri, 2 Nov 2007 22:25:59 +0530 [thread overview]
Message-ID: <20071102165559.GA5424@linux.vnet.ibm.com> (raw)
In-Reply-To: <20071102155358.GA32116@elte.hu>
On Fri, Nov 02, 2007 at 04:53:58PM +0100, Ingo Molnar wrote:
>
> * Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
>
> > Fix the delay accounting regression introduced by commit
> > 75d4ef16a6aa84f708188bada182315f80aab6fa. rq no longer has sched_info
> > data associated with it. task_struct sched_info structure is used by
> > delay accounting to provide back statistics to user space.
>
> no, this really is broken code. sched_clock() is not a generally
> reliable time source so at a minimum the rq->clock fix i mentioned is
> needed. What user-space tools are utilizing delay-accounting by the way?
> We have most of this data available under SCHEDSTATS - how about
> consolidating CONFIG_TASK_DELAY_ACCT into CONFIG_SCHEDSTATS?
>
> Ingo
Hi, Ingo,
How about this?
Changelog
1. As per Ingo Molnar's recommendation, use rq->clock instead of sched_clock().
Fix the delay accounting regression introduced by commit
75d4ef16a6aa84f708188bada182315f80aab6fa. rq no longer has sched_info
data associated with it. task_struct sched_info structure is used by delay
accounting to provide back statistics to user space.
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
---
kernel/sched_stats.h | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff -puN kernel/sched_stats.h~delayacct-define-bug kernel/sched_stats.h
--- linux-2.6-latest/kernel/sched_stats.h~delayacct-define-bug 2007-11-02 19:02:07.000000000 +0530
+++ linux-2.6-latest-balbir/kernel/sched_stats.h 2007-11-02 22:11:21.000000000 +0530
@@ -127,7 +127,7 @@ rq_sched_info_depart(struct rq *rq, unsi
# define schedstat_set(var, val) do { } while (0)
#endif
-#ifdef CONFIG_SCHEDSTATS
+#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
/*
* Called when a process is dequeued from the active array and given
* the cpu. We should note that with the exception of interactive
@@ -155,7 +155,7 @@ static inline void sched_info_dequeued(s
*/
static void sched_info_arrive(struct task_struct *t)
{
- unsigned long long now = sched_clock(), delta = 0;
+ unsigned long long now = task_rq(t)->clock, delta = 0;
if (t->sched_info.last_queued)
delta = now - t->sched_info.last_queued;
@@ -186,7 +186,7 @@ static inline void sched_info_queued(str
{
if (unlikely(sched_info_on()))
if (!t->sched_info.last_queued)
- t->sched_info.last_queued = sched_clock();
+ t->sched_info.last_queued = task_rq(t)->clock;
}
/*
@@ -195,7 +195,8 @@ static inline void sched_info_queued(str
*/
static inline void sched_info_depart(struct task_struct *t)
{
- unsigned long long delta = sched_clock() - t->sched_info.last_arrival;
+ unsigned long long delta = task_rq(t)->clock -
+ t->sched_info.last_arrival;
t->sched_info.cpu_time += delta;
rq_sched_info_depart(task_rq(t), delta);
@@ -231,5 +232,5 @@ sched_info_switch(struct task_struct *pr
#else
#define sched_info_queued(t) do { } while (0)
#define sched_info_switch(t, next) do { } while (0)
-#endif /* CONFIG_SCHEDSTATS */
+#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */
_
--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
next prev parent reply other threads:[~2007-11-02 16:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-02 14:22 [PATCH] Fix delay accounting regression Balbir Singh
2007-11-02 15:53 ` Ingo Molnar
2007-11-02 16:05 ` Guillaume Chazarain
2007-11-02 16:35 ` Balbir Singh
2007-11-02 16:55 ` Balbir Singh [this message]
2007-11-03 8:33 ` 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=20071102165559.GA5424@linux.vnet.ibm.com \
--to=balbir@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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.