On 10/04/2007 05:10 PM, Christian Borntraeger wrote: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 -
| David Miller | Re: [GIT]: Networking |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| debian developer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
git: | |
| Arjan van de Ven | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Paul E. McKenney | Re: iptables very slow after commit 784544739a25c30637397ace5489eeb6e15d7d49 |
