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 -
| Fernando Luis | [PATCH] affinity is not defined in non-smp kernels - x86_64 |
| monstr | [PATCH 52/60] microblaze_v4: fcntl.h sockios.h ucontext.h |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
| Greg KH | [PATCH] Input: add appleir USB driver |
git: | |
| Shawn O. Pearce | Re: .gitlink for Summer of Code |
| Linus Torvalds | Re: What's in git.git (stable), and Announcing GIT 1.4.4.3 |
| Josh Boyer | git-unpack-objects |
| Jakub Narebski | Re: Git User's Survey 2007 unfinished summary continued |
| Richard Stallman | Real men don't attack straw men |
| Henning Brauer | Re: About Xen: maybe a reiterative question but .. |
| sonjaya | openvpn on openbsd 4.1 |
| Stefan Beke | mail dovecot: pipe() failed: Too many open files |
| Indan Zupancic | Re: Realtek 8111C transmit timed out |
| Julius Volz | [PATCHv3 21/24] IPVS: Add function to determine if IPv6 address is local |
| KOSAKI Motohiro | [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| Ilpo Järvinen | Re: [bug] stuck localhost TCP connections, v2.6.26-rc3+ |
