一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

優(yōu)化指南:釋放Java更高性能

安晟培半導(dǎo)體 ? 來源:安晟培半導(dǎo)體 ? 作者:安晟培半導(dǎo)體 ? 2023-06-29 18:19 ? 次閱讀

概述

在過去的十年中,Java 已經(jīng)成為最流行的云編程語言之一。Hadoop、Cassandra 和 Kafka 等流行的云應(yīng)用程序都使用 Java 語言和框架。Java 是一種通用的面向?qū)ο笳Z言,被設(shè)計(jì)為 Write Once Run Anywhere,它依賴于一個(gè) Java 虛擬機(jī)(JVM)來將字節(jié)碼轉(zhuǎn)換為特定應(yīng)用程序所運(yùn)行的體系結(jié)構(gòu)的機(jī)器代碼。顯然,JVM 在運(yùn)行時(shí)生成的代碼質(zhì)量對應(yīng)用程序性能至關(guān)重要。

本指南描述了在 Ampere Altra 系列處理器上的 Java 支持狀態(tài),提供了一種構(gòu)建 OpenJDK 的方法,并比較了不同OpenJDK 版本和二進(jìn)制源代碼的性能。

01Ampere Altra 系列處理器AARCH64架構(gòu)支持 JAVA 嗎?

OpenJDK 是官方的參考 JVM 實(shí)現(xiàn)。OpenJDK 是自由開源軟件(FOSS),被大多數(shù) Java 開發(fā)人員使用,并且是大多數(shù) Linux 發(fā)行版的默認(rèn) JVM。AArch64 移植已經(jīng)是 OpenJDK 項(xiàng)目的一部分了(見下方網(wǎng)址)。今天,從Java Development Kit 8 (JDK8)開始,OpenJDK 在 AArch64 上得到了很好的支持。

Ampere Altra 和 AmpereAltraMax 處理器從頭開始為云而設(shè)計(jì),為云原生應(yīng)用提供可預(yù)測的性能、高可擴(kuò)展性和出色的電源效率。Ampere Altra 計(jì)算核心采用 ARMv8 指令集架構(gòu)(ISA),支持 AArch64 和 AArch32 指令集。目前,各種 Linux 發(fā)行版中包含的 jdk 都支持 Ampere Altra 家族處理器,但 JDK17 等較新的長期支持(LTS)版本可以提供明顯更好的性能。

02從哪里可以獲取 OPENJDK?

用于 Ampere Altra 系列處理器的 OpenJDK 二進(jìn)制文件可以從幾個(gè)來源獲得。Linux 發(fā)行版通過各自的包存儲庫提供 OpenJDK。Adoptium 是預(yù)構(gòu)建 OpenJDK AArch64 二進(jìn)制文件的另一個(gè)來源。

OpenJDK 有許多發(fā)布版本,但只有表 1 中列出的版本具有 LTS 發(fā)布限定符(LTS release qualifier)。不同的 OpenJDK 發(fā)行版可能提供表1所示的生命終止日期(End of Life)。

e3f1e61a-1664-11ee-962d-dac502259ad0.png

表 1:OpenJDK LTS

03如何構(gòu)建 OPENJDK?

Linux 發(fā)行版提供了不同的方式來安裝 OpenJDK,例如 yum 存儲庫用于 RHEL 和 CentOS, apt 存儲庫用于 Ubuntu 或 Debian。

對于自定義構(gòu)建 OpenJDK,本節(jié)列出了如何從源代碼構(gòu)建 OpenJDK 的推薦步驟。

在構(gòu)建 OpenJDK 時(shí)建議使用 GCC。不同的 GCC 版本有不同的 AArch64 選項(xiàng),如表 2 所示。

e40f608c-1664-11ee-962d-dac502259ad0.png

表 2:GCC Options

構(gòu)建 OpenJDK 用到了一下配置和選項(xiàng):

