色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

畢昇JDK8和JDK11首次同時發布兩個版本

openEuler ? 來源:openEuler ? 作者:openEuler ? 2021-10-28 10:53 ? 次閱讀

2021 年 9 月 30 日,畢昇 JDK update Q3 版本正式發布,本次發布將包含 X86_64 版本。此前,畢昇 JDK 只發布 Aarch64 版本,這可能會對運維產生一定的影響,例如需要根據架構構建多個版本以包含不同架構的 JDK,此次畢昇 JDK 同時發布 X86_64 版本以及 Aarch64 版本,將極大的方便用戶進行構建,降低維護多個版本的開銷。另外,X86_64 版本和 Aarch64 版本共源,所以 X86_64 版本也包含此前畢昇 JDK 團隊在 Aarch64 上的功能和大部分優化,在功能和性能方面,兩者幾乎無差異。歡迎用戶安裝使用,為產品帶來核心競爭力。

此次版本在同步 OpenJDK 社區 8u302/11.0.12 的基礎上,還包含如下更新,為用戶提供高性能、可用于生產環境的 OpenJDK 發行版。

PS 優化——Introduce UsePSRelaxedForwardee to enable using relaxed CAS in copy_to_survivor_space(畢昇 JDK8,畢昇 JDK11)

G1 GC 優化——Parallel Full GC for G1(畢昇 JDK8)

提供鯤鵬硬件加速的 KAEProvider(畢昇 JDK11)

支持按進程 id 和時間戳生成 jfr 文件(畢昇 JDK8,畢昇 JDK11)

Bug fixes

1 PS:introduce UsePSRelaxedForwardee to enable using relaxed CAS in copy_to_survivor_space(畢昇 JDK8,畢昇 JDK11)1.1 背景

在 JDK 中 Parallel Scavenge 是一個高吞吐量 GC,使用非常廣泛。在 specjbb 測試中,PSPromotionManager::copy_to_survivor_space 中的 CAS 指令 CPU 占比非常高,主要為 releasebarrier 導致,分析 PS 邏輯后,CAS 沒必要使用 memory barrier,使用 relaxed 可以提高弱內存模型架構上 PS 的性能。

1.2 實現原理

PS 的主要邏輯如下:

d9a8c0e4-3780-11ec-82a8-dac502259ad0.png

由上述流程圖可以看到,CAS Fail 的線程不會去讀 forwardee 內容,因此在弱內存模型的 CPU 架構上,即使 copy obj 和 CAS 亂序,也不會影響 CAS Fail 線程的正確性。

關于 work steal 場景,其他線程 steal 到的 obj 能否看到其內容,這個是由 CAS 成功的 push 操作保證的,由于 push 操作底層實現有 release 語義,所以無正確性問題。

da19726c-3780-11ec-82a8-dac502259ad0.png

da961bdc-3780-11ec-82a8-dac502259ad0.png

使用參數:

UsePSRelaxedForwardee:試驗特性開關,默認為 false,表示 PSPromotionManager::copy_to_survivor_space 中 CAS forwardee 使用 release 語義;打開則表示 CAS forwardee 的時候使用 relaxed(無任何 memory barrier),以在弱內存模型 CPU 架構上獲取更好性能。

1.3 性能測試

測試環境:

Architecture: aarch64

Byte Order: Little Endian

CPU(s): 128

On-line CPU(s) list: 0-127

Thread(s) per core: 1

Core(s) per socket: 64

Socket(s): 2

NUMA node(s): 4

Vendor ID: 0x48

Model: 0

Stepping: 0x1

BogoMIPS: 200.00

L1d cache: 64K

L1i cache: 64K

L2 cache: 512K

L3 cache: 65536K

NUMA node0 CPU(s): 0-31

NUMA node1 CPU(s): 32-63

NUMA node2 CPU(s): 64-95

NUMA node3 CPU(s): 96-127

使用 specjbb2015 進行測試,除 UsePSRelaxedForwardee 開關以外的測試參數如下:

-Xms50g -Xmx50g -XX:+UseParallelGC -XX:ParallelGCThreads=24 -XX:+UseLargePages -XX:LargePageSizeInBytes=2m -XX:+UseBiasedLocking -XX:+AlwaysPreTouch -XX:-UseAdaptiveSizePolicy

