Re: [PATCH v2] sched, timer: Use atomics for thread_group_cputimer to improve scalability

Jason Low
2015-03-19T17:21:11Z

On Mon, 2015-03-02 at 13:49 -0800, Jason Low wrote:
> On Mon, 2015-03-02 at 11:03 -0800, Linus Torvalds wrote:
> > On Mon, Mar 2, 2015 at 10:42 AM, Jason Low <jason.low2@hp.com> wrote:
> > >
> > > This patch converts the timers to 64 bit atomic variables and use
> > > atomic add to update them without a lock. With this patch, the percent
> > > of total time spent updating thread group cputimer timers was reduced
> > > from 30% down to less than 1%.
> >
> > NAK.
> >
> > Not because I think this is wrong, but because somebody needs to look
> > at the effects on 32-bit architectures too.
>
> Okay, I will run some tests to see how this change affects the
> performance of itimers on 32 bit systems.

Hi Linus,

I tested this patch on a 32 bit ARM system with 4 cores. Using the
generic 64 bit atomics, I did not see any performance change with this
patch, and the relevant functions (account_group_*_time(), ect...) don't
show up in perf reports.

One factor might be because locking/cacheline contention isn't as
apparent on smaller systems to begin with, and lib/atomic64.c also
mentions that "this is expected to used on systems with small numbers of
CPUs (<= 4 or so)".