Messages in this thread Patch in this message | | | Date | Thu, 04 Oct 2007 18:01:29 -0400 | From | Chuck Ebbert <> | Subject | Re: [PATCH for testing] Re: Decreasing stime running confuses top |
| |
On 10/04/2007 05:10 PM, Christian Borntraeger wrote:
> <patch reverting to 2.6.22 behavior>
Alternative patch:
procfs: Don't read runtime twice when computing task's stime
Current code reads p->se.sum_exec_runtime twice and goes through multiple type conversions to calculate stime. Read it once and skip some of the conversions.
Signed-off-by: Chuck Ebbert <cebbert@redhat.com>
--- linux-2.6.23-rc6-dell.orig/fs/proc/array.c +++ linux-2.6.23-rc6-dell/fs/proc/array.c @@ -334,39 +334,38 @@ static cputime_t task_stime(struct task_ return p->stime; } #else -static cputime_t task_utime(struct task_struct *p) +static clock_t __task_utime(struct task_struct *p, u64 runtime) { clock_t utime = cputime_to_clock_t(p->utime), total = utime + cputime_to_clock_t(p->stime); - u64 temp; /* * Use CFS's precise accounting: */ - temp = (u64)nsec_to_clock_t(p->se.sum_exec_runtime); - if (total) { - temp *= utime; - do_div(temp, total); + runtime *= utime; + do_div(runtime, total); } - utime = (clock_t)temp; + return (clock_t)runtime; +} - return clock_t_to_cputime(utime); +static cputime_t task_utime(struct task_struct *p) +{ + u64 runtime = (u64)nsec_to_clock_t(p->se.sum_exec_runtime); + + return clock_t_to_cputime(__task_utime(p, runtime)); } static cputime_t task_stime(struct task_struct *p) { - clock_t stime; + u64 runtime = (u64)nsec_to_clock_t(p->se.sum_exec_runtime); /* * Use CFS's precise accounting. (we subtract utime from * the total, to make sure the total observed by userspace * grows monotonically - apps rely on that): */ - stime = nsec_to_clock_t(p->se.sum_exec_runtime) - - cputime_to_clock_t(task_utime(p)); - - return clock_t_to_cputime(stime); + return clock_t_to_cputime(runtime - __task_utime(p, runtime)); } #endif - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |