[PATCH 0/2] cpustat: use atomic operations to read/update stats
From: Kevin Hilman <hidden>
Date: 2013-02-22 19:01:44
Also in:
lkml
Frederic Weisbecker [off-list ref] writes:
On Fri, Feb 22, 2013 at 06:21:31AM -0800, Eric Dumazet wrote:quoted
On Fri, 2013-02-22 at 15:09 +0100, Peter Zijlstra wrote:quoted
On Fri, 2013-02-22 at 13:50 +0100, Frederic Weisbecker wrote:quoted
quoted
Argh!! at what cost? 64bit atomics are like expensive. Wouldn'taddingquoted
a seqlock be saner?Not sure. This requires a spinlock in the write side which is called from fast path like the timer interrupt.A single spinlock is _way_ cheaper than a ton of cmpxchg8b()s to update a few variables.We also have include/linux/u64_stats_sync.h since 2.6.36Interesting, we should probably use that instead.
OK, I'll spin a version using the u64_stats interface.
Unfortunately, for 32-bit platforms that have atomic 64-bit loads
stores[1], u64_stats leads to some unnecessary overhead, but I'll look
at possibly optimizing u64_stats for those platforms as a follow-up
patch.
Kevin
[1] ARM >= v6k devices have ldrexd/strexd instructions for 64-bit loads
stores which are used by the atomic64 accessors on those devices.
(c.f. arch/arm/include/asm/atomic.h:atomic64_read()