Big speed difference for G1 vs. parallel GC
Vitaly Davidovich
vitalyd at gmail.com
Mon Oct 31 23:04:16 UTC 2016
G1 has more expensive GC write barriers - if you have a reference heavy
heap with lots of mutation, it can add up. 20% more overhead for each
barrier is a number I've heard before.
On Monday, October 31, 2016, Peter <graphhopper at gmx.de> wrote:
> Hi Bernd,
>
> why do you think it is measuring a short workload? 'short' in which terms?
> The overall test suite takes roughly 3 minutes but can be increased easily
> via increasing the number of road routing queries. BTW: with routing.mean
> we measure the latency of every road routing query, at least I think so ;)
>
> > Did you check the verbose GC logs, and how many CPUs does Java see/use?
>
> Nothing suspicious in the GC logs
> <https://gist.github.com/karussell/94848aa48244252c6010018b3621b565> IMO,
> except that G1 produces much more output. Still this reminded me of another
> mistake <http://stackoverflow.com/q/38905739/194609> I made recently (not
> disabling swapping) and so I went to my dev server (instead of laptop)
> where this is already done and have more RAM there (32g), still using just
> 1000m and the results are a bit better: 320ms vs. only 235ms, so G1 is only
> ~25% slower. What differences are expected here ... let's say 'maximum'?
>
> BTW: CPU usage on the server is roughly 200-240% for G1 and 100-120% for
> the parallel GC, so the speedup might be also related to the CPUs as the
> laptop only has 2 cores without hyperthreading.
>
> Regards
> Peter
>
> On 31.10.2016 20:52, Bernd Eckenfels wrote:
>
> Hello,
>
> Since this is measuring a short workload after vom startup it might not be
> the best benchmark, but then again throughput GC is expected to be faster
> than G1.
>
> In the particular case however I guess you could tune G1 a bit to that
> workload. Did you check the verbose GC logs, and how many CPUs does Java
> see/use?
>
> Gruss
> Bernd
> --
> http://bernd.eckenfels.net
>
>
>
>
> On Mon, Oct 31, 2016 at 8:38 PM +0100, "Peter" <graphhopper at gmx.de
> <javascript:_e(%7B%7D,'cvml','graphhopper at gmx.de');>> wrote:
>
> Hi,
>>
>> I've stumbled today* over a big speed difference for code execution with
>> G1 GC vs. parallel GC also in the latest JDK8 (1.8.0_111-b14). Maybe you
>> have interests to investigate this. You should be able to reproduce this
>> via:
>>
>> # setup
>> git clone https://github.com/graphhopper/graphhopper
>> wget http://download.geofabrik.de/europe/germany/bayern-latest.osm.pbf
>> cd graphhopper
>>
>> # run measurement
>> export JAVA_OPTS="-XX:+UseParallelGC -Xmx1000m -Xms1000m"
>> # the graphhopper.sh script just makes the installation of maven and
>> bundling the jar a bit simpler
>> # you can also execute the tests in the class Measurement.java
>> <https://github.com/graphhopper/graphhopper/blob/master/tools/src/main/java/com/graphhopper/tools/Measurement.java>
>> ./graphhopper.sh clean
>> ./graphhopper.sh measurement berlin-latest.osm.pbf
>> # now a measurement-<some date>.properties is created:
>> grep routing.mean measurement-XY.properties
>>
>> Now this should print a line where the value is in ms. E.g. I get ~450ms
>> for the parallel GC and ~780ms for G1GC (on an old laptop). When I increase
>> the Xmx for the G1 run to 1400m the results do NOT get closer to parallel
>> GC!
>>
>> Let me know if you need more information!
>>
>> Regards
>> Peter
>>
>> *
>> https://github.com/graphhopper/graphhopper/issues/854
>>
>> --
>> GraphHopper.com - fast and flexible route planning
>>
>>
>
> --
> GraphHopper.com - fast and flexible route planning
>
>
--
Sent from my phone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20161031/bbba34ef/attachment.html>
More information about the hotspot-gc-use
mailing list