写点什么

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:003952
用户头像

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

关注

评论

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

集团型企业主数据管理框架、方法

用友BIP

华为云会议,总有一种场景满足你的需求

科技说

上云合作伙伴,华为云桌面致力打造优质云上办公生态

与时俱进的时代

重磅 | 九科信息入选“第一新声”2022年中国RPA行业优秀厂商图谱

九科Ninetech

开源创新 源起潮“蜥”——龙蜥社区走进浪潮信息 MeetUp 即将开幕

OpenAnolis小助手

云原生 Meetup 龙蜥社区 浪潮信息 开源活动

华为云桌面,助您解锁轻松高效办公模式

科技怪授

致力程序员成长,阿里大佬“亲码”Java全栈架构笔记,差距不止一点点

程序员小毕

程序员 程序人生 后端 架构师 java面试

居家办公正确的打开方式——华为云桌面

与时俱进的时代

存量时代下 用低代码开发平台提升你的CEM

力软低代码开发平台

有奖征文活动:从 RTC 到 RTE,从音视频到「实时万象」!

声网

人工智能 音视频

产品更新快培训成本高?华为云会议助力企业降本增效

IT科技苏辞

「实操」适配 NebulaGraph 新版本与压测实践

NebulaGraph

图数据库

华为云会议助力中建一局视频会议数字化升级

IT科技苏辞

华为云桌面Workspace,如何让用户安全高效云上办公?

科技怪授

2022年最有价值书单

月亮上的六便士

好书推荐

灵活、高效、可靠,华为云桌面想用户所想!

与时俱进的时代

华为云桌面——云上办公安全高效,高清流畅

与时俱进的时代

Go Gorm Sqlite3 CreateInBatches 报错:too many SQL variable 排查与解决

非晓为骁

Go gorm sqlite3 CreateInBatches

webAssembly on server side 的应用场景

磊吐槽

云原生 webassembly

华为云助力中建一局会议上云,沟通协同更高效!

IT科技苏辞

安全高效,华为云桌面打造全新云上办公体验!

科技怪授

华为云Workspace树立云服务模式新标杆

科技怪授

gitlab ldap配置

阿呆

gitlab ldap

What's new in dubbo-go v3.0.4

apache/dubbo-go

dubbo Dubbo服务 Dubbo网关

2022 卡塔尔世界杯收官,中国 App 继续中东「征战」

融云 RongCloud

App

流畅高清,华为云桌面助力设计师高效办公!

与时俱进的时代

简单易用的监控告警系统 | HertzBeat 在 Rainbond 上的使用分享

北京好雨科技有限公司

华为云桌面,为企业数字化办公添砖加瓦!

科技怪授

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