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

gc/stress/TestStressG1Uncommit.java gets OOM-killed

XMLWordPrintable

    • gc
    • b06

        Caught this on one of the testing nodes, that runs VM tests with normal parallelism:

        ```
        0s: Using 13 workers, each allocating: ~989M
        0s: Interation: 1
        [1.398s][info ][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 49M->47M(1016M) 342.489ms
        [2.237s][info ][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 279M->279M(1016M) 429.191ms
        [2.520s][info ][gc ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) 375M->391M(1016M) 240.384ms
        [2.765s][info ][gc ] GC(3) Pause Young (Normal) (G1 Evacuation Pause) 511M->520M(1016M) 204.557ms
        [3.052s][debug][gc,heap,region] GC(4) Activate regions [126, 380)
        [3.052s][info ][gc ] GC(4) Pause Young (Concurrent Start) (G1 Evacuation Pause) 648M->663M(3048M) 264.355ms
        [3.052s][info ][gc ] GC(5) Concurrent Mark Cycle
        [3.497s][info ][gc ] GC(6) Pause Young (Normal) (G1 Evacuation Pause) 807M->815M(3048M) 336.914ms
        [3.783s][info ][gc ] GC(7) Pause Young (Normal) (G1 Evacuation Pause) 983M->998M(3048M) 166.598ms
        [4.024s][info ][gc ] GC(8) Pause Young (Normal) (G1 Evacuation Pause) 1190M->1208M(3048M) 211.513ms
        [4.334s][debug][gc,heap,region] GC(9) Activate regions [380, 1032)
        [4.334s][info ][gc ] GC(9) Pause Young (Normal) (G1 Evacuation Pause) 1400M->1422M(8264M) 273.668ms
        [4.913s][info ][gc ] GC(10) Pause Young (Normal) (G1 Evacuation Pause) 1798M->1827M(8264M) 413.163ms
        [5.509s][info ][gc ] GC(11) Pause Young (Normal) (G1 Evacuation Pause) 2179M->2216M(8264M) 545.249ms
        [5.579s][debug][gc,heap,region] GC(5) Deactivate regions [988, 1030)
        [5.579s][debug][gc,heap,region] GC(5) Deactivate regions [978, 985)
        [5.579s][debug][gc,heap,region] GC(5) Deactivate regions [917, 974)
        [5.580s][info ][gc ] GC(5) Pause Remark 2226M->2226M(7416M) 67.115ms
        [5.580s][debug][gc,heap,region] Uncommit regions [917, 933)
        [5.632s][debug][gc,heap,region] Uncommit regions [933, 949)
        [5.696s][debug][gc,heap,region] Uncommit regions [949, 965)
        [5.732s][debug][gc,heap,region] Uncommit regions [965, 974)
        [5.764s][debug][gc,heap,region] Uncommit regions [978, 985)
        [5.856s][debug][gc,heap,region] Uncommit regions [988, 1004)
        [5.872s][info ][gc ] GC(5) Pause Cleanup 2472M->2472M(7416M) 0.384ms
        [5.956s][debug][gc,heap,region] Uncommit regions [1004, 1020)
        [6.026s][debug][gc,heap,region] Uncommit regions [1020, 1030)
        [6.415s][info ][gc ] GC(12) Pause Young (Prepare Mixed) (G1 Evacuation Pause) 2568M->2606M(7416M) 387.162ms
        [6.866s][info ][gc ] GC(13) Pause Young (Mixed) (G1 Evacuation Pause) 2918M->2957M(7416M) 342.671ms
        [6.872s][info ][gc ] GC(5) Concurrent Mark Cycle 3819.934ms
        [7.255s][debug][gc,heap,region] GC(14) Activate regions [917, 974)
        [7.255s][debug][gc,heap,region] GC(14) Activate regions [978, 985)
        [7.255s][debug][gc,heap,region] GC(14) Activate regions [988, 1030)
        [7.285s][debug][gc,heap,region] GC(14) Activate regions [1032, 1360)
        [7.285s][info ][gc ] GC(14) Pause Young (Mixed) (G1 Evacuation Pause) 3277M->3319M(10888M) 364.049ms
        [8.022s][info ][gc ] GC(15) Pause Young (Normal) (G1 Evacuation Pause) 3815M->3847M(10888M) 511.744ms
        [8.643s][info ][gc ] GC(16) Pause Young (Normal) (G1 Evacuation Pause) 4319M->4367M(10888M) 557.194ms
        [9.334s][info ][gc ] GC(17) Pause Young (Normal) (G1 Evacuation Pause) 4839M->4877M(10888M) 622.493ms
        [10.010s][debug][gc,heap,region] GC(18) Activate regions [1360, 1620)
        [10.010s][info ][gc ] GC(18) Pause Young (Normal) (G1 Evacuation Pause) 5349M->5389M(12968M) 634.508ms
        ];
         stderr: []
         exitValue = 137

        java.lang.RuntimeException: Expected to get exit value of [0], exit value is: [137]
        at jdk.test.lib.process.OutputAnalyzer.shouldHaveExitValue(OutputAnalyzer.java:522)
        at gc.stress.TestStressG1Uncommit.main(TestStressG1Uncommit.java:63)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:565)
        at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:333)
        at java.base/java.lang.Thread.run(Thread.java:1447)
        ```

        exit code 137 means oom-killed. I think the test is a memory hog: in this configuration, it allocates 13GB on live data. This is well beyond the usual footprint for a single test VM (~2GB), and so it runs into a high chance of being OOM killed.

        I think we can make the test a bit more frugal.

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: