基于openjdk 17的龙芯平台java环境发布,loongarch平台同步支持
2022年1月27日,龙芯中科于龙芯开源社区正式对外发布基于openjdk 17的龙芯平台java环境。java 17提供了数千种性能、稳定性和安全性更新,以及14个jep(jdk enhancement proposal,即 jdk 增强建议)来进一步优化java语言和平台,从而帮助开发人员提高工作效率。
java 17是oracle最新发布的长期支持 (long-term support, lts) 版本[1]。关于java 17更详细的内容请见下方oraclej9九游国际真人官网[2]。此次新发布的版本,除了上述上游更新以外,龙芯团队针对龙芯平台特别是loongarch平台进行了新功能开发和优化,具体如下:
符合tck标准
龙芯平台java 17环境经过验证符合java se 17,新应用程序和现有应用程序无需修改即可运行。
支持c1编译器和分层编译
c2编译器(server compiler)主要满足了java应用的峰值性能需求,此次发布的loongarch64平台环境支持c1编译器(client compiler)和分层编译,可进一步满足对启动性能有要求的java应用,比如桌面应用。通过实测,龙芯平台开启c1和分层编译之后,部分应用得到了显著提升:eclipse启动时间减少16.4%,netbeans启动时间减少20.1%,specjvm2008中的startup项提升13.4%,dacapo中luindex和fop用时分别降低31.9%和29.2%。
loongarch向量指令优化
此次版本通过使用loongarch向量指令对c2编译器进行了自动向量化优化,同时还进行了vector api的硬件支持。通过实测,开启向量优化后,在loongarch64平台上specjvm2008中的scimark.lu.small提升了102.7%,jmh microbenchmarks含有vector关键字的168项测试中,计时类测试中有39项用时降低1/2以上,吞吐量类测试中有26项提升2倍以上、其中最高项提升了200倍以上。
支持zgc
zgc(the z garbage collector),是一款低延迟垃圾回收器,它的设计目标包括[3]:
● 亚毫秒级最大停顿时间
● 暂停时间不随堆的大小、存活集及根集的大小的增加而增加
● 支持8mb至16tb级别的堆大小
通过实测,龙芯平台(loongarch64)开启zgc后,在3c5000l双路上specjbb2015 max-jops提升27.8%,critical-jops提升200%以上。
加解密类优化
此次版本通过intrinsics方式使用loongarch基础指令对sha1、sha256、aes、md5以及crc32相关api进行优化。这些优化对specjvm2008中的crypto等项目有显著提升效果。
数组拷贝优化
此次版本针对loongarch进行了数组拷贝相关操作的重构和优化。通过jmh microbenchmarks测试显示,org.openjdk.bench.java.lang.arraycopy相关测试用例优化后平均执行时间下降33%,最多项下降了76.77%,specjvm2008中的serial项优化后提升了6%以上。
原子指令优化
此次版本通过使用loongarch原子访存指令减少了内存屏障指令的使用,对volatile相关操作实现了优化。
后期规划
除了上述优化以外,此次发布的版本还包含针对龙芯平台的一些故障修复。这些优化和故障修复中的部分内容已集成至龙芯平台低版本jdk中,更多内容会根据情况陆续集成至低版本jdk中。
「下载方式」
下载龙芯平台java 17环境,以及了解更多关于龙芯平台java信息请访问龙芯开源社区(下方地址)
http://www.loongnix.cn/index.php/java
参考资料:
[1] https://www.oracle.com/cn/news/announcement/oracle-releases-java-17-2021-09-14
[2] https://www.oracle.com/java/technologies/javase/17-relnotes.html
[3] https://wiki.openjdk.java.net/display/zgc/main