RFR (L): JDK-8014786: Cleaning up the split code in the register allocator of C2
Christian Thalinger
christian.thalinger at oracle.com
Thu May 23 15:13:59 PDT 2013
On May 17, 2013, at 5:03 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> On 5/17/13 4:37 PM, Niclas Adlertz wrote:
>> Hi all.
>>
>> I've been trying to refactor and cleanup the split code currently located at src/share/vm/opto/reg_split.cpp. Here is the result of that.
>> This fix also fixes bugs https://jbs.oracle.com/bugs/browse/JDK-8005956 and https://jbs.oracle.com/bugs/browse/JDK-8013830.
>> The first bug is resolved by removing rematerialization of reaches to phi nodes.
>
> Can the fix be done separate from clean up to make sure it is the cause of regression?
> The main part of changes is renaming. It would be nice to push it separate because it is hard to see the fix and other changes.
> It will also help bugs tail analysis.
>
> I would suggest to do it next steps as separate changes:
>
> 1. Make bugs fix first.
> 2. Variables and methods renaming: lrgs --> live_ranges and others.
> 3. Make changes in reg_split.cpp without renaming - we can't do review of current changes in split.cpp. Why you need to rename it?
>
> In general, do not make changes which are hard to review.
I concur. Please split the patches as Vladimir suggested. It will make your life after the bugfix easier :-)
-- Chris
>
> And you can ignore jetstream results - they are not reliable.
> I also surprise that your stdev is so small.
>
> Thanks,
> Vladimir
>
>> This comes with a slight performance degradation [0]. However, since this rematerialization is causing JVM crashes, I would say it's worth it.
>>
>> When reviewing this fix, please use the existing reg_split.cpp found at src/share/vm/opto/reg_split.cpp as a reference.
>>
>> JBS: https://jbs.oracle.com/bugs/browse/JDK-8014786
>> WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8014786/webrev00/
>>
>> Kind Regards,
>> Niclas Adlertz
>>
>> [0] Results from refworkload on 1) x64 Linux and 2) SPARCV9 Solaris.
>> Baseline and fix with 12 iterations each.
>>
>> 1) x64 Linux
>> ============================================================================
>> refworkload_base: reference_server
>> Benchmark Samples Mean Stdev
>> jetstream 12 185.27 0.03
>> Write 12 71.42 0.04
>> Parse 12 67.92 0.03
>> Read 12 17.25 0.10
>> Copy 12 102.17 0.02
>> scimark 12 1438.69 0.00
>> LU 12 3213.92 0.01
>> FFT 12 211.00 0.02
>> Monte 12 827.71 0.01
>> SOR 12 1365.90 0.00
>> Sparse 12 1574.90 0.01
>> specjbb2000 12 493245.44 0.00
>> Last_Warehouse 12 493245.44 0.00
>> First_Warehouse 12 118938.86 0.00
>> specjbb2005 12 179117.61 0.00
>> last 12 179117.61 0.00
>> interval_average 12 10536.25 0.00
>> peak 12 184040.52 0.01
>> overall_average 12 164733.22 0.01
>> last_warehouse 12 8.00 0.00
>> peak_warehouse 12 4.25 0.11
>> first 12 63494.80 0.00
>> specjvm98 12 1020.02 0.01
>> compress 12 817.54 0.00
>> javac 12 598.70 0.01
>> db 12 407.37 0.02
>> jack 12 1299.66 0.03
>> mtrt 12 2904.37 0.02
>> jess 12 1089.06 0.02
>> mpegaudio 12 1402.48 0.00
>> volano25 12 183768.67 0.04
>> time 12 4.36 0.04
>> connections 12 400.00 0.00
>> --------------------------------------------------------------------------
>> Weighted Geomean 23543.18
>> ============================================================================
>> refworkload_new: reference_server
>> Benchmark Samples Mean Stdev %Diff P Significant
>> jetstream 12 185.36 0.04 0.05 0.972 *
>> Write 12 71.50 0.04 -0.12 0.939 *
>> Parse 12 68.25 0.03 -0.49 0.720 *
>> Read 12 17.42 0.16 -0.97 0.858 *
>> Copy 12 101.25 0.01 0.90 0.173 *
>> scimark 12 1439.00 0.00 0.02 0.883 *
>> LU 12 3219.37 0.01 0.17 0.573 *
>> FFT 12 210.42 0.02 -0.28 0.731 *
>> Monte 12 822.82 0.02 -0.59 0.308 *
>> SOR 12 1366.46 0.00 0.04 0.727 *
>> Sparse 12 1575.92 0.01 0.06 0.827 *
>> specjbb2000 12 494080.03 0.00 0.17 0.390 *
>> Last_Warehouse 12 494080.04 0.00 0.17 0.390 *
>> First_Warehouse 12 118958.56 0.01 0.02 0.929 *
>> specjbb2005 12 177183.33 0.00 -1.08 0.000 Yes
>> last 12 177183.33 0.00 -1.08 0.000 Yes
>> interval_average 12 10422.67 0.00 -1.08 0.000 Yes
>> peak 12 181694.28 0.01 -1.27 0.002 Yes
>> overall_average 12 162698.56 0.00 -1.24 0.000 Yes
>> last_warehouse 12 8.00 0.00 -0.00 0.000 *
>> peak_warehouse 12 4.25 0.15 -0.00 1.000 *
>> first 12 62434.46 0.01 -1.67 0.000 Yes
>> specjvm98 12 1023.79 0.00 0.37 0.066 *
>> compress 12 815.74 0.00 -0.22 0.066 *
>> javac 12 601.44 0.02 0.46 0.488 *
>> db 12 406.33 0.01 -0.26 0.610 *
>> jack 12 1315.79 0.01 1.24 0.162 *
>> mtrt 12 2892.01 0.01 -0.43 0.472 *
>> jess 12 1107.66 0.01 1.71 0.003 Yes
>> mpegaudio 12 1403.36 0.00 0.06 0.560 *
>> volano25 12 180872.25 0.04 -1.58 0.333 *
>> time 12 4.43 0.04 -1.63 0.312 *
>> connections 12 400.00 0.00 0.00 0.000 *
>> --------------------------------------------------------------------------
>> Weighted Geomean 23425.71 -0.50
>> ============================================================================
>>
>>
>>
>> 2) SPARCV9 Solaris
>> ============================================================================
>> refworkload_base: reference_server
>> Benchmark Samples Mean Stdev
>> jetstream 12 36.03 0.01
>> Copy 12 258.08 0.00
>> Parse 12 337.08 0.00
>> Read 12 126.67 0.04
>> Write 12 538.83 0.00
>> scimark 12 44.36 0.01
>> Sparse 12 27.44 0.01
>> LU 12 51.53 0.02
>> SOR 12 80.13 0.01
>> FFT 12 14.28 0.00
>> Monte 12 48.44 0.00
>> specjbb2000 12 80257.23 0.00
>> First_Warehouse 12 10756.41 0.01
>> Last_Warehouse 12 80257.24 0.00
>> specjbb2005 12 274794.56 0.02
>> peak 12 274794.56 0.02
>> peak_warehouse 12 8.00 0.00
>> last 12 274794.56 0.02
>> interval_average 12 535.58 0.02
>> first 12 5079.05 0.02
>> overall_average 12 121172.61 0.07
>> last_warehouse 12 8.00 0.00
>> specjvm98 12 81.51 0.01
>> javac 12 58.26 0.01
>> db 12 54.68 0.03
>> jess 12 88.80 0.00
>> jack 12 41.98 0.01
>> compress 12 87.66 0.00
>> mtrt 12 228.86 0.01
>> mpegaudio 12 100.37 0.00
>> volano25 12 114566.00 0.15
>> connections 12 400.00 0.00
>> time 12 7.15 0.17
>> --------------------------------------------------------------------------
>> Weighted Geomean 6260.91
>> ============================================================================
>> refworkload_new: reference_server
>> Benchmark Samples Mean Stdev %Diff P Significant
>> jetstream 12 35.94 0.01 -0.26 0.419 *
>> Copy 12 257.00 0.00 0.42 0.000 Yes
>> Parse 12 345.33 0.02 -2.45 0.001 Yes
>> Read 12 126.08 0.00 0.46 0.686 *
>> Write 12 535.92 0.00 0.54 0.000 Yes
>> scimark 12 44.47 0.01 0.25 0.340 *
>> Sparse 12 27.37 0.01 -0.24 0.301 *
>> LU 12 51.27 0.01 -0.50 0.525 *
>> SOR 12 81.10 0.01 1.21 0.002 Yes
>> FFT 12 14.24 0.00 -0.27 0.118 *
>> Monte 12 48.37 0.00 -0.14 0.392 *
>> specjbb2000 12 80158.49 0.01 -0.12 0.497 *
>> First_Warehouse 12 10859.44 0.02 0.96 0.169 *
>> Last_Warehouse 12 80158.49 0.01 -0.12 0.497 *
>> specjbb2005 12 271115.25 0.02 -1.34 0.093 *
>> peak 12 271115.24 0.02 -1.34 0.093 *
>> peak_warehouse 12 8.00 0.00 -0.00 0.000 *
>> last 12 271115.24 0.02 -1.34 0.093 *
>> interval_average 12 528.42 0.02 -1.34 0.091 *
>> first 12 5138.08 0.01 1.16 0.074 *
>> overall_average 12 122254.45 0.07 0.89 0.764 *
>> last_warehouse 12 8.00 0.00 -0.00 0.000 *
>> specjvm98 12 81.52 0.01 0.01 0.956 *
>> javac 12 58.16 0.01 -0.16 0.715 *
>> db 12 54.62 0.03 -0.11 0.921 *
>> jess 12 89.43 0.01 0.72 0.005 Yes
>> jack 12 42.04 0.01 0.13 0.619 *
>> compress 12 87.62 0.00 -0.04 0.739 *
>> mtrt 12 228.18 0.02 -0.30 0.608 *
>> mpegaudio 12 100.24 0.00 -0.13 0.383 *
>> volano25 12 116908.34 0.12 2.04 0.713 *
>> connections 12 400.00 0.00 0.00 0.000 *
>> time 12 6.93 0.12 3.02 0.617 *
>> --------------------------------------------------------------------------
>> Weighted Geomean 6264.78 0.06
>> ============================================================================
>>
More information about the hotspot-compiler-dev
mailing list