----- On Jul 13, 2015, at 11:30 AM, Andrew Hunter ahh-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org wrote:
On Mon, Jul 13, 2015 at 8:27 AM, Mathieu Desnoyers
[off-list ref] wrote:
quoted
percpu segments will likely not solve everything. I have a use-case
with dynamically allocated per-cpu ring buffer in user-space (lttng-ust)
which can be a challenge for percpu segments. Having a fast getcpu()
is a win in those cases.
Note that percpu segments allow userspace to trivially implement fast getcpu.
For the record, Paul and I currently think the best solution is percpu
segments + some variant of a restart-sequence API (we'll have a patch
soon.)
Although useful in many situations, percpu segments still have some
limitations AFAIU:
- They are not available on all architectures (very x86-specific),
- Some user-space applications already use those segments.
So as long as we only target user-space code that does not use GS,
and which runs on x86, the percpu segments seems to be a good idea.
However, implementing a more general approach for a fast getcpu cache
still appears somewhat useful for the general case.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com