写点什么

助力 ARM 生态 —Dragonwell 新增 aarch64 支持

发布于: 2021 年 01 月 11 日
助力ARM生态 —Dragonwell新增aarch64支持

作者:阿里云基础软件:卓仁


前言

得益于相对较高的自由度,以及比较完善的生态环境,ARM 架构得到了众多芯片公司的认可。然而由于 OpenJDK 社区对 ARM 架构的支持较晚,一些国内广泛使用的 JDK 版本(比如 JDK8)的社区代码主干上并没有对 aarch64 的支持;另外一些厂商虽然提供了支持 aarch64 的 JDK,却并没有开源代码。这对尝试新架构的 Java 用户在选择 JDK 时造成了一些困扰。

为了解决这个问题,Alibaba Dragonwell 近日发布了新版本(8.5.5 及 11.0.9.4),添加了对 aarch64 架构的支持,对 ARM 芯片的规模化使用,技术架构演进给予了强力支撑。


Alibaba Dragonwell

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

下图展示 Alibaba Dragonwell 的整体架构:



除了 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 服务器的性能。

  • 多租户: 为平台型 Java 应用提供一个细粒度资源管控的能力。


目前 JWarmup/G1ElasticHeap/多租户可以在 x86 和 aarch64 两个平台使用,JFR 和 Wisp 仅支持 x86 平台,预计下次发布支持这两个特性。


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,在阿里的多个应用中表现稳定。

对于 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%
复制代码



我们可以看到随着核数增长未优化的版本吞吐率明显下降,这是因为 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


欢迎您钉钉扫码进群交流:


往期精彩回顾:

1.https://xie.infoq.cn/article/57b39059360e84ff216d35d7f

2.https://xie.infoq.cn/article/82998b06ff32afd30fb2c12ce

3.https://xie.infoq.cn/article/c49a615ee9bffc682c9bff2a7


发布于: 2021 年 01 月 11 日阅读数: 172
用户头像

期待您的加入! 2020.03.27 加入

阿里巴巴基础软件团队负责全集团的服务器操作系统,Linux内核,编译器,语言(C&C++,Java等)的研发与产品化, 及软硬件结合的系统性能优化。有alios,alikernel,ajdk(alibabajdk),alibaba gcc/llvm,SPEED等产品。

评论

发布
暂无评论
助力ARM生态 —Dragonwell新增aarch64支持