写点什么

Azul Systems 推出 Falcon,一个基于 LLVM 的新的 Java 即时编译器

  • 2017-05-11
  • 本文字数:1708 字

    阅读完需:约 6 分钟

近日, Azul Systems 发布了 Zing 17.03。该版本完全支持 Azul 基于 LLVM 的新的 Java 即时(JIT)编译器 Falcon。该编译器设计用来取代 Zing 先前版本以及 Oracle HotSpot 和 OpenJDK 使用的 C2 编译器。Falcon 是 1997 年 JavaOne 大会推出 C2 以来 Java SE 的第一个新的生产用 JIT 编译器。

LLVM 是一个现代化的开源编译器框架,也是 Swift、Rust 等许多新语言首选的后端“引擎”。它获得了学术界的大力支持,并且拥有包括 AMD、Apple、Cray、IBM、Intel、 Microsoft、Sony 和 SAP 在内的众多商业支持者。广泛的支持可以帮助它充分利用新的服务器硬件和新的指令集,它经常利用新的处理器技术,如Intel 的Broadwell 和Skylake 处理器提供的矢量化和加密优化,早在其他语言之前提供这种支持。

Azul 首席执行官 Gil Tene 告诉 InfoQ:

使用 LLVM 为我们提供了巨大的优势,数以百计的人对它进行优化,让它与最新的处理器能力保持同步,这些成果可以立即应用到 Java 代码上。

关于这一点,一个简单具体的例子是,Falcon 已经使用 Intel 最新的 CPU(例如,当前 Broadwell Intel E5-v4 服务器上的 AVX2 指令集)所提供的最新 / 最棒的矢量指令功能来优化常规的 Java 循环。由于 AVX2 增加了谓词矢量运算能力,所以 Falcon 能够在循环(例如,“将数组中的偶数相加”)中矢量化在之前的硬件上无法矢量化的谓词操作,因此,同样的 Java 类在较新的服务器上执行速度更快。[目前]HotSpot 甚至都没有试一下……

但最重要的是,我们获得了这种好处,不是通过一群 Azul 工程师花时间进行矢量化优化以及选择恰当的方法匹配每一种处理器。举例来说,我们是从 Intel 过去两年的投入以及他们将这些优化贡献给 LLVM 获益的。他们的贡献已经应用到了 C/C++/Clang/Rust,就像(现在)应用到 Java 一样。

Falcon 让我们可以做一些很酷的、JVM 相关的优化,而使用 C2 则无法应用这些优化。GC 屏障相关的优化就是其中的一个例子。此外还有更高层次的语言优化。关于更高层次的优化,一个具体的例子是,我们用较少的投入就在 Falcon 中引入了针对“真正 final”字段的优化,在 C2 中引入的话,投入要多得多。[实例 final 字段的挑战在于,它们可能不是“真正 final”的,因为反射和 Unsafe 可以重写它们,而且经常这样做]。Falcon 能够优化 Java 中使用实例 final 字段的操作,它所采用的方式是以前的 JIT 不曾做过的(例如,将数组范围检查提取到循环之外)。过去的几年里,在 HotSpot 和 Zing 中,这一特性一直处于原型模型开发阶段(在 OpenJDK 的部分邮件列表中可以找到相关讨论),但之前从没有在哪个 JVM 中实现产品化,其中有一部分原因是让 JIT 编辑器处理得很好复杂度很高。

有鉴于此,Falcon 在新硬件上性能超过 C2 就不奇怪了。例如,Tene 告诉 InfoQ,在特定的加密负载基准测试中,它比 Oracle HotSpot 快 3.5 倍,比 Oracle HotSpot 使用基于 Skylake 的服务器(Intel Xeon E5-xxxx)进行 Cassandra 基准测试快大约 10%。另外,在低延迟环境中,它也比 Zing 以前的版本快许多。按照 Tene 的说法,一个运行交易基础设施的 Azul Zing 客户观察到了大约 18~24% 的速度提升。

Azul 是第一个在生产级托管运行时中使用 LLVM 的组织。为了完成这项工作,LLVM 借助 Azul 提供的其他功能进行了增强,包括安全点和 GC 屏障方面的优化,提供 JIT 代码替换和逆优化的能力,包括隐式 null 检查、预测去虚拟化及保护内联在内的预测运行时优化。

