15:48 @mikolaj it can be fixed by changing the following lines:
15:48 @mikolaj rts/sm/GC.c- if (n_gc_threads == 1) {
15:48 @mikolaj rts/sm/GC.c- par_max_copied = copied;
15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied;
15:48 @mikolaj rts/sm/GC.c- } else {
15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied;
15:48 @mikolaj rts/sm/GC.c- }
15:48 @mikolaj to read:
15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied;
15:48 @mikolaj rts/sm/GC.c- if (n_gc_threads == 1) {
15:48 @mikolaj rts/sm/GC.c- par_max_copied = 0;
15:48 @mikolaj rts/sm/GC.c: par_tot_copied = 0:
15:48 @mikolaj rts/sm/GC.c: }
15:48 @mikolaj I checked if we can drop par_tot_copied altogether, but we can't, because it differs from the 'copie
d' field of GCStatsGHC in that it does not contain the 'mutable list', for which we can't determine which core "copie
d" it, as far as I understand, so it'd skew the Parallel GC work balance
15:48 @mikolaj it can be fixed by changing the following lines: 15:48 @mikolaj rts/sm/GC.c- if (n_gc_threads == 1) { 15:48 @mikolaj rts/sm/GC.c- par_max_copied = copied; 15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied; 15:48 @mikolaj rts/sm/GC.c- } else { 15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied; 15:48 @mikolaj rts/sm/GC.c- } 15:48 @mikolaj to read: 15:48 @mikolaj rts/sm/GC.c: par_tot_copied = copied; 15:48 @mikolaj rts/sm/GC.c- if (n_gc_threads == 1) { 15:48 @mikolaj rts/sm/GC.c- par_max_copied = 0; 15:48 @mikolaj rts/sm/GC.c: par_tot_copied = 0: 15:48 @mikolaj rts/sm/GC.c: } 15:48 @mikolaj I checked if we can drop par_tot_copied altogether, but we can't, because it differs from the 'copie d' field of GCStatsGHC in that it does not contain the 'mutable list', for which we can't determine which core "copie d" it, as far as I understand, so it'd skew the Parallel GC work balance