Re: Fw: [PATCH: 2.6.18.1] delayacct: cpu_count in taskstats updatedcorrectly

From: Balbir Singh
Date: Mon Oct 30 2006 - 08:49:26 EST




> Begin forwarded message:
>
> Date: Fri, 27 Oct 2006 05:18:17 +0200 (CEST)
> From: Martin Tostrup Setek <martitse@xxxxxxxxxxxxxxxxxxxxx>
> To: nagar@xxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Subject: [PATCH: 2.6.18.1] delayacct: cpu_count in taskstats updated correctly
>
>
> from: Martin T. Setek <martitse@xxxxxxxxxx>
>
> cpu_count in struct taskstats should be the same as the corresponding
> (third) value found in /proc/<pid>/schedstat
> Signed-off-by: <martitse@xxxxxxxxxx>
> ---
> Index: linux-2.6.18.1/kernel/delayacct.c
> ===================================================================
> --- linux-2.6.18.1.orig/kernel/delayacct.c
> +++ linux-2.6.18.1/kernel/delayacct.c
> @@ -124,7 +124,7 @@ int __delayacct_add_tsk(struct taskstats
> t2 = tsk->sched_info.run_delay;
> t3 = tsk->sched_info.cpu_time;
>
> - d->cpu_count += t1;
> + d->cpu_count = t1;
>
> jiffies_to_timespec(t2, &ts);
> tmp = (s64)d->cpu_delay_total + timespec_to_ns(&ts);
> -

I was off from work and just saw this message.

The first field "d" in __delayacct_add_task() acts as an accumulator of
statistics (specially useful for fill_tgid() and called just once for
fill_pid() with cpu_count of "d" initialized to 0).

We sum up in d->cpu_count, since the same value of "d" is passed each time from
fill_tgid(). The proposed change is incorrect as we would overwrite the value
each time.

Balbir

--

Balbir Singh,
Linux Technology Center,
IBM Software Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/