bash configure --with-alsa=/usr --with-alsa-lib=/usr/lib64 --with-cacerts-file=/etc/pki/java/cacerts --with-cups=/usr --with-debug-level=release --with-native-debug-symbols=none --with-extra-cflags="-pipe -fPIC -DPIC -Wl,-rpath=/usr/lib64 -L/usr/lib64 -mcpu=neoverse-n1" --with-extra-cxxflags="-pipe -fPIC -DPIC -Wl,-rpath=/usr/lib64 -L/usr/lib64 -mcpu=neoverse-n1" --with-extra-ldflags="-Wl,-rpath=/usr/lib64 -L/usr/lib64" --with-stdc++lib=dynamic --with-target-bits=64 --with-zlib=system --x-includes=/usr/include --x-libraries=/usr/lib64 --with-boot-jdk= --prefix= 
make images 
make install

04性能的影響因素

讓我們來評估一些通過基本調(diào)優(yōu)就可能實(shí)現(xiàn)的性能改進(jìn)。我們在基于 Ampere Altra q80 -30 的服務(wù)器上使用 SPECjbb2015,這是一種在復(fù)合模式下流行的標(biāo)準(zhǔn)化 Java 基準(zhǔn)測試。系統(tǒng)配置如表 3 所示:

e465ba68-1664-11ee-962d-dac502259ad0.png

表 3:System Configuration

評估中使用了如下的 OpenJDK 選項(xiàng):

-Xms130560m -Xmx130560m -Xmn123g -XX:SurvivorRatio=39 -XX:ObjectAlignmentInBytes=32 -XX:TargetSurvivorRatio=95 -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:MetaspaceSize=64m -server -XX:+AlwaysPreTouch -XX:-UseAdaptiveSizePolicy -XX:-UseCountedLoopSafepoints -XX:-UsePerfData -XX:+PrintFlagsFinal -XX:+UseTransparentHugePages -XX:+UseParallelGC -XX:ParallelGCThreads=80 -XX:AllocatePrefetchDistance=512 -XX:AllocatePrefetchLines=4 -XX:InlineSmallCode=2k -XX:TypeProfileWidth=4 -XX:SoftwarePrefetchHintDistance=128 -XX:+AvoidUnalignedAccesses -XX:BlockZeroingLowLimit=64K -XX:+UseBlockZeroing -XX:-UseSIMDForArrayEquals -XX:+UseSIMDForMemoryOps

這些是 SPECjbb 的屬性:

-Dspecjbb.customerDriver.threads=64 -Dspecjbb.customerDriver.threads.service=64 -Dspecjbb.customerDriver.threads.probe=64 -Dspecjbb.customerDriver.threads.saturate=96 -Dspecjbb.forkjoin.workers=80 -Dspecjbb.forkjoin.workers.Tier1=80 -Dspecjbb.forkjoin.workers.Tier2=1 -Dspecjbb.forkjoin.workers.Tier3=16 -Dspecjbb.comm.connect.selector.runner.count=4 -Dspecjbb.controller.type=HBIR_RT -Dspecjbb.controller.port=24000 

*注*:我們的測試并不是為了達(dá)到絕對的最佳性能,而是為了研究使用不同的編譯器選項(xiàng)和版本來提高性能。

以下是相同 OpenJDK 版本的三個(gè)源代碼:

CentOS repository

Adoptium prebuilt binary

Self-built binary

使用“如何構(gòu)建 OpenJDK”一節(jié)中描述的方法從 Adoptium 源代碼構(gòu)建自建(self-built)二進(jìn)制文件。表 4 列出了用于這些二進(jìn)制文件的 JDK 提供程序和 GCC 版本。

e48a6250-1664-11ee-962d-dac502259ad0.png

表 4:JDK Providers and GCC Versions

使用 SPECjbb2015 Composite Max-jOPS 作為性能指標(biāo),以 centos 提供的 JDK8 數(shù)據(jù)作為基線,圖 1 顯示了來自不同來源的 JDK8 和 JDK11 的性能。

e4c3af92-1664-11ee-962d-dac502259ad0.png

圖 1:SPECjbb2015 JDK8 and JDK11 Performance

from Various Sources