測試結果:

db1f3912-3780-11ec-82a8-dac502259ad0.png

測試結果:從上圖可以看到,針對 SPECjbb 的 critical,畢昇 JDK8 可以提升 15%,畢昇 JDK11 可以提升 28%

2 Parallel Full GC for G1. (畢昇 JDK8)2.1 概述

G1 Full GC 是完全的 STW,在此期間應用程序線程完全沒有機會運行,長時間停頓會造成用戶明顯的感知。因此,使用 G1 過程中應盡量避免的 Full GC 的出現,如果出現最好能縮短其時間。當前 JDK 8u 中 G1 Full GC 完全采用串行,包括:

各階段之間,包括標記存活對象、計算目標對象的位置、更新引用的位置、移動對象完成壓縮階段;

每個階段內;

完全的串行導致即使是在多核機器上也無法利用機器的強大性能縮短 Full GC 的(停頓)時間。

由于 G1 Full GC 基本算法的約束,雖然上面提到的四個階段之間無法并行化,但是各個階段內卻可以通過優化算法做到一定并行化,以達到縮短整體停頓時間的效果。本特性會將計算目標對象的位置、更新引用的位置、移動對象完成壓縮三個階段盡量做到階段內的并行化。(標記存活對象階段的并行化后續也會支持)

開啟本特性后,可以明顯降低 G1 Full GC 的平均停頓時間。本特性屬于通用特性,適用于 Aarch64、X86 平臺。

2.2 實現原理

2.2.1 并行 Full GC 基本算法

如下列出了并行 Full GC 算法與串行 Full GC 算法的主要差異點:

將整個堆分成不同的 heap region set 交給各個 GC 線程分別處理,盡量減少 GC 線程間同步、競爭;

G1 Full GC 現有實現是將整個堆向一個方向(目標地址)壓縮;要做到并行化,并減少并行 GC 線程間的交互、競爭,有效的方式是每個 GC 線程有自己壓縮的方向(目標地址)。

大對象的特殊處理:在計算目標對象位置并行階段結束后,才能釋放 free 的 humongous region;

2.2.2 計算目標對象位置階段的并行化

計算目標對象位置階段主要負責

根據標記信息設置對象的 forwardee。

釋放沒有被標記的 humongous regions。

Forwardee 的設置需要預先知道目標地址,該目標地址是通過 Compaction Point 維護著。在遍歷 heap region 時每當發現一個新的標記的對象,就將 Compaction Point 里記錄的目標地址設置為該對象的 forwardee,然后再將 Compaction Point 里記錄的目標地址加上對象的大小,作為下次 forwardee 設置的值。如此往復,直至每一個標記的對象都被 forwarded。

并行地設置對象的 Forwardee 是通過 1)隔離各個 GC 線程的遍歷的 heap region,2)隔離各個 GC 線程要為 forwardee 設置的目標地址來達成的。具體實現是,1)通過標記 region 來隔離各個 GC 線程遍歷的 heap regions,2)通過為每個 GC 線程維護一個 Compaction Point 來隔離 forwardee 的設置。可以理解為將整個 heap 被分成了 N 份(GC 線程個數為 N),每一份由一個 GC 線程負責,各個線程盡量互不干擾地工作。

除此之外,每個 GC 線程的 Compaction Point 還負責收集屬于該 GC 線程的 regions、humongous regions,以便后續(壓縮階段)處理。

Free 的大對象在計算目標對象位置階段就會被釋放。由于大對象的特殊性(可能包括多個 heap region)加之多個 GC 線程在同時工作,需要對其進行一些特殊處理:如,在計算目標對象位置并行階段結束后,才能釋放 free 的 humongous region,以避免多個 GC 線程訪問同一個大對象的不同 region 時可能面臨的數據不一致問題。

2.2.3 更新引用位置階段的并行化

更新引用位置階段主要負責根據對象的 forwardee 信息更新所有引用。

此階段的并行化比較簡單,因為需要的所有信息都只在對象頭中(forwardee),并行化和串行化的算法差別很小,不同點只是每個 GC 線程要標記屬于自己處理范圍的 heap region。

2.2.4 移動對象完成壓縮階段的并行化

