Messages in this thread | | | Subject | Re: [tip:sched/core] sched: cpuacct: Use bigger percpu counter batch values for stats counters | From | Peter Zijlstra <> | Date | Thu, 20 Aug 2009 07:52:59 +0200 |
| |
On Thu, 2009-08-20 at 10:56 +0530, Balbir Singh wrote:
> Looks good overall, why not keep the batch size conditional on > CONFIG_VIRT_CPU_ACCOUNTING? I'd still like to stick with > percpu_counter_read() on the read side because My concern is that a > bad user space application can read cpuacct.stat and bring the kernel > to its knees.
Agreed, the first hunk is dangerous, on the second hunk, I'm not sure about the INT_MAX thing, that's a 4s gap per cpu, that might be a tad much.
> > > Signed-off-by: Anton Blanchard <anton@samba.org> > > > --- > > > > > > Index: linux.trees.git/kernel/sched.c > > > =================================================================== > > > --- linux.trees.git.orig/kernel/sched.c 2009-07-16 10:11:02.000000000 +1000 > > > +++ linux.trees.git/kernel/sched.c 2009-07-16 10:16:41.000000000 +1000 > > > @@ -10551,7 +10551,7 @@ > > > int i; > > > > > > for (i = 0; i < CPUACCT_STAT_NSTATS; i++) { > > > - s64 val = percpu_counter_read(&ca->cpustat[i]); > > > + s64 val = percpu_counter_sum(&ca->cpustat[i]); > > > val = cputime64_to_clock_t(val); > > > cb->fill(cb, cpuacct_stat_desc[i], val); > > > } > > > @@ -10621,7 +10621,7 @@ > > > ca = task_ca(tsk); > > > > > > do { > > > - percpu_counter_add(&ca->cpustat[idx], val); > > > + __percpu_counter_add(&ca->cpustat[idx], val, INT_MAX); > > > ca = ca->parent; > > > } while (ca); > > > rcu_read_unlock(); >
| |