This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Poor scaling




On 08/09/2016 08:47 PM, Josh Stone wrote:
On 08/08/2016 11:38 PM, Avi Kivity wrote:
Are entire probes serialized, or just individual variables?  If the
latter, perhaps you can detect that an array's index is always tid(),
remove that index, and convert the global variable to a thread-local one
(with an exception for begin and end probes).
I think I'd rather see this explicit declared on the global itself,
instead of treating tid() specially.  Something like the proposed percpu
globals:
https://sourceware.org/bugzilla/show_bug.cgi?id=10795

The challenge is how to allocate and free that per-task memory, and how
to look up that memory from arbitrary probe context.  It's possible,
just not entirely trivial.

Won't converting the associative array to use rcu lookups works? You would still lock individual elements when assigning or reading them, and the entire array when inserting or deleting (but those are rare). You'd still have locking, just no lock contention.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]