GraalVM在Facebook大量使用,性能提升显著!「建议收藏」

GraalVM在Facebook大量使用,性能提升显著!「建议收藏」翻译自https://medium.com/graalvm/graalvm-at-facebook-af09338ac519Facebook正在使用GraalVM来加速其Spark的工作负载,并减少内存和CPU的使用。请继续阅读,了解它们的迁移故事、性能改进结果和未来计划。Facebook背后的技术拥有28亿月活跃用户的Facebook是世界上访问量最大的平台之一。为了保证在这种负载下的可靠性和高性能,工程团队采用了多种技术,包括Java、JavaScript、FlowHack、PHP、Pyt.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

翻译自https://medium.com/graalvm/graalvm-at-facebook-af09338ac519

Facebook正在使用GraalVM来加速其Spark的工作负载,并减少内存和CPU的使用。请继续阅读,了解它们的迁移故事、性能改进结果和未来计划。

image.png

Facebook背后的技术

拥有28亿月活跃用户的Facebook是世界上访问量最大的平台之一。为了保证在这种负载下的可靠性和高性能,工程团队采用了多种技术,包括Java、JavaScript、Flow Hack、PHP、Python、c++等。

Facebook在一些关键领域使用了Java,如大数据(Spark、Presto等)、后端服务和移动设备。在迁移到GraalVM之前,该团队在Java 8和Java 11上使用了Oracle JDK和OpenJDK。

在这种规模下,任何性能改进都会带来显著的价值——它们改善了用户体验并降低了基础设施成本。这就是为什么工程团队一直在寻找改进应用程序性能的方法,并决定评估GraalVM,以确定它是否是一个更快的Java运行时。

为什么是GraalVM

  • 由于性能是一个主要考虑因素,Facebook团队决定评估GraalVM作为他们的Java运行环境,看看它是否会提高他们的Java应用程序的性能。GraalVM提供了高级优化,比如部分转义分析和内联启发式。多亏了这一点,许多Java/JVM应用程序只要切换到GraalVM,就能立即获得性能提升。Facebook团队还观察到,与C2相比,GraalVM在SpecJVM2008和DaCapo等基准测试中显示出了显著的年进步。
  • 此外,GraalVM编译器是以模块化和可扩展的方式使用Java从头开始编写的。这使得维护变得很容易,同时还增加了增量改进。这对Facebook来说很重要,因为该团队正在考虑对GraalVM进行长期投资。
  • 社区。GraalVM项目拥有一个充满活力的开源社区,许多组织和个人都为该项目做出了贡献,并形成了它的路线图。在社区中也很容易找到帮助和支持。

在GraalVM上运行Java和Spark

Facebook团队使用了GraalVM社区作为OpenJDK的替代品。在这个场景中,迁移到GraalVM非常简单——只需要切换运行环境,不需要更改应用程序代码。这种转换使得应用程序运行得更快,这得益于GraalVM的高级性能优化,无需任何手动调优。

Apache Spark是一个统一的大数据处理分析引擎,内置流、SQL、机器学习和图形处理模块。它处理数据的速度非常快,但许多团队正在寻找进一步优化其性能的方法。最简单的方法之一是在GraalVM上运行Spark工作负载。多亏了一组特定的编译器优化(我们稍后将详细讨论),GraalVM可以显著加快Spark的工作负载。Renaissance基准测试套件的Apache Spark基准测试显示,社区的平均加速速度为1.1倍,企业的平均加速速度为1.42倍,有些基准测试的速度高达4.84倍。

image.png

对于Facebook来说,Spark是其数据仓库中最大的SQL查询引擎,运行在聚合计算存储集群上。由于数据量巨大,效率和成本的降低是当务之急。

他们从2020年初开始进行评估。由于最初的基准测试显示了良好的结果,团队将gralvm推向了生产,并一直监控其性能和可靠性。