如你所料,Falcon 还支持 Azul 在 2014 年推出的 ReadyNow 技术。按照设计,ReadyNow 是为了避免 Java 虚拟机“预热”,鉴于 JVM 有足够的时间学习哪些代码要编译成机器级,应用程序所有者试图通过这种方法充分利用 JIT 编译器优化。

现有用户可以从 Zing 支持门户上直接下载 Zing 17.03。Azul 网站上也提供了 Zing 新版本的 30 天试用。Zing 单许可的全年订阅价为每台服务器 3500 美元,大量许可长期订阅价格会低许多。

5 月 4 日,太平洋时间上午 11 点,Azul 首席技术官 Gil Tene 举办了一场题为“走进Falcon 编译器”的网络研讨会。研讨会加Q&A 持续了约一小时。

查看英文原文 Azul Systems Launches Falcon, a New Just-in-Time Compiler for Java, Based on LLVM

2017-05-11 19:003735
用户头像

发布了 1008 篇内容, 共 426.1 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

借助 mperf 进行矩阵乘法极致优化

MegEngineBot

开源 性能优化 MegEngine

干货|10个C4D必备插件,让工作事半功倍

Finovy Cloud

C4D 3ds Max

使用 Alluxio 优化 EMR 上 Flink Join

亚马逊云科技 (Amazon Web Services)

人工智能

从质量思维到用户思维

老张

质量保障 用户思维

MobTech|什么是SDK

MobTech袤博科技

vika维格表 x 阿里云计算巢:SaaS 云端私有化部署,助力企业数字化转型

云布道师

计算巢

Gogs/Gitea 环境搭建

流火

git gogs Gitea

国网信通产业集团*IoTDB | 三平台管理百亿级累计数据,构建端边云全周期电力数据高效解决方案

Apache IoTDB

IoTDB 国产时序数据库

运维训练营第20周作业

好吃不贵

天津市人工智能计算中心揭牌 天下津梁融汇AI之力

脑极体

算力

2023最新最全Java面试速成指南,面试骚操作都在里面了

程序员小毕

程序员 后端 高并发 架构师 java面试

智能公厕应用人工智能技术,实现智慧化管理与服务

光明源智慧厕所

智慧城市

Groovy关键字def

FunTester

低代码起势,开发者可以早日脱离996了?

引迈信息

程序员 前端 低代码 996

Activity初学乍练

芯动大师

android 活动 Activity

JVM 的 noverify 启动参数

HoneyMoose

Koordinator 助力 ACK 容器调度升级,提升应用性能,节约资源成本

阿里巴巴云原生

阿里云 容器 云原生 Koordinator

OpenHarmony关系型数据库查询结果呈现

白晓明

关系型数据库 数据库查询 OpenHarmony

分享:数据库存储与索引技术(三)LSM树实现案例

OceanBase 数据库

数据库 oceanbase

尚硅谷数据湖Iceberg视频教程发布

小谷哥

OpenKruise 成为 CNCF 孵化项目:为大规模采用 Kubernetes 打开大门

阿里巴巴云原生

阿里云 开源 云原生 OpenKruise cncf

快来看HarmonyOS 3新动作!华为畅享10S等24款设备启动花粉Beta招募

最新动态

flutter系列之:在flutter中使用媒体播放器

程序那些事

flutter 架构 大前端 程序那些事

用AI回忆起曾被忘却的语言

脑极体

AI

B站容量管理:游戏赛事等大型活动资源如何快速提升10+倍?

TakinTalks稳定性社区

Go如何自动解压缩包?如何读取docx/doc文件内容?

王中阳Go

Go 高效工作 学习方法 文件处理 压缩

跟GPT学k8s-Kubernetes-native load balancer options

jupiter

DeepL:慢公司的快速扩张之路

CnosDB

DeepL 时序数据库 开源社区 CnosDB

Dubbo 就近路由

昵称不能为null

dubbo 路由

Tapdata 赋能敏捷转型:头部知识付费应用如何搭载实时数据快速提升人效,创造业务增长点

tapdata

数据库

如何在容器服务 ACK 玩转 MSE Ingress

阿里巴巴云原生

阿里云 容器 微服务 云原生

Azul Systems推出Falcon,一个基于LLVM的新的Java即时编译器_Java_Charles Humble_InfoQ精选文章