Integrated: 8359218: RISC-V: Only enable CRC32 intrinsic when AvoidUnalignedAccess == false

Anjian Wen wenanjian at openjdk.org
Thu Jun 12 10:47:40 UTC 2025


On Wed, 11 Jun 2025 08:47:49 GMT, Anjian Wen <wenanjian at openjdk.org> wrote:

> When test **Specjvm** in p550, we can find the compress test result shown below.
> 
> 
> before patch
> -XX:-UseCompactObjectHeaders
> Warmup (30s) begins: Wed Jun 11 16:10:18 CST 2025
> Warmup (30s) ends:   Wed Jun 11 16:10:53 CST 2025
> Warmup (30s) result: 68.98 ops/m
> 
> Iteration 1 (60s) begins: Wed Jun 11 16:10:53 CST 2025
> Iteration 1 (60s) ends:   Wed Jun 11 16:11:57 CST 2025
> Iteration 1 (60s) result: 71.25 ops/m
> 
> 
> -XX:+UseCompactObjectHeaders
> Warmup (30s) begins: Wed Jun 11 16:13:03 CST 2025
> Warmup (30s) ends:   Wed Jun 11 16:13:42 CST 2025
> Warmup (30s) result: 31.87 ops/m
> 
> Iteration 1 (60s) begins: Wed Jun 11 16:13:42 CST 2025
> Iteration 1 (60s) ends:   Wed Jun 11 16:14:56 CST 2025
> Iteration 1 (60s) result: 29.13 ops/m
> 
> 
> Add flamegraph Before the patch
> 1. With parmater -XX:-UseCompactObjectHeaders
> 
> java -XX:-UseCompactObjectHeaders -XX:+UseParallelGC -XX:+AlwaysPreTouch -Xms8g -Xmx8g -jar SPECjvm2008.jar -ikv -ict -coe -crf 0 -bt 4 -wt 30s -it 1m -i 4 compress
> 
> ![closeCompactObjectHeader](https://github.com/user-attachments/assets/cea7f230-799a-4e9c-a541-626dd485670f)
> 
> 
> 2. With parmater -XX:+UseCompactObjectHeaders
> 
> java -XX:+UseCompactObjectHeaders -XX:+UseParallelGC -XX:+AlwaysPreTouch -Xms8g -Xmx8g -jar SPECjvm2008.jar -ikv -ict -coe -crf 0 -bt 4 -wt 30s -it 1m -i 4 compress
> 
> ![openparm](https://github.com/user-attachments/assets/24e07f17-4cb9-459d-b50d-8d1ad6355ebf)
> 
> 
> The reason is that when enable compactObjectHeaders, the arraylist header turn to 4 Byte, but the copy instruction used in CRC intrinsic loop is 8 Byte one loop, which may reduce the performance when hardware is sensitive to unaligned access, we can close it when AvoidUnalignedAccesses is true
> 
> after patch 
> 
> -XX:-UseCompactObjectHeaders
> Warmup (30s) begins: Wed Jun 11 16:23:22 CST 2025
> Warmup (30s) ends:   Wed Jun 11 16:23:57 CST 2025
> Warmup (30s) result: 68.61 ops/m
> 
> Iteration 1 (60s) begins: Wed Jun 11 16:23:57 CST 2025
> Iteration 1 (60s) ends:   Wed Jun 11 16:25:00 CST 2025
> Iteration 1 (60s) result: 71.57 ops/m
> 
> 
> -XX:+UseCompactObjectHeaders
> Warmup (30s) begins: Wed Jun 11 16:25:28 CST 2025
> Warmup (30s) ends:   Wed Jun 11 16:26:03 CST 2025
> Warmup (30s) result: 68.36 ops/m
> 
> Iteration 1 (60s) begins: Wed Jun 11 16:26:03 CST 2025
> Iteration 1 (60s) ends:   Wed Jun 11 16:27:08 CST 2025
> Iteration 1 (60s) result: 70.85 ops/m

This pull request has now been integrated.

Changeset: 65e63b6a
Author:    Anjian Wen <wenanjian at openjdk.org>
Committer: Feilong Jiang <fjiang at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/65e63b6ab4241fc9d683e2ffa5bfe6e1a30059b6
Stats:     3 lines in 1 file changed: 0 ins; 0 del; 3 mod

8359218: RISC-V: Only enable CRC32 intrinsic when AvoidUnalignedAccess == false

Reviewed-by: fyang, fjiang

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

PR: https://git.openjdk.org/jdk/pull/25743


More information about the hotspot-dev mailing list