移動對象完成壓縮階段主要負責根據對象的 forwardee 信息進行壓縮。

每個 GC 線程都有屬于自己的 Compaction Point,在計算目標對象位置階段 Compaction Point 中收集了需要該 GC 線程壓縮的 region 的集合。對于單個 GC 線程來說,整個過程與串行差別不大,只是需要從自己的 Compaction Point 中取出 regions,進行壓縮。

使用參數:

本特性需要通過 VM option -XX:+G1ParallelFullGC 顯示打開,默認為關閉。

注意,本特性會帶來如下 JVM 停頓時間上的收益:

降低單次 G1 Full GC 的停頓時間;

降低總的 G1 Full GC 的停頓時間;

但是,有可能會增加 G1 Full GC 的頻率。所以,當降低 JVM 的停頓時間是應用程序的性能調優目標之一時,且 G1 Full GC 是停頓原因之一時,適用于打開 G1ParallelFullGC VM Option,降低單次平均、總的停頓時間。

2.3 性能測試

測試套:Dacapo

測試參數:

JVM:-Xmx1g -Xms1g -XX:ParallelGCThreads=$N

Dacapo:-t 4 --iterations 5 --size huge --no-pre-iteration-gc h2

下面分別給出了并行 GC 線程數量分別為 4、16 時 Full GC 停頓時間的數據

N == 4

N == 16

測試結果:受益(STW 時間減少)基本在 16%~40%。

3 提供鯤鵬硬件加速的 KAEProvider(畢昇 JDK11)該特性已在早期的畢昇 JDK 8u282 中支持,詳見2021 年畢昇 JDK 的第一個重要更新來了,并在 8u292 版本中對其功能進行完善,詳見畢昇 JDK 8u292、11.0.11 發布!, 此次將在畢昇 JDK11 中對該特性進行支持。

3.1 實現原理和性能測試

實現原理和性能測試請參考鯤鵬硬件加解密特性詳解。 但由于 JDK11 引入了模塊系統,因此用戶使用時需要將 KAEProvider 所在的模塊(jdk.crypto.kaeprovider)進行導出,如下為畢昇 JDK11 中 KAEProvider 相關的文件:

ddbf7af6-3780-11ec-82a8-dac502259ad0.png

具體導出命令可參考如下格式:

編譯:javac --add-modules jdk.crypto.kaeprovider --add-exports=jdk.crypto.kaeprovider/org.openeuler.security.openssl=ALL-UNNAMED DHTest.java

運行:java --add-modules jdk.crypto.kaeprovider --add-exports=jdk.crypto.kaeprovider/org.openeuler.security.openssl=ALL-UNNAMED DHTest

4 支持按進程 id 和時間戳生成 jfr 文件(畢昇 JDK8,畢昇 JDK11)4.1 說明

該特性用來擴展 JFR 文件名,支持在文件名中加入進程號或時間戳或兩者都加,當用戶在環境上生成多個 jfr 文件時,該特性可以幫助用戶根據需要快速定位到所需的文件。

4.2 功能測試

未合入此特性:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10s,filename=myrecording%t.jfr While

de499916-3780-11ec-82a8-dac502259ad0.png

合入此特性:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10s,filename=myrecording%t.jfr While

dec45660-3780-11ec-82a8-dac502259ad0.png

5 Bug fixes除了上面介紹的一些特性外,畢昇 JDK 還合入了社區高版本中的一些 bug fix 和優化的 patch,為用戶提供穩定、高性能的畢昇 JDK。具體回合 patch 如下:

JDK8

8197387:jcmd started by “root” must be allowed to access all VM processes 允許通過 root 啟動的 jcmd 訪問環境上任意的 JVM 進程,默認情況下,進程只能被啟動該進程的用戶通過 jcmd 訪問。

8069191:moving predicate out of loops may cause array accesses to bypass null check 修復 c2 在 aarch64 上可能會 crash 的 bug

8167014: jdeps: Missing message: warn.skipped.entry 該修復可以解決通過 jdeps 解析特定的 jar 包出現的 Missing message: warn.skipped.entry 錯誤

8268453: sun/security/pkcs12/EmptyPassword.java fails with Sequence tag error 該修復可以解決當對密碼為空的 KeyStore 進行解析時,可能會出現的 java.io.IOException: Sequence tag error 問題

