Thread overview
gcopt=fork:1
Mar 01, 2022
Ali Çehreli
Mar 02, 2022
Anonymouse
Mar 02, 2022
Ali Çehreli
March 01, 2022
Have you tried this new GC option which seems to solve the stop-the-world issue:

  https://dlang.org/changelog/2.098.0.html#forkgc

Any experience?

Ali
March 02, 2022

On Tuesday, 1 March 2022 at 21:32:07 UTC, Ali Çehreli wrote:

>

Have you tried this new GC option which seems to solve the stop-the-world issue:

https://dlang.org/changelog/2.098.0.html#forkgc

Any experience?

Ali

It didn't work well for me; the process hung in __memcpy_avx_unaligned_erms when profiling under valgrind/callgrind, during the first collection. I tried and failed to reproduce it with a minimal example, so I didn't file an issue.

March 02, 2022
On 3/2/22 07:11, Anonymouse wrote:

> It didn't work well for me; the process hung in
> `__memcpy_avx_unaligned_erms` when profiling under valgrind/callgrind,
> during the first collection.

And it showed worse pause performance in a micro-benchmark program that I wrote that ran only for 10 seconds. But perhaps that worse pause was only on one of the threads so maybe I was better overall. (?)

Before getting to conclusions, does anyone have a GC benchmark program that demonstrates issues with D's GC? I am thinking, a separate driver program can pipeProcess() the benchmark program and measure pipe interaction latency. However, I am not convinced the benchmark program I wrote causes long pauses: The GC profiler reports 6ms (or so) pauses at most. Can we write a program that puts the blame on D's GC.

Thank you,
Ali