Messages in this thread | | | Subject | Re: [patch V3] percpu_counter: scalability works | From | Eric Dumazet <> | Date | Mon, 16 May 2011 08:55:12 +0200 |
| |
Le lundi 16 mai 2011 à 14:37 +0800, Shaohua Li a écrit : > On Mon, 2011-05-16 at 14:11 +0800, Eric Dumazet wrote: > > Le lundi 16 mai 2011 à 08:58 +0800, Shaohua Li a écrit : > > > > > so if _sum starts and ends here, _sum can still get deviation. > > > > This makes no sense at all. If you have so many cpus 'here' right before > > you increment fbc->sum_cnt, then no matter how precise and super > > cautious you are in your _sum() implementation, as soon as you exit from > > sum(), other cpus already changed the percpu counter global value. > I don't agree here. The original implementation also just has quite > small window we have deviation, the window only exists between the two > lines: > atomic64_add(count, &fbc->count); > __this_cpu_write(*fbc->counters, 0); > if you think we should ignore it, we'd better not use any protection > here. >
Not at all. Your version didnt forbid new cpu to come in _add() and hitting the deviation problem.
There is a small difference, or else I wouldnt had bother.
> as I wrote in the email, the atomic and cacheline issue can be resolved > with a per_cpu data, I just didn't post the patch. I post it this time, > please see below. There is no cache line bounce anymore. >
I am afraid we make no progress at all here, if you just try to push your patch and ignore my comments.
percpu_counter is a compromise, dont make it too slow for normal operations. It works well if most _add() operations only go through percpu data.
Please just move vm_committed_as to a plain atomic_t, this will solve your problem.
Thanks
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |