RFR: Common TLS access to GC state, where possible
Roman Kennke
rkennke at redhat.com
Mon Jan 15 12:27:56 UTC 2018
Am 15.01.2018 um 13:23 schrieb Aleksey Shipilev:
> http://cr.openjdk.java.net/~shade/shenandoah/c2-common-gc-state/webrev.01/
> (The initial version of this patch was drafted by Roland)
>
> This patch bases on single GC state flag patch. This enables us to match that load at once, and
> common all the loads of GC state between the safepoints, thus avoiding excess L1 cache accesses.
> This covers for the cases where we cannot move the barriers themselves, and thus improves the
> worst-case scenario.
>
> It sure helps targeted back-to-back store benchmarks:
>
> Benchmark Mode Cnt Score Error Units
>
> # default
> BarriersMultiple.test avgt 15 5.935 ± 0.003 ns/op
> BarriersMultiple.test:L1-dcache-loads avgt 3 35.420 ± 2.116 #/op
> BarriersMultiple.test:L1-dcache-stores avgt 3 9.082 ± 0.603 #/op
> BarriersMultiple.test:branches avgt 3 18.187 ± 1.005 #/op
> BarriersMultiple.test:cycles avgt 3 22.401 ± 1.249 #/op
> BarriersMultiple.test:instructions avgt 3 83.810 ± 4.297 #/op
>
> # -XX:+ShenandoahCommonGCStateLoads
> BarriersMultiple.test avgt 15 5.392 ± 0.116 ns/op
> BarriersMultiple.test:L1-dcache-loads avgt 3 26.302 ± 0.456 #/op // -9!
> BarriersMultiple.test:L1-dcache-stores avgt 3 9.078 ± 1.174 #/op
> BarriersMultiple.test:branches avgt 3 18.218 ± 0.092 #/op
> BarriersMultiple.test:cycles avgt 3 20.368 ± 3.023 #/op // -2
> BarriersMultiple.test:instructions avgt 3 86.984 ± 1.127 #/op
>
> ...but comes with the caveat: the increased register pressure (?) seems to penalize some of the
> bigger workloads. To avoid bitrot, and get the matchers for GC state loads into our codebase, I
> propose pushing this under disabled experimental flag. New test validates the feature is not
> completely broken.
>
> Testing: hotspot_gc_shenandoah
>
> Thanks,
> -Aleksey
>
I tried the initial Roland patch with traversal GC (against the then
evac-in-progress flag), and have seen occurances of back-to-back
evac-loads-checks that have not been common-ed. Roland is looking at it.
I suggest to at least hold it back until this is resolved or confirmed
to be a separate issue.
Roman
More information about the shenandoah-dev
mailing list