On 2022-05-26 22:19, Ali Çehreli wrote:
On 5/26/22 12:54, Christian Köstlin wrote:
> I want to be able to dump
> tracings even while the program is still running. Then I would have to
> collect the tls data of all still running threads.
I am not sure without testing but I am under the impression that mutexes
can be very slow especially if the data collection is happening very
frequently. The threads may not have breathing room to perform their
tasks. Since dumping would be much slower compared to the performance
penalty of grabbing a mutex that it can be measured as zero-cost in the
dumping time. :) So, you may still want to collect per-thread and
combine incrementally as you dump? Perhaps a premature optimization...
Please test. :)
You are certainly right.. It really depends on the usecase. I also think
my current approach is not good to e.g. do syscall tracing of something
like read. I wonder how I can synchronize the "dumping" and the
collection of the threads. Would be cool to have an efficient lockless
implementation of appender ...
If you want to combine before dumping, then collector registration may
be needed so that the dumper can contact each collector and say "please
add your data".
> __gshared does not put
> the shared type attribute the the profiler.
Correct.
thanks!
> If I use shared I would also
> have to make all methods I call on the shared profiler shared and also
> would have to have a shared appender (or cast shared away)?
Possibly. :/
Ali
---
Christian