国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

Go運行時:4年之后

jf_WZTOguxH ? 來源:InfoQ ? 作者:Michael Knyszek ? 2022-11-30 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自 2018 年以來,Go GC,以及更廣泛的 Go 運行時,一直在穩步改進。近日,Go 社區總結了 4 年來 Go 運行時的一些重要變化。

這些重要變化主要是:

sync.Pool 是一種 GC 感知的重用內存的工具,具有較低的延遲影響,并且能夠比之前更有效地回收內存。(Go 1.13)

Go 運行時能夠更主動地將不需要的內存返回給操作系統,減少了內存消耗和出現內存不足的可能性。這將減少最高 20% 的空閑內存消耗。(Go 1.13 和 1.14)

在許多情況下,Go 運行時能夠更容易地搶占 goroutine,最高可減少 90% 的 stop-the-world 延遲。(Go 1.14)

Go 運行時能夠比以前更有效地管理計時器,特別是在擁有多核 CPU 的機器上。(Go 1.14)

在大多數情況下,現在使用 defer 語句的函數調用的開銷與常規函數調用一樣少。點擊這里觀看 Gophercon 2020 的相關演講。(Go 1.14)

內存分配器的慢路徑對 CPU 核心的伸縮性更好,將吞吐量提升了最多 10%,并將尾部延遲降低了最多 30%,特別是在高度并行的程序中。(Go 1.14 和 1.15)

Go 內存統計數據現在可以通過更細粒度、更靈活、更高效的 API(runtime/metrics 包)來訪問。這將獲取運行時統計信息的延遲減少了兩個數量級(從毫秒到微秒)。(Go 1.16)

Go 調度器在尋找新任務時花費的 CPU 時間減少了 30%。(Go 1.17)

Go 代碼現在在 amd64、arm64 和 ppc64 上遵循基于寄存器的調用約定,將 CPU 效率提升了最多 15%。(Go 1.17 和 1.18)

Go GC 的內部審計和調度已經進行了重新設計,解決了長期存在的各種與效率和健壯性相關的問題。對于 goroutine 占內存使用很大一部分的應用程序來說,這顯著降低了應用程序的尾部延遲(最高達 66%)。(Go 1.18)

Go GC 現在在應用程序空閑時會限制自己的 CPU 使用。這將空閑應用程序的 GC 周期的 CPU 使用降低了 75%,從而減少可能導致作業調度器混淆的 CPU 峰值。(Go 1.19)

這些變化對用戶來說大多是看不見的——他們只需要升級 Go,就可以看到他們所熟悉和喜愛的 Go 代碼運行得更好了。

一個新的“旋鈕”Go 1.19 帶來了一個期待已久的特性,使用這個特性需要做一些額外的工作,但它具備很大的潛力:Go 運行時的軟內存限制。

多年來,Go GC 只有一個調優參數——GOGC。GOGC 允許用戶在 CPU 開銷和內存開銷之間做出權衡。多年來,這個“旋鈕”為 Go 社區提供了很好的服務,被用在各種各樣的場景中。

Go 運行時團隊一直不愿意在 Go 運行時中添加新的旋鈕,他們的理由很充分——每個新的旋鈕代表了配置空間中的一個新的維度,我們需要對其進行測試和維護,而且可能要永遠持續下去。旋鈕的激增也給 Go 開發人員增加了理解和使用它們的負擔,隨著旋鈕的增多,情況會變得愈加困難。因此,Go 運行時總是傾向于用最小配置實現合理的行為。

那么為什么要添加內存限制旋鈕呢?

內存不像 CPU 時間那么具有可互換性。對于 CPU 時間,如果稍等片刻,將來總會得到更多的 CPU 時間。但對于內存,你所擁有的總是有限的。

內存限制解決了兩個問題。

首先,當應用程序的內存使用峰值不可預測時,僅靠 GOGC 幾乎無法防止內存被耗盡。如果只使用 GOGC,Go 運行時根本不知道它有多少可用的內存。通過設置內存限制,運行時能夠意識到什么時候需要更努力地工作以減少內存開銷,從而使運行時能夠健壯地應對瞬時的、可恢復的負載峰值。

第二是為了避免不使用內存限制時出現的內存不足。我們必須根據內存峰值調優 GOGC,而為了保持較低的內存開銷會導致更高的 GC CPU 開銷,即使應用程序沒有處于內存使用峰值且有足夠的可用內存。這在容器化的環境中尤其重要。在容器化的環境中,程序被部署在具有獨立預留內存的容器中。設置內存限制可以為峰值負載提供保護,并可以針對 CPU 開銷更主動地調優 GOGC。

內存限制的設計旨在易用性和健壯性。例如,它是對應用程序中 Go 部分的整個內存占用的限制,而不僅僅是 Go 的堆,因此用戶不需要額外計算 Go 運行時的開銷。運行時還會根據內存限制調整其內存清除策略,以便在內存出現壓力時更主動地將內存返回給操作系統。

雖然內存限制是一個強大的工具,但在使用時仍然要謹慎。其中一個需要注意的地方是,它會讓你的程序陷入 GC 抖動狀態——在這種狀態下,程序運行 GC 的時間過多,導致沒有足夠的時間來處理其他任務。例如,如果內存限制設置得比程序實際需要的內存少,Go 程序可能會崩潰。以前不太可能出現 GC 抖動,除非顯式對 GOGC 進行了大量調優。我們選擇讓內存耗盡而不是陷入抖動狀態,因此作為一種緩解措施,運行時將 GC 限制為總 CPU 時間的 50%,即使這樣會超過內存限制。

