Re: [rfc 19/45] cpu alloc: NFS statistics

Mathieu Desnoyers
2007-11-20T21:28:57Z

* Trond Myklebust (trond.myklebust@fys.uio.no) wrote:
>
> On Tue, 2007-11-20 at 12:49 -0800, Christoph Lameter wrote:
> > On Tue, 20 Nov 2007, Mathieu Desnoyers wrote:
> >
> > > > Index: linux-2.6/fs/nfs/iostat.h
> > > > ===================================================================
> > > > --- linux-2.6.orig/fs/nfs/iostat.h 2007-11-15 21:17:24.391404458 -0800
> > > > +++ linux-2.6/fs/nfs/iostat.h 2007-11-15 21:25:33.167654066 -0800
> > > > @@ -123,7 +123,7 @@ static inline void nfs_inc_server_stats(
> > > > int cpu;
> > > >
> > > > cpu = get_cpu();
> > > > - iostats = per_cpu_ptr(server->io_stats, cpu);
> > > > + iostats = CPU_PTR(server->io_stats, cpu);
> > > > iostats->events[stat] ++;
> > >
> > > Is there a way to change this into a CPU_ADD ?
> >
> > Yes I must have missed that.
> >
> > Could be
> >
> > CPU_INC(server->io_stats->events[stat]);
> >
> > >
> > > > put_cpu_no_resched();
> > >
> > > Why put_cpu_no_resched here ?
> >
> > We do not want to reschedule here? We may have already disabled interrupts
> > or some such thing.
>
> Some of these statistics are updated from inside a spinlocked
> environment, hence the put_no_resched().
>

The we could use __get_cpu_var instead ? (since we know preemption is
_always_ disabled when we are called) ?

> Trond
>

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68