www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Bug with profiling GC with multiple threads/fibers

reply WebFreak001 <d.forum webfreak.org> writes:
I'm trying to GC profile serve-d which uses a lot of fibers 
potentially also across some threads and some threads doing some 
dedicated work, however -profile=gc doesn't seem to work 
properly. It logs `shared static this` calls and some methods, 
however none of the actual stuff is in there (and the total bytes 
allocated is way too small)

Here is the profilegc.log for reference: 
https://wfr.moe/feshNx/profilegc.log

When I call GC.stats I can see that it eventually has around 20 
MB allocated using the GC and I can also see in the resource 
monitor that it keeps allocating properly when using stuff

Also all the places where I would expect a GC allocation don't 
show anything in the profilegc.log then (like array modifications 
and just "new" in code that is definitely called)

In a simple minimal test case I can't seem to reproduce this 
behavior. Is there any way to check why it isn't profiling 
properly?

OS: Linux, DMD 2.085.1 (also reproducible by someone else)
Project: https://github.com/Pure-D/serve-d (run via code-d in 
vscode)
Apr 21 2019
parent Joel <joelcnz gmail.com> writes:
On Sunday, 21 April 2019 at 16:20:51 UTC, WebFreak001 wrote:
 I'm trying to GC profile serve-d which uses a lot of fibers 
 potentially also across some threads and some threads doing 
 some dedicated work, however -profile=gc doesn't seem to work 
 properly. It logs `shared static this` calls and some methods, 
 however none of the actual stuff is in there (and the total 
 bytes allocated is way too small)

 [...]
I don't know a fix. On my macOS computer, I close serve-d thread when it's using too much CPU, I also knock off spindump for the same reason.
Sep 12 2019