image.png![image.png](https://img-blog.csdnimg.cn/img_convert/a2eb859a2fe03b6653189e15e12f5c04.png#align=left&display=inline&height=381&margin=[object Object]&name=image.png&originHeight=381&originWidth=683&size=39756&status=done&style=none&width=683)

在性能方面,他们观察到CPU使用减少了约10%,而且自推出以来,CPU的减少一直保持一致。

GraalVM如何加速Spark工作负载

对Spark性能提升贡献最大的一些优化是:

  • 多态内联。只有当编译器能够确定方法调用的目标方法时,传统内联才能工作。GraalVM通过收集额外的分析信息(允许也内联抽象方法),使内联超越了这一点。
  • 部分逸出分析。部分转义分析的思想是通过在对象没有转义的分支中执行标量替换来删除不必要的对象分配,并确保对象存在于必须转义的分支中的堆中。这既减少了应用程序的内存占用,又减少了GC引起的CPU负载。这种优化在Spark这样的数据密集型应用程序中更加重要。特别是,根据Facebook的观察,GraalVM在java/lang/Double.valueOf等方法中减少了5倍的CPU消耗。
  • GraalVM中的高级推测性优化通过利用动态运行时反馈产生更快的机器码。通过推测程序的某些部分不会在程序执行期间运行,GraalVM编译器能够专门化代码并使其更高效。对于Spark,通过消除分支(如长if-then-else链)、简化控制流、减少循环体中的动态检查数量以及建立别名约束,这种优化工作得特别好,从而实现进一步的优化。

根据评估结果,Facebook团队将大部分cpu密集型的大数据服务迁移到了GraalVM。他们还观察到,在切换到GraalVM后,Presto的>5%的CPU和GC暂停时间提高了。接下来,该团队计划将GraalVM推到其他内存绑定服务,以从escape分析优化中获益。该团队还计划为项目和社区做出贡献。

他们还在探索使用其他gralvm特性的机会,如Native Image和Truffle Framework。

结论

多亏了高级编译器优化,GraalVM可以显著加快许多Java和Scala工作负载。特别是,通过将GraalVM转换为JDK发行版,Spark的工作负载有望提高10%-42%。

有趣的是,另一个流行的社交媒体平台Twitter的工程师也分享了类似的旅程和观察结果。在将Scala的工作负载转移到GraalVM之后,他们观察到显著的性能改进,例如,多亏了GraalVM编译器,P99延迟降低了19.9%。对于像Twitter或Facebook这样的平台,这种性能改进会随着平台规模的扩大而进一步扩大。

要开始在您的应用程序中使用GraalVM,请访问graalvm.org/docs/getting-started/。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191505.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ORACLE sqlplus连接报ORA-12560解决办法

    ORACLE sqlplus连接报ORA-12560解决办法在windows服务器上cmdsqlplus用户名/密码连接报ORA-12560(协议适配器错误啥的)解决办法如下:1.再原命令上增加@127.0.0.1/实例sqlplus用户名/密码@127.0.0.1/实例assysdba(assysdba可不加)尝试是否能连接。若不能试试cmd打开后先setoracle_sid=实例再…

    2022年7月16日
    16
  • 分享6个免费的优质动漫网站

    分享6个免费的优质动漫网站我们在闲暇之余,可能会看看动漫来打发一下我们无聊的时光,但我们可以看动漫的地方少之又少,很多的动漫要看的话需要充VIP的,就算充了钱,还是有许多的动漫我们是没法看的,今天给大家带来6个免费的动漫网站,大家一起来看看吧。1.樱花动漫这个网站的动漫资源都是免费的,不管是国产动漫,还是外国动漫,在这个网站里面都有,这个网站特别适合看日漫。如果你去这个网站看动漫的话能让你看个够。2.哔哩哔哩这…

    2022年6月15日
    185
  • vue开发移动端app苹果手机的bug脱坑

    vue开发移动端app苹果手机的bug脱坑vue 开发移动端 app 网页打包苹果 app 的坑总结列表设置 overflow auto 后 滚动效果不流畅的问题 可以在列表设置 flex 1 overflow y auto webkit overflow scrolling touch 在 iOS 中出现滚动卡顿问题上诉解决方法还会出现一个问题 就是会导致在列表中如果有弹窗 position fixed 会导致弹窗被覆盖或者覆盖不完全的问题 为此需要将弹窗放在列表外 下面为代码例子

    2025年10月30日
    3
  • ftp工具哪个好用_iis搭建ftp服务器

    ftp工具哪个好用_iis搭建ftp服务器相信很多网友都听说过ftp扫描工具,但是却对其不是很了解,ftp扫描工具是一种ftp账号软件,用户可在ftp扫描工具的帮助下轻松对网站地址进行扫描,从而采集到账号密码、网站收录等多种信息。在对ftp扫描工具做了大概了解之后,小编带大家解读ftp扫描工具如何使用?一、ftp客户端ftp客户端推荐使用iis7服务器管理工具,可以批量管理ftp站点。它是一款服务于windows及linux系统的批量管理工具,同时也是ftp及vnc的客户端。下载地址:http://yczm.iis7.com/?ccxd二

    2022年10月1日
    2
  • nginx配置访问本地静态资源

    nginx配置访问本地静态资源nginx作为一款高性能的服务器,用途很多,除了可以做后端服务器的代理,负载均衡之外你,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问,下面说说如何在windows下使用nginx作为静态资源服务器,1、……

    2022年7月14日
    159
  • PyCharm激活码永久有效PyCharm2019.2.6激活码教程-持续更新,一步到位「建议收藏」

    PyCharm激活码永久有效PyCharm2019.2.6激活码教程-持续更新,一步到位「建议收藏」PyCharm激活码永久有效2019.2.6激活码教程-Windows版永久激活-持续更新,Idea激活码2019.2.6成功激活

    2022年6月19日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号