8202142:jfr/event/io/TestInstrumentation is unstable JDK 自帶用例修復

8143251:HeapRetentionTest.java Test is failing on jdk9/dev 該修復可以解決 G1 GC 在特定場景下導致進程假死的問題

8183543:Aarch64: C2 compilation often fails with “failed spill-split-recycle sanity check” 修復 C2 編譯器在某些場景下編譯方法時報failed spill-split-recycle sanity check錯誤,導致方法被解釋執行,進而造成應用程序性能下降的問題

JDK11

8268427: Improve AlgorithmConstraints:checkAlgorithm performance 該 patch 可以提升 TLS 的握手性能

8257145: Performance regressionwith -XX:-ResizePLABafter JDK-8079555 該 patch 可以修復使用 G1 GC 后,HBase 性能下降的問題,詳細原理可參考畢昇 JDK 以前的文章JDK 從 8 升級到 11,使用 G1 GC,HBase 性能下降近 20%。JDK 到底干了什么?

8247691:[aarch64] Incorrect handling of VM exceptions in C1 deopt stub/traps 該修復可以解決 C1 編譯器生成指令過程中使用錯誤的寄存器,進而導致進程 Crash 的問題

編輯:jq

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

    關注

    0

    文章

    159

    瀏覽量

    12343
  • CAS
    CAS
    +關注

    關注

    0

    文章

    35

    瀏覽量

    15267
  • JDK
    JDK
    +關注

    關注

    0

    文章

    82

    瀏覽量

    16687

