在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

優化指南:釋放Java更高性能

安晟培半導體 ? 來源:安晟培半導體 ? 作者:安晟培半導體 ? 2023-06-29 18:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

在過去的十年中,Java 已經成為最流行的云編程語言之一。Hadoop、Cassandra 和 Kafka 等流行的云應用程序都使用 Java 語言和框架。Java 是一種通用的面向對象語言,被設計為 Write Once Run Anywhere,它依賴于一個 Java 虛擬機(JVM)來將字節碼轉換為特定應用程序所運行的體系結構的機器代碼。顯然,JVM 在運行時生成的代碼質量對應用程序性能至關重要。

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

01Ampere Altra 系列處理器AARCH64架構支持 JAVA 嗎?

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

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

02從哪里可以獲取 OPENJDK?

用于 Ampere Altra 系列處理器的 OpenJDK 二進制文件可以從幾個來源獲得。Linux 發行版通過各自的包存儲庫提供 OpenJDK。Adoptium 是預構建 OpenJDK AArch64 二進制文件的另一個來源。

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

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

表 1:OpenJDK LTS

03如何構建 OPENJDK?

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

對于自定義構建 OpenJDK,本節列出了如何從源代碼構建 OpenJDK 的推薦步驟。

在構建 OpenJDK 時建議使用 GCC。不同的 GCC 版本有不同的 AArch64 選項,如表 2 所示。

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

表 2:GCC Options

構建 OpenJDK 用到了一下配置和選項:

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性能的影響因素

讓我們來評估一些通過基本調優就可能實現的性能改進。我們在基于 Ampere Altra q80 -30 的服務器上使用 SPECjbb2015,這是一種在復合模式下流行的標準化 Java 基準測試。系統配置如表 3 所示:

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

表 3:System Configuration

評估中使用了如下的 OpenJDK 選項:

-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 

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

以下是相同 OpenJDK 版本的三個源代碼:

CentOS repository

Adoptium prebuilt binary

Self-built binary

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

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

表 4:JDK Providers and GCC Versions

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

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

圖 1:SPECjbb2015 JDK8 and JDK11 Performance

from Various Sources

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

比較來自同一源代碼(centos 提供的二進制)的不同 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 選項。使用此命令可以獲取這些選項:

java -XX:+PrintFlagsFinal -version

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

表 5:OpenJDK AArch64 options

因為 Ampere Altra 系列處理器功能上已經支持了原子操作和 crc32 的實現,在使用 Altra 和 Altra Max 處理器的進行性能評估時,UseLSE 和 UseCRC32 選項會自動啟用。

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

結論

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19852

    瀏覽量

    234153
  • Linux
    +關注

    關注

    87

    文章

    11496

    瀏覽量

    213230
  • JAVA
    +關注

    關注

    20

    文章

    2988

    瀏覽量

    108257
  • 編程語言
    +關注

    關注

    10

    文章

    1955

    瀏覽量

    36384
  • Ampere
    +關注

    關注

    1

    文章

    81

    瀏覽量

    4688

原文標題:安博士講堂 | 優化指南-釋放 Java 更高性能

文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TI高性能模擬器件在大學生創新設計中的應用及選型指南

    TI高性能模擬器件在大學生創新設計中的應用及選型指南TI高性能模擬器件在大學生創新設計中的應用及選型指南TI高性能模擬器件在大學生創新設計中
    發表于 10-18 13:33

    詳解java代碼優化方法

    性能下降,JDK7之后,可以使用ThreadLocalRandom來獲取隨機數44. 靜態類、單例類、工廠類將它們的構造函數置為private以上是常用的Java代碼優化方法,在Java
    發表于 04-02 15:43

    HBase性能優化方法總結

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

    MSP430FRx MCU如何實現更高性能

    通知。此設計利用了 FRAM 的快速寫入速度和高壽命 – 但復雜程度更高。 為了真正優化系統,需要在 MSP430FR5969 MCU 上運行振動數據頻譜分析,最大限度減少必須無線傳輸的數據。 通過利用
    發表于 09-10 11:57

    針對于Java的35 個代碼性能優化總結

    針對于Java的35 個代碼性能優化總結 前言代碼優化,一個很重要的課題。可能有些人覺得沒用,一些細小的地方有什么好修改的,改與不改對于代碼的運行效率有什么影響呢?這個問題我是這么考慮
    發表于 06-19 21:03

    嵌入式Java虛擬機的性能優化技術

    ——JMO+(JMOplus)的性能優化技術。 在過去的幾年里,Java已經在各個領域得到了廣泛的應用,尤其是無線移動領域,全球180多個移動運營商已經推出了Java下載服務。無線手持
    發表于 07-18 06:26

    如何使高分辨率A/D轉換器獲得更高性能

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

    關于java性能優化的一些細節

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

    AutoKernel高性能算子自動優化工具

    主要由資深HPC工程師(高性能計算優化工程師)進行開發,為了加快開發進程,縮短深度學習應用落地周期,自動化算子優化是一個趨勢。AutoKernel是由OPEN AI LAB提出的高性能
    發表于 12-14 06:18

    如何在嵌入式設備上運行高性能Java

    如何在嵌入式設備上運行高性能Java
    發表于 03-28 09:43 ?16次下載

    STC高性能SRAM選型指南

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

    JAVA優化編程

    JAVA優化編程
    發表于 03-19 11:24 ?1次下載

    Java編程指南

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

    大數據Java優化

    本視頻概述了Java編程語言及其對企業應用程序的好處。它還強調了英特爾軟件優化與最新的Xeon硅技術相結合以提高應用程序性能的重要性
    的頭像 發表于 05-31 16:59 ?1800次閱讀

    使用Arthas火焰圖工具的Java應用性能分析和優化經驗

    分享作者在使用Arthas火焰圖工具進行Java應用性能分析和優化的經驗。
    的頭像 發表于 10-28 09:27 ?1169次閱讀
    使用Arthas火焰圖工具的<b class='flag-5'>Java</b>應用<b class='flag-5'>性能</b>分析和<b class='flag-5'>優化</b>經驗
    主站蜘蛛池模板: 韩国精品videosex性韩国 | 久久综合偷偷噜噜噜色 | 天天精品视频 | 亚洲va久久久久综合 | 最新合集丨新片速递 | 嫩草网 | 欧美激情一欧美吧 | 国产真实乱偷人视频 | 在线观看视频一区二区 | 国产亚洲小视频 | 韩国理论片2023现在观看 | 在线观看免费av网站 | 亚洲精品mv在线观看 | 欧美在线免费 | 欧美性色欧美a在线播放 | 日本三级香港三级三级人!妇久 | 国产黄在线观看 | 国产性videostv另类极品 | 欧美人与zoxxxx另类 | 九九国产精品 | 天天天天天天天操 | 波多野结衣在线视频免费观看 | 免费一级特黄特色大片在线 | 尤物黄色| 波多野结衣在线观看一区二区 | 8050网午夜一级毛片免费不卡 | 亚洲色图图片区 | 窝窝午夜在线观看免费观看 | 高清一区高清二区视频 | 色视频网站在线观看 | 成人爽爽激情在线观看 | 色啦啦影院 | 美女视频一区二区 | 日本免费小视频 | 人人澡人人草 | a资源在线 | 日本三级成人午夜视频网 | 午夜精品久久久久蜜桃 | 国产午夜人做人视频羞羞 | 欧美艹逼视频 | 中国同志chinese小彬tv |