Poor scaling

Avi Kivity avi@scylladb.com
Wed Aug 10 06:35:00 GMT 2016



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.




More information about the Systemtap mailing list