助力国产芯片 —Dragonwell新增aarch64支持

简介: ![dragonwelltitle.png](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/e0bf132c1b6e779c761a8ad2c697cee9.png) ## 前言 目前国产化芯片无疑是中国科技圈的一大热点。得益于相对较高的自由度,以及比较完善的生态环境,ARM架构得到了众多国内芯片公司的认可。然而由于OpenJDK社区对A

dragonwelltitle.png

前言

目前国产化芯片无疑是中国科技圈的一大热点。得益于相对较高的自由度,以及比较完善的生态环境,ARM架构得到了众多国内芯片公司的认可。然而由于OpenJDK社区对ARM架构的支持较晚,一些国内广泛使用的JDK版本(比如JDK8)的社区代码主干上并没有对aarch64的支持;另外一些厂商虽然提供了支持aarch64的JDK,却并没有开源代码。这对尝试新架构的Java用户在选择JDK时造成了一些困扰。
为了解决这个问题,Alibaba Dragonwell近日发布了新版本(8.5.5及11.0.9.4),添加了对aarch64架构的支持,对自主芯片的规模化使用,技术架构演进给予了强力支撑。

Alibaba Dragonwell

Alibaba Dragonwell是阿里巴巴开源的JDK,它是OpenJDK的下游,提供了OpenJDK的所有能力,并且通过AdopeOpenJDK社区进行构建发布,提供高质量的经过测试验证的JDK发行版。
下图展示Alibaba Dragonwell的整体架构:
dragonwellarch.png

除了OpenJDK已有功能外,Alibaba Dragonwell还增加了以下独有特性

  • JWarmup: 根据前一次程序运行的情况,记录下热点方法、类编译顺序等信息,在应用下一次启动的时候积极加载相关的类,并积极编译相关的方法,进而应用启动后可以直接运行编译好的Java代码。
  • JFR: Java Flight Recorder (JFR) 是一款用于收集Java应用运行过程中的诊断及性能数据的工具,目前已经被集成进Alibaba Dragonwell中。在使用默认配置的情况下,JFR带来的额外开销将小于2%,因此可以用在生产环境。
  • G1ElasticHeap: 支持在G1中动态归还堆物理内存并降低Java进程的内存占用。
  • Wisp: Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后,Java线程不再简单地映射到内核级线程,而是对应到一个协程,JVM在少量内核线上调度大量协程执行,以减少内核的调度开销,提升web服务器的性能。

aarch64支持

在介绍Alibaba Dragonwell的aarch64支持之前,我们现在回顾下上游OpenJDK的情况。
JDK9引入了一个新JEP(Java Enhancement Proposal): JEP237 正式引入了对arm32及aarch64的支持。自此我们可以视JDK9为一个分水岭,在JDK9及之后的JDK,包括长期支持版本JDK11,在代码主干上具备对aarch64的支持,而之前的版本(例如JDK8)并不兼容aarch64。

从上游情况可知,对于Dragonwell8来说,aarch64是一个从0到1的过程,因此主要以稳定性为主,修复了JIT代码,编译线程以及锁操作中的一些bug,在阿里的多个应用中表现稳定,且通过了TCK测试。
对于Dragonwell11来说,目标是在OpenJDK11现有的基础上进行充分的优化,追求极致性能。具体的,Dragonwell11在以下方面进行了优化

  1. 优化了GC work stealing机制,使GC线程负载更加均衡,减少GC时间
  2. 使用高版本GCC编译JDK,并使用ARMv8.2的指令进行优化,hostpot JVM的性能获得了增强,特别是原子CAS(Compare and Swap)操作有明显提升。
    下图是优化前后在不同核数下运行SPECjbb2015的吞吐率对比,吞吐率计算方法如下,越高越好。
    吞吐率 = (运行时间 – Stop-The-World时间)/运行时间 * 100%

gcopt.png

我们可以看到随着核数增长未优化的版本吞吐率明显下降,这是因为GC使用的CAS很多,而传统的CAS实现方式在多核情况下性能较差,导致GC暂停时间显著增加。优化后的版本随着核数增长,吞吐率始终保持在较高的水平,可拓展性很好。

小结

本文总结了Dragonwell支持aarch64架构的一些相关情况及优化措施,欢迎大家下载使用Alibaba Dragonwell。
Alibaba Dragonwell 8 Wiki
https://github.com/alibaba/dragonwell8/wiki
Alibaba Dragonwell11 Wiki
https://github.com/alibaba/dragonwell11/wiki

相关文章
|
4月前
|
Linux 芯片 Docker
【国产适配】国产龙芯操作系统上安装minio
【国产适配】国产龙芯操作系统上安装minio
118 0
|
12天前
|
Rust Anolis 芯片
Anolis OS 23.1 BETA 预览版:龙芯同源异构完成,支持更多芯片厂家
BETA 预览版本整体取得了新的进展,主要在各类架构和芯片支持层面实现了更广泛的支持。
|
存储 SQL 运维
云栖大会开源重磅升级![版本更新]PolarDB-X v2.2: 企业级和国产ARM适配
PolarDB-X 正式发布2.2.0版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产ARM适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。
|
开发工具 数据安全/隐私保护 开发者
RISC-V生态开发套件解析(四):LicheeRV 86开发板Debian镜像体验
随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。
449 0
RISC-V生态开发套件解析(四):LicheeRV 86开发板Debian镜像体验
|
机器学习/深度学习 弹性计算 边缘计算
全面挑战x86!Arm公布最强服务器内核及首款ArmV9平台
去年9月,Arm公布了两大服务器芯片平台Neoverse V1和N2,但并没有公开性能情况,那么到底性能如何,是否能全面挑战x86?刚刚,Arm揭晓了答案。
328 0
全面挑战x86!Arm公布最强服务器内核及首款ArmV9平台
|
人工智能 NoSQL 前端开发
平头哥发布支持玄铁处理器Linux新版本,5大亮点速览
看完是否已经迫不及待想试用了?登陆OCC官网获取演示资料。
平头哥发布支持玄铁处理器Linux新版本,5大亮点速览
|
Java 关系型数据库 Android开发
重磅发布:阿里 OpenJDK终于开源啦! 将长期支持版本 Dragonwell
重磅发布:阿里 OpenJDK终于开源啦! 将长期支持版本 Dragonwell
4808 0