對于特定的 OpenJDK 版本,最新的 centos 提供的二進(jìn)制文件、Adoptium 二進(jìn)制文件和自構(gòu)建(self-built)二進(jìn)制文件的性能相似,這表明 OpenJDK 社區(qū)對 AArch64 和 Ampere Altra 系列處理器的支持已經(jīng)非常友好。

比較來自同一源代碼(centos 提供的二進(jìn)制)的不同 OpenJDK 版本,OpenJDK17 是 Ampere Altra 系列處理器上性能最好的版本。圖 2 顯示,從 JDK8 到 JDK11, Max-jOPS 提高了 6%,從 JDK8 到 JDK17 提高了 12%。

e4d4df9c-1664-11ee-962d-dac502259ad0.png

圖 2:Performance Across OpenJDK Versions

表 4 列出并比較了不同 JDK 版本上特定于 aarch64 的 OpenJDK 選項(xiàng)。使用此命令可以獲取這些選項(xiàng):

java -XX:+PrintFlagsFinal -version

e54ae052-1664-11ee-962d-dac502259ad0.png

表 5:OpenJDK AArch64 options

因?yàn)?Ampere Altra 系列處理器功能上已經(jīng)支持了原子操作和 crc32 的實(shí)現(xiàn),在使用 Altra 和 Altra Max 處理器的進(jìn)行性能評估時(shí),UseLSE 和 UseCRC32 選項(xiàng)會自動(dòng)啟用。

這意味著,即使沒有像“-march=armv8.2-a”或“-mcpu=neoverse-n1”這樣的編譯選項(xiàng),OpenJDK 也可以為 Ampere Altra 系列處理器生成優(yōu)化的代碼。

結(jié)論

OpenJDK 是 Java 平臺的自由/開源軟件實(shí)現(xiàn),是云計(jì)算中實(shí)際使用的 JDK。在本文中,我們看到 OpenJDK 可以無縫地移植到 Ampere Altra 系列處理器上,并且在其上有著非常出色的性能。OS 發(fā)行版和 Adoptium 提供的最新預(yù)構(gòu)建( pre-built)二進(jìn)制文件的性能與從源代碼構(gòu)建 JDK 一樣。也就是說,使用最新的OpenJDK LTS 版本 17 就可以獲得更高的性能。像往常一樣,我們建議使用更新版本的 GCC 編譯器和針對體系架構(gòu)的選項(xiàng)從源代碼構(gòu)建 OpenJDK。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19740

    瀏覽量

    232872
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11420

    瀏覽量

    212319
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2983

    瀏覽量

    106499
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1952

    瀏覽量

    35742
  • Ampere
    +關(guān)注

    關(guān)注

    1

    文章

    80

    瀏覽量

    4638

原文標(biāo)題:安博士講堂 | 優(yōu)化指南-釋放 Java 更高性能