所有這些都需要慎重考慮,因此,作為這項工作的一部分,我們發布了一個新的 GC 指南,其中包含了交互式可視化的圖表,以幫助你們理解 GC 成本以及如何操作它們。

審核編輯:湯梓紅

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

    關注

    68

    文章

    11277

    瀏覽量

    224934
  • 內存
    +關注

    關注

    9

    文章

    3209

    瀏覽量

    76354
  • Go
    Go
    +關注

    關注

    0

    文章

    45

    瀏覽量

    12567

原文標題:Go 運行時:4 年之后

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    高壓試驗變壓器運行時,哪些操作不能做?

    /T9641-1999標準和實際案例,跟大家梳理高壓試驗變壓器運行時的禁忌操作,幫你規范操作,規避風險。首先,嚴禁調壓器不在零位時合閘通電。根據JB/T9641-1999第
    的頭像 發表于 03-04 11:04 ?28次閱讀
    高壓試驗變壓器<b class='flag-5'>運行時</b>,哪些操作不能做?

    Kubernetes容器運行時containerd與CRI-O如何選擇

    Kubernetes 1.24版本正式移除了dockershim,Docker不再是K8s的默認容器運行時。這個變化直接影響了所有K8s集群的運維方式——升級到1.24+必須切換到containerd或CRI-O。
    的頭像 發表于 02-26 09:54 ?169次閱讀

    請問如何在運行時調整mcu的主頻?

    能不能實現在運行時切換mcu的主頻,但不重啟mcu?
    發表于 01-16 07:12

    使用Nuclei Studio IDE計算程序運行時

    在使用Nuclei Studio IDE進行程序運行時,我們想知道我們編寫的程序運行時間有多長怎么辦呢?可以選擇調用IDE里面時間記錄函數_gettimeofday(),該函數用于記錄程序運行到本
    發表于 10-28 08:25

    怎么實現一套容器運行時,并符合OCI規范?

    如題,怎么實現一套容器運行時,并符合OCI規范
    發表于 10-10 07:35

    裝置日常運行時的安全防護檢查有哪些注意事項?

    裝置日常運行時的安全防護檢查,核心原則是 “安全優先、不影響生產、快速識別風險”—— 既要避免因檢查操作引發觸電、停機等事故,也要高效捕捉運行中的動態隱患(如過熱、防護松動)。以下是需重點關注的 8
    的頭像 發表于 09-23 16:33 ?1269次閱讀

    MTB如何在運行時介入Jlink調試器?

    目前我們的應用程序在運行時會偶發死機現象,有沒有辦法能夠在CYW43907芯片不復位的情況下介入調試器,查看導致死機的問題
    發表于 07-08 07:46

    PLC設備運行時間數據采集到運維管理平臺如何實現

    工業智能網關通過接入PLC,能夠實時采集設備運行時間并通過5G/4G/WIFI/以太網等方式對接到云平臺或上位機中,從而全面統計各個設備的運行時間,管理人員能夠快速定位處于高負荷或閑置狀態的設備,也能了解設備故障率、OEE等數據
    的頭像 發表于 06-20 16:02 ?805次閱讀
    PLC設備<b class='flag-5'>運行時</b>間數據采集到運維管理平臺如何實現

    步進電機在高速運行時反電動勢波形與其動態響應變化

    步進電機高速運行時,反電動勢幅值增大、頻率升高,導致電流建立延遲、扭矩下降及動態響應滯后。所以在步進電機高速運行的方案中,我們需要通過優化電機選型(如低電感、適中極數)、升壓驅動及BEMF反饋控制,可緩解高速性能衰減,避免PWM飽和導致的扭矩崩潰。
    的頭像 發表于 06-10 16:06 ?1671次閱讀
    步進電機在高速<b class='flag-5'>運行時</b>反電動勢波形與其動態響應變化

    可以在運行時通過微控制器配置CCG2 C型板嗎?

    我可以在運行時通過微控制器配置 CCG2 C 型板嗎?
    發表于 05-07 07:24

    將ADAU1701超頻到98MHZ,運行時出現爆音怎么解決?

    我將ADAU1701超頻到98MHZ,我的設置是PLLmode0、1都為1,輸入mclk49M,在192k采樣率下執行512條指令,運行時出現爆音。
    發表于 04-15 07:58

    在Windows上安裝OpenVINO?運行時遇到錯誤怎么解決?

    已在 Windows* 上安裝OpenVINO?運行時。 配置環境變量。 遇到錯誤: Location is not available.
    發表于 03-05 09:13

    無法在ONNX運行時加載OpenVINO?中間表示 (IR),為什么?

    無法在 ONNX運行時加載OpenVINO?中間表示 (IR)
    發表于 03-05 09:07

    運行時OpenVINO?找不到模型優化器,為什么?

    運行時OpenVINO?找不到模型優化器,運行模型下載程序命令并收到錯誤消息: omz_downloader:找不到命令
    發表于 03-05 08:16

    無法在Raspberry Pi 4中通過PyPI OpenVINO?安裝2022年運行時軟件包,為什么?

    無法在 Raspberry* Pi 4 中通過 PyPI* 安裝OpenVINO? 2022 運行時軟件包。
    發表于 03-05 07:31