原文標題:畢昇JDK8和JDK11首次同時發布Aarch64和X86_64兩個版本

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    蘋果為iPhone 11系列重新發布iOS 18.3版本更新

    蘋果公司針對 iPhone 11、iPhone 11 Pro 以及 iPhone 11 Pro Max,重新發布了 iOS 18.3 版本
    的頭像 發表于 02-05 16:31 ?1037次閱讀

    ADC124S021同時使用兩個通道,兩個通道的轉換數據發生串擾怎么解決?

    用DSP的SPI接口接ADC124S021,如果只是進行單通道的信號采集,則轉換后的數值穩定,但是同時使用兩個通道時則兩個通道的數據發生串擾現象。如,我單獨使用2通道,則轉換后數值穩定,但是如果
    發表于 12-30 07:41

    Java集合API的改進介紹

    解答這些問題。 我們將逐步學習 Java 集合類的優化過程,并按版本逐一對比分析。主要討論的焦點將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本
    的頭像 發表于 11-22 11:12 ?345次閱讀
    Java集合API的改進介紹

    Java CompletableFuture 異步超時實現探索

    簡介 JDK 8 中 CompletableFuture 沒有超時中斷任務的能力。現有做法強依賴任務自身的超時實現。本文提出一種異步超時實現方案,解決上述問題。 前言 JDK 8 是一
    的頭像 發表于 07-25 14:06 ?485次閱讀

    JDK8升級JDK11最全實踐干貨來了

    1、前言 截至目前(2023年),Java8發布至今已有9年,2018年9月25日,Oracle發布了Java11,這是Java8之后的首個
    的頭像 發表于 06-25 14:51 ?600次閱讀
    <b class='flag-5'>JDK8</b>升級<b class='flag-5'>JDK11</b>最全實踐干貨來了

    JDK11升級JDK17最全實踐干貨來了

    解決你的問題。 上篇文章給大家帶來了JDK8升級JDK11的最全實踐,相信大家閱讀后已經對JDK11有了比較深入的了解。2021年9月14日,Oracle發布了可以長期支持的
    的頭像 發表于 06-25 14:50 ?923次閱讀
    <b class='flag-5'>JDK11</b>升級<b class='flag-5'>JDK</b>17最全實踐干貨來了

    大模型應用開發平臺+浪潮信息AIStation,讓大模型定制更簡單

    北京2024年6月5日?/美通社/ -- 近日,大模型應用開發平臺與浪潮信息AIStation智能業務生產創新平臺完成兼容性互認證。基于和浪潮信息AIStation,用戶通過預
    的頭像 發表于 06-05 11:58 ?642次閱讀
    <b class='flag-5'>畢</b><b class='flag-5'>昇</b>大模型應用開發平臺+浪潮信息AIStation,讓大模型定制更簡單

    請問ad9171的兩個輸出端口是否支持同時輸出兩個不同的頻率?

    你好,關于AD9171芯片我有一問題 ,數據手冊顯示該芯片具有兩個輸出通道,芯片內部有DAC0和DAC1共兩個DAC通道,那么這兩個通道是否支持
    發表于 05-28 06:20

    怎么讓工程中同時存在兩個ioc文件?

    你好,我現在需要在一工程中兼容兩個不同的項目,這兩個項目有不同的配置文件,請問可否讓兩個ioc文件同時存在,通過修改路徑之類的方法來使需要
    發表于 05-23 07:50

    兩個銅片可以形成原電池嗎

    兩個銅片本身不能形成原電池,因為原電池的工作原理依賴于兩個不同電位的電極材料之間的氧化還原反應。
    的頭像 發表于 05-21 16:23 ?1350次閱讀

    Oracle確認Java/JDK 11官方支持延長至2032年1月?

    此外,Solaris操作系統上的Java SE 8和Java SE 11的官方支持也同步延期至2030年12月及2032年1月,進一步延長了該平臺上的Java服務周期。
    的頭像 發表于 05-16 15:57 ?1647次閱讀

    交流電橋任意兩個橋臂的阻抗能否同時為零?為什么?

    在交流電橋的應用中,理論上可以設計電橋的任意兩個橋臂具有零阻抗,但這在實際應用中并不常見,也存在一些限制和考慮因素。
    的頭像 發表于 05-15 17:45 ?810次閱讀

    微軟醞釀Windows 11“Moment”更新,預計明年初發布

    據悉,微軟已啟動Windows 11 24H2首次“時刻”更新的籌備工作,目前已知的內部構建版本號為Build 26120.383,僅是在Windows 11 Build 26100基
    的頭像 發表于 04-17 16:31 ?661次閱讀

    飛凌ElfBoard ELF 1板卡-如何在ELF 1開發板上實現對java的支持

    上成功部署和運行Java環境。 1.拷貝兩個壓縮包到ELF 1開發板的/home/root路徑下解壓 網盤鏈接:https://pan.baidu.com/s
    發表于 03-20 09:51

    ubuntu23安裝stm32cubeIDE后運行閃退的原因?

    上圖安裝的是 STM32CubeIDE Generic linux Installer 1.12.1版本,已安裝openjdk-11-jdk-headless,仍然不過。 之前安裝
    發表于 03-18 06:39
    主站蜘蛛池模板: 久久久久激情免费观看 | 成人区精品一区二区不卡AV免费 | 肉蒲团从国内封禁到日本成经典 | 99re6久久热在线视频 | 国产亚洲精品久久7777777 | 亚洲精品成人a在线观看 | gogogo高清在线观看 | 国产成人自产拍免费视频 | 熟妇久久无码人妻AV蜜桃 | 免费在线伦理片 | 别插我B嗯啊视频免费 | a级精品九九九大片免费看 A级韩国乱理伦片在线观看 | a视频免费在线观看 | 97国产蝌蚪视频在线观看 | 久久婷婷五月免费综合色啪 | 儿子操妈妈视频 | 成 人 片 免费播放 成 人 免费 黄 色 网站无毒下载 | 差差差差差差差差免费观看 | 久久这里只精品国产99re66 | 亚洲AV 中文字幕 国产 欧美 | 强奷乱码欧妇女中文字幕熟女 | 青青久久国产 | 2012中文字幕手机在线 | 久久爽狠狠添AV激情五月 | 日本又黄又爽又色又刺激的视频 | 中文人妻熟妇精品乱又伦 | 67194线在线精品观看 | 久久理论片迅播影院一级 | 奶头从情趣内衣下露了出来AV | 超碰国产人人做人人爽 | 国产女人喷潮视频免费 | 97综合久久 | 午夜色网站 | 97在线视频免费人妻 | 亚洲精品成人无码区一在线观看 | 玖玖在线精品 | 国精产品999一区二区三区有限 | 伊人久久中文 | 99精品视频一区在线视频免费观看 | 久久夜色撩人精品国产 | 91福利潘春春在线观看 |