文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    TI高性能模擬器件在大學(xué)生創(chuàng)新設(shè)計(jì)中的應(yīng)用及選型指南

    TI高性能模擬器件在大學(xué)生創(chuàng)新設(shè)計(jì)中的應(yīng)用及選型指南TI高性能模擬器件在大學(xué)生創(chuàng)新設(shè)計(jì)中的應(yīng)用及選型指南TI高性能模擬器件在大學(xué)生創(chuàng)新設(shè)計(jì)中
    發(fā)表于 10-18 13:33

    詳解java代碼優(yōu)化方法

    性能下降,JDK7之后,可以使用ThreadLocalRandom來獲取隨機(jī)數(shù)44. 靜態(tài)類、單例類、工廠類將它們的構(gòu)造函數(shù)置為private以上是常用的Java代碼優(yōu)化方法,在Java
    發(fā)表于 04-02 15:43

    HBase性能優(yōu)化方法總結(jié)

    讀密集型對于隨機(jī)讀密集型工作負(fù)載,高效利用緩存和更好地索引會給HBase系統(tǒng)帶來更高性能2. 順序讀密集型對于順序讀密集型工作負(fù)載,可以采用不使用緩存的方式減少硬盤訪問次數(shù)來提高性能。3. 寫密集型
    發(fā)表于 04-20 17:16

    MSP430FRx MCU如何實(shí)現(xiàn)更高性能

    通知。此設(shè)計(jì)利用了 FRAM 的快速寫入速度和高壽命 – 但復(fù)雜程度更高。 為了真正優(yōu)化系統(tǒng),需要在 MSP430FR5969 MCU 上運(yùn)行振動(dòng)數(shù)據(jù)頻譜分析,最大限度減少必須無線傳輸?shù)臄?shù)據(jù)。 通過利用
    發(fā)表于 09-10 11:57

    針對于Java的35 個(gè)代碼性能優(yōu)化總結(jié)

    針對于Java的35 個(gè)代碼性能優(yōu)化總結(jié) 前言代碼優(yōu)化,一個(gè)很重要的課題??赡苡行┤擞X得沒用,一些細(xì)小的地方有什么好修改的,改與不改對于代碼的運(yùn)行效率有什么影響呢?這個(gè)問題我是這么考慮
    發(fā)表于 06-19 21:03

    嵌入式Java虛擬機(jī)的性能優(yōu)化技術(shù)

    ——JMO+(JMOplus)的性能優(yōu)化技術(shù)。 在過去的幾年里,Java已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,尤其是無線移動(dòng)領(lǐng)域,全球180多個(gè)移動(dòng)運(yùn)營商已經(jīng)推出了Java下載服務(wù)。無線手持
    發(fā)表于 07-18 06:26

    如何使高分辨率A/D轉(zhuǎn)換器獲得更高性能

    A/D轉(zhuǎn)換器最常見的誤差有哪些?如何使高分辨率A/D轉(zhuǎn)換器獲得更高性能?
    發(fā)表于 04-22 06:08

    關(guān)于java性能優(yōu)化的一些細(xì)節(jié)

    優(yōu)化。此舉能夠使性能平均提高50% 。2、盡量重用對象特別是String對象的使用,出現(xiàn)字符串連接時(shí)應(yīng)該使用StringBuilder/StringBuffer代替。由于Java虛擬機(jī)不僅要花時(shí)間生成
    發(fā)表于 10-11 09:23

    AutoKernel高性能算子自動(dòng)優(yōu)化工具

    主要由資深HPC工程師(高性能計(jì)算優(yōu)化工程師)進(jìn)行開發(fā),為了加快開發(fā)進(jìn)程,縮短深度學(xué)習(xí)應(yīng)用落地周期,自動(dòng)化算子優(yōu)化是一個(gè)趨勢。AutoKernel是由OPEN AI LAB提出的高性能
    發(fā)表于 12-14 06:18

    如何在嵌入式設(shè)備上運(yùn)行高性能Java

    如何在嵌入式設(shè)備上運(yùn)行高性能Java
    發(fā)表于 03-28 09:43 ?16次下載

    STC高性能SRAM選型指南

    STC高性能SRAM選型指南 型號 容量 工作電壓 溫度 速度 封裝
    發(fā)表于 09-24 11:33 ?0次下載

    JAVA優(yōu)化編程

    JAVA優(yōu)化編程
    發(fā)表于 03-19 11:24 ?1次下載

    Java編程指南

    Java編程指南
    發(fā)表于 03-19 11:26 ?3次下載

    大數(shù)據(jù)Java優(yōu)化

    本視頻概述了Java編程語言及其對企業(yè)應(yīng)用程序的好處。它還強(qiáng)調(diào)了英特爾軟件優(yōu)化與最新的Xeon硅技術(shù)相結(jié)合以提高應(yīng)用程序性能的重要性
    的頭像 發(fā)表于 05-31 16:59 ?1669次閱讀

    使用Arthas火焰圖工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

    分享作者在使用Arthas火焰圖工具進(jìn)行Java應(yīng)用性能分析和優(yōu)化的經(jīng)驗(yàn)。
    的頭像 發(fā)表于 10-28 09:27 ?921次閱讀
    使用Arthas火焰圖工具的<b class='flag-5'>Java</b>應(yīng)用<b class='flag-5'>性能</b>分析和<b class='flag-5'>優(yōu)化</b>經(jīng)驗(yàn)