Nick Piggin a écrit :
On Friday 12 December 2008 09:39, Eric Dumazet wrote:
quoted
Avoids cache line ping pongs between cpus and prepare next patch,
because updates of nr_inodes dont need inode_lock anymore.
(socket8 bench result : no difference at this point)
Looks good.
But.... If we never actually need fast access to the approximate
total, (which seems to apply to this and the previous patch) we
could use something much simpler which does not have the spinlock
or all this batching stuff that percpu counters have. I'd prefer
that because it will be faster in a straight line...
Well, using a non batching mode could be real easy, just
call __percpu_counter_add(&counter, inc, 1<<30);
Or define a new percpu_counter_fastadd(&counter, inc);
percpu_counter are nice because handle the CPU hotplug problem,
if we want to use for_each_online_cpu() instead of
for_each_possible_cpu().
(BTW. percpu counters can't be used in interrupt context? That's
nice.)
Not sure why you said this.
I would like to have a irqsafe percpu_counter, I was preparing such a
patch because we need it for net-next