RFR: JDK-8263579: ZGC concurrent mark hangs with debug loglevel

Per Liden pliden at openjdk.java.net
Tue Mar 16 11:00:14 UTC 2021


On Mon, 15 Mar 2021 12:22:57 GMT, 王超 <github.com+25214855+casparcwang at openjdk.org> wrote:

> Do not leave terminate stage 1 when there is nothing to do. This helps eliminate the concurrent mark hang with debug log level, and reduce total mark time without impact the performance.
> 
> The following is the performance data of specjbb2015 with stressed zgc:
> Current patch:
> RUN RESULT: hbIR (max attempted) = 122581, hbIR (settled) = 102168, max-jOPS = 104194, critical-jOPS = 90630
> [2021-03-12T17:20:37.072+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             383.026 / 383.026    1222.317 / 1811.813    766.530 / 1811.813    766.530 / 1811.813    ms
> 
> RUN RESULT: hbIR (max attempted) = 118234, hbIR (settled) = 108389, max-jOPS = 102864, critical-jOPS = 93572
> [2021-03-12T19:28:01.032+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             407.483 / 407.483    1243.775 / 1773.463    756.956 / 1773.463    756.956 / 1773.463    ms
> 
> RUN RESULT: hbIR (max attempted) = 111999, hbIR (settled) = 110683, max-jOPS = 104159, critical-jOPS = 92600
> [2021-03-12T21:48:09.729+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             412.954 / 412.954    1216.900 / 1927.552    762.315 / 1927.552    762.315 / 1927.552    ms
> 
> 
> Original:
> RUN RESULT: hbIR (max attempted) = 122581, hbIR (settled) = 109863, max-jOPS = 102968, critical-jOPS = 90836
> [2021-03-13T01:59:35.160+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             414.845 / 414.845    1168.357 / 1817.015    795.806 / 1837.452    795.806 / 1837.452    ms
> 
> RUN RESULT: hbIR (max attempted) = 122581, hbIR (settled) = 102168, max-jOPS = 102968, critical-jOPS = 89227
> [2021-03-12T23:49:17.322+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             405.709 / 405.709    1250.672 / 1724.725    783.993 / 1739.099    783.993 / 1739.099    ms
> 
> RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 85156, max-jOPS = 104211, critical-jOPS = 91693
> [2021-03-13T04:22:14.338+0800][info ][gc,stats       ]       Phase: Concurrent Mark                             415.444 / 415.444    1254.256 / 1896.037    768.536 / 1896.037    768.536 / 1896.037    ms

Thanks for reporting and proposing a fix. I would suggest that we simply remove the `ZSubPhaseConcurrentMarkIdle` stat timer completely, since that timer isn't that useful anyway.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3011



More information about the hotspot-gc-dev mailing list