RFR(M) 8188165: PPC64: Optimize Unsafe.copyMemory and arraycopy
Gustavo Romero
gromero at linux.vnet.ibm.com
Wed May 16 14:08:10 UTC 2018
Hi,
>[Ping]
>
>On 9/29/17 4:00 PM, Matthew Brandyberry wrote:
>> This is specific to PPC64LE only.
>>
>> The emphasis in the proposed code is on minimizing branches. Thus,
>> this code makes no attempt to avoid misaligned accesses and each block
>> is designed to copy as many elements as possible.
>>
>> As one data point, this yields as much as a 13x improvement in
>> jbyte_disjoint_arraycopy for certain misaligned scenarios.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8188165
>> Webrev: http://cr.openjdk.java.net/~mbrandy/8188165/jdk10/v1/
For the records, Martin already reviewed that change and pointed out some
aspects that need to be improved / addressed in that change. Mainly:
- Avoid adding another stub
- It should not be just a solution for LE (it must work for both endianness)
Additionally, I tested the change using SPECjbb2015 and found a slight regression.
On a POWER8, SMT=8, score of 10 runs:
Mean max-jOPS Mean critical-jOPS SD max-jOPS SD critical-jOPS
+--------+---------------+--------------------+-------------+------------------+
w/ opto | 24387.6 | 3905.4 | 972.960 | 323.4238 |
+------------------------------------------------------------------------------+
wo/ opto | 24891.7 | 3933.1 | 227.518 | 293.6455 |
+--------+---------------+--------------------+-------------+------------------+
I'll try to address it before OpenJDK 11 rampdown.
Best regards,
Gustavo
[RUNs]
-- w/ opto --
root at pub:~/SPECjbb2015-1.00# for i in 18-04-10_222315-not-reverted 18-04-11_211557-not-reverted 18-04-11_233332-not-reverted 18-04-12_014507-not-reverted 18-04-14_132617-not-reverted 18-04-14_154517-not-reverted 18-04-14_181417-not-reverted 18-04-14_203008-not-reverted 18-04-14_224917-not-reverted 18-04-15_010546-not-reverted; do fgrep "jOPS =" $i/controller.out;done
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 22693, critical-jOPS = 3386
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26793, max-jOPS = 24907, critical-jOPS = 4070
RUN RESULT: hbIR (max attempted) = 28420, hbIR (settled) = 27532, max-jOPS = 24725, critical-jOPS = 4281
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 22416, critical-jOPS = 4321
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26793, max-jOPS = 24907, critical-jOPS = 3777
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24907, critical-jOPS = 4117
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26793, max-jOPS = 24907, critical-jOPS = 4124
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24630, critical-jOPS = 3516
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24907, critical-jOPS = 3663
RUN RESULT: hbIR (max attempted) = 33169, hbIR (settled) = 27674, max-jOPS = 24877, critical-jOPS = 3799
-- wo/ opto --
root at pub:~/SPECjbb2015-1.00# for i in 18-04-11_004013-reverted 18-04-12_040118-reverted 18-04-12_061741-reverted 18-04-12_083821-reverted 18-04-15_025546-reverted 18-04-15_050857-reverted 18-04-15_072246-reverted 18-04-15_093501-reverted 18-04-15_115234-reverted 18-04-15_141256-reverted; do fgrep "jOPS =" $i/controller.out;done
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24630, critical-jOPS = 4258
RUN RESULT: hbIR (max attempted) = 29485, hbIR (settled) = 28420, max-jOPS = 25062, critical-jOPS = 3839
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26793, max-jOPS = 24907, critical-jOPS = 4056
RUN RESULT: hbIR (max attempted) = 33169, hbIR (settled) = 27674, max-jOPS = 24877, critical-jOPS = 3985
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26793, max-jOPS = 24907, critical-jOPS = 3897
RUN RESULT: hbIR (max attempted) = 28420, hbIR (settled) = 27532, max-jOPS = 25010, critical-jOPS = 4308
RUN RESULT: hbIR (max attempted) = 29485, hbIR (settled) = 28420, max-jOPS = 25357, critical-jOPS = 4096
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24907, critical-jOPS = 3798
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24630, critical-jOPS = 3829
RUN RESULT: hbIR (max attempted) = 27674, hbIR (settled) = 26176, max-jOPS = 24630, critical-jOPS = 3265
More information about the ppc-aix-port-dev
mailing list