Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8343047

G1: FullGC marking time of large object array unstable between builds

XMLWordPrintable

    • gc

      When looking at the trend-graph for the SystemGC micro OneBigObject I noticed that the results differed a lot between builds, but for a given build the variance was pretty low. At first I thought we had some regression, but seeing how the performance recovered and then go down again suggests that it might be something else.

      In the past we've seen that small changes to how the c++ compiler inline calls in the marking code can lead to big differences in performance and I wonder it this is what's going on here, because there have been no obvious change to the code that is executed from what I can tell.

      This benchmark creates a very large object array 128M references (all null) and then calls System.gc() and looking at detailed GC logs shows that it is the marking time that differs between the runs.

      I can reproduce the issue locally, on my machine I have:
      24b14:
      Benchmark Mode Cnt Score Error Units
      OneBigObject.gc ss 25 109.380 ± 1.016 ms/op
      24b15:
      Benchmark Mode Cnt Score Error Units
      OneBigObject.gc ss 25 87.812 ± 1.192 ms/op
      24b16:
      Benchmark Mode Cnt Score Error Units
      OneBigObject.gc ss 25 88.357 ± 1.404 ms/op
      24b17:
      Benchmark Mode Cnt Score Error Units
      OneBigObject.gc ss 25 132.062 ± 1.260 ms/op

      My investigations have mainly been on linux-x64.

            Unassigned Unassigned
            sjohanss Stefan Johansson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: