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

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

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

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

輕負(fù)載場景下CPU使用率的比較

Arm社區(qū) ? 來源:Arm社區(qū) ? 2024-10-21 09:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:安謀科技 (Arm China) 主任軟件工程師 常瑞

Arm Neoverse N 系列和 V 系列處理器并未采用同步多線程 (SMT) 技術(shù)。在 Arm Neoverse 處理器上運(yùn)行時(shí),每個(gè)線程始終能夠訪問處理器的全部資源。這有助于提高在云環(huán)境中執(zhí)行的可預(yù)測性,確保每個(gè)線程都能完全訪問處理器資源,并提供更強(qiáng)大的保護(hù),防止線程之間發(fā)生意外數(shù)據(jù)泄露。

在采用 SMT 技術(shù)的處理器中,每個(gè)物理處理器分為兩個(gè)或兩個(gè)以上的邏輯核心。這些邏輯核心相互共享一些資源。例如,一種常見的設(shè)計(jì)是,邏輯核心共享執(zhí)行單元,分支預(yù)測器、預(yù)取器和緩存等處理器結(jié)構(gòu)。在 SMT 系統(tǒng)中,每個(gè)邏輯核心都有自己的寄存器和程序計(jì)數(shù)器,因此每個(gè)邏輯核心能夠執(zhí)行獨(dú)立的執(zhí)行線程。市面上典型的 SMT 實(shí)現(xiàn)方案包括英特爾的超線程 (Hyper-Threading) 和 AMD 的 SMT。

如果比較 Neoverse 處理器和其他支持 SMT 的處理器的 CPU 使用率,有時(shí)會(huì)出現(xiàn)這樣的情況:在類似的輕負(fù)載水平下,Arm CPU 使用率似乎更高。這可能令使用者認(rèn)為 Arm 平臺的性能可用擴(kuò)展空間較小。在本文中,我們將探討輕負(fù)載場景下,比較采用 SMT 和未采用 SMT 的系統(tǒng)時(shí),為什么“CPU 使用率”指標(biāo)可能具有誤導(dǎo)性。

測量 CPU 使用率

Linux 操作系統(tǒng)根據(jù) CPU 核心在工作還是處于空閑狀態(tài)來計(jì)算 CPU 使用率。SMT 模式下的邏輯核心共享物理核心的執(zhí)行資源。在輕負(fù)載場景下,邏輯核心能夠以物理核心的能力全速運(yùn)行。因此,操作系統(tǒng)可能會(huì)顯示邏輯 CPU 使用率低。但這并不意味著物理核心負(fù)載低,因?yàn)閮蓚€(gè)邏輯核心的負(fù)載都添加到了物理核心中。

這就導(dǎo)致負(fù)載較輕的情況下 SMT 系統(tǒng)與未采用 SMT 的系統(tǒng)相比,似乎有更多的剩余性能空間。但其實(shí)這可能是一個(gè)誤導(dǎo)。例如以下這個(gè)經(jīng)過大幅簡化的場景:

兩個(gè)邏輯核心 LCore0 和 LCore1 在一個(gè)物理處理器上運(yùn)行。

每個(gè)邏輯核心都運(yùn)行一個(gè)處理 Web 請求的工作負(fù)載。每個(gè)請求需使用整個(gè) CPU 0.1 秒進(jìn)行處理,然后返回等待狀態(tài)。

在一秒的時(shí)間范圍內(nèi),LCore0 和 LCore1 分別為三個(gè)請求提供服務(wù)。

LCore0 的執(zhí)行時(shí)間為 0.3 秒,空閑時(shí)間為 0.7 秒,因此計(jì)算得出 CPU 使用率為 30%。

LCore1 也是如此,同樣計(jì)算得出 CPU 使用率為 30%。

二者相加,物理處理器被充分使用的時(shí)間為 0.6 秒,因此實(shí)際使用率為 60%。

e31130bc-8dae-11ef-a511-92fbcf53809c.png

圖 1:SMT 下的 CPU 使用率說明

分析上述示例中的邏輯核心使用率時(shí),使用者可能會(huì)推斷 CPU 的能力足以繼續(xù)處理 14 個(gè) Web 請求。然而,實(shí)際 CPU 只能夠再處理四個(gè)請求。

需注意的是,與實(shí)際工作負(fù)載相比,上述示例經(jīng)過簡化,實(shí)際工作負(fù)載的物理處理器使用率可能更低,具體取決于支持在邏輯核心之間共享物理處理器資源的動(dòng)態(tài)條件。在嘗試預(yù)估系統(tǒng)上可能有多少可用性能空間時(shí),這種不可預(yù)測性會(huì)是一項(xiàng)挑戰(zhàn)。

在本文中,我們將設(shè)計(jì)一個(gè)微型基準(zhǔn)測試,以及使用實(shí)際工作負(fù)載在 SMT 系統(tǒng)上演示此行為。

微型基準(zhǔn)測試

這個(gè)微型基準(zhǔn)測試包含了大量讀數(shù)據(jù)和一些簡單數(shù)學(xué)運(yùn)算。它會(huì)產(chǎn)生較大的 IPC,從而充分利用物理處理器的可用執(zhí)行單元。為了模擬不同的負(fù)載水平,我們在計(jì)算循環(huán)中添加了不同的休眠時(shí)間。一級負(fù)載最輕,七級負(fù)載最重。在支持 SMT 的系統(tǒng)上,我們先在一個(gè)邏輯核心上運(yùn)行程序,然后在同一物理處理器的兩個(gè)邏輯核心上同時(shí)運(yùn)行程序。對從輕到重的所有負(fù)載水平都做同樣的測試。對于非 SMT 系統(tǒng),我們使用 Neoverse N2 進(jìn)行測試。對于雙核測試情形,我們使用連接到同一 Arm CMN 交叉點(diǎn)的兩個(gè)核。需注意的是,我們在編譯時(shí)禁用了向量化,因?yàn)閷?shí)際工作負(fù)載中的大多數(shù)代碼不像該微型基準(zhǔn)測試那樣容易實(shí)現(xiàn)向量化。

運(yùn)行測試

我們在運(yùn)行頻率為 3.5GHz 的主流 SMT 系統(tǒng)和未采用 SMT 的基于 Neoverse N2 的平臺 (2.7GHz) 上運(yùn)行微型基準(zhǔn)測試。

SMT

在我們的系統(tǒng)中,邏輯核心 0 和邏輯核心 32 共享同一個(gè)物理核心。因此,我們將在核心 0 和核心 32 上運(yùn)行。

e32e9e2c-8dae-11ef-a511-92fbcf53809c.png

此處列舉了在兩個(gè)核心上同時(shí)運(yùn)行微型基準(zhǔn)測試的輸出示例。1000000000 是我們使用微型基準(zhǔn)測試進(jìn)行的計(jì)算輪數(shù)。7 是我們希望達(dá)到的負(fù)載級別。我們將使用 perf 工具來收集 time elapsed(即總運(yùn)行時(shí)間)和 insn per cycle(即 IPC)。CPU 使用率通過 top 命令獲取。

e34d9868-8dae-11ef-a511-92fbcf53809c.png

收集到的結(jié)果如下所示:

e370831e-8dae-11ef-a511-92fbcf53809c.png

從數(shù)據(jù)中可以看出,從三級和四級負(fù)載開始,LCore 0 和 LCore 1 的綜合 CPU 使用率逐漸超過 100%,相應(yīng)地,兩個(gè)核心的 IPC 大幅下降。

非 SMT

在 Neoverse N2 平臺上,每個(gè)核心都是獨(dú)立的物理核心。我們將在核心 0 和核心 1 上運(yùn)行。

e38a5c44-8dae-11ef-a511-92fbcf53809c.png

結(jié)果表明,在 Neoverse 系統(tǒng)上,兩個(gè)核心的 IPC 與一個(gè)核心的 IPC 沒有太大的差別。而且,從輕負(fù)載到重負(fù)載,IPC 沒有下降。這一點(diǎn)與 SMT 系統(tǒng)截然不同。這意味著無論 CPU 使用率如何,CPU 的能力始終保持一致。

e3b0aa0c-8dae-11ef-a511-92fbcf53809c.png

對結(jié)果的進(jìn)一步分析

兩個(gè)硬件線程影響

要想找到一個(gè)可靠的直接指標(biāo)來判斷物理核心的繁忙程度,這并非易事,但我們可以從其他角度進(jìn)行判斷。在這里,我們選擇 IPC 進(jìn)行分析。我們使用兩個(gè)核心運(yùn)行得到的數(shù)據(jù)除以一個(gè)核心運(yùn)行得到的數(shù)據(jù)。這可以揭示 SMT 系統(tǒng)的特點(diǎn)。

e3d5f65e-8dae-11ef-a511-92fbcf53809c.png

在下圖中,我們看到在輕負(fù)載的情況下,對于 SMT 系統(tǒng),兩個(gè)核心和一個(gè)核心的 IPC 幾乎相同。這是因?yàn)槲锢砗诵牟⒉环泵?,邏輯核心的所有操作幾乎都是以物理核心的最快速度運(yùn)行,因此 IPC 非常高。CPU 使用率看起來很低。但物理核心實(shí)際運(yùn)行的負(fù)載是一個(gè)邏輯核的兩倍。因此,物理 CPU 的使用率應(yīng)該增加一倍。隨著負(fù)載的增加,與一個(gè)核心相比,兩個(gè)核心的 IPC 大幅降低。這是因?yàn)樗鼈冃枰獱幱煤凸蚕韴?zhí)行單元中的資源。此時(shí)物理核心已經(jīng)滿載,無法像輕負(fù)載情況下那樣及時(shí)處理來自兩個(gè)核心的所有請求。最后,IPC 降至幾乎一半。這證明兩個(gè)邏輯核心正在共享物理核心。

相比之下,Neoverse 系統(tǒng)始終保持在 1,因?yàn)閮蓚€(gè)核心是獨(dú)立的,無論負(fù)載水平如何,它們始終以相同的速度運(yùn)行。

e3f51138-8dae-11ef-a511-92fbcf53809c.png

圖 2:微型基準(zhǔn)測試 IPC 比較

性能與 CPU 使用率的對比

在這里,我們將性能定義為“1000000000/總運(yùn)行時(shí)間”。1000000000 是我們使用微型基準(zhǔn)工具進(jìn)行的測試輪數(shù)。由于我們使用的 Neoverse N2 平臺的頻率 (2.7Ghz) 遠(yuǎn)低于 SMT 系統(tǒng) (3.5Ghz),因此我們將 Neoverse N2 平臺的性能數(shù)據(jù)按比例調(diào)整為相同的 3.5Ghz。我們針對兩個(gè)核心的情況進(jìn)行對比,因?yàn)樵谏a(chǎn)環(huán)境中,同時(shí)使用物理核心的兩個(gè)邏輯核心是最通常的用例。

e40c14d2-8dae-11ef-a511-92fbcf53809c.png

下圖展示了頻率調(diào)整后的性能與 CPU 使用率??梢钥吹剑S著 CPU 使用率的增加,SMT 系統(tǒng)的性能輸出變得平緩。與此同時(shí),Arm 的性能輸出保持理想的線性增長趨勢,并最終在高 CPU 使用率區(qū)域性能超過了 SMT 系統(tǒng)。因此,如果僅使用低 CPU 使用率區(qū)域的性能輸出來預(yù)測 SMT 系統(tǒng)在高 CPU 使用率場景下的性能,可能會(huì)得到錯(cuò)誤的結(jié)果。

e4347e72-8dae-11ef-a511-92fbcf53809c.png

圖 3:微型基準(zhǔn)測試調(diào)整后的性能

在這里,我們又創(chuàng)建了“性能達(dá)成率”指標(biāo),即“性能/CPU 使用率”。性能數(shù)據(jù)來自上表。處理工作負(fù)載時(shí),理想的系統(tǒng)應(yīng)保持恒定的比率,即特定的 CPU 使用率應(yīng)提供特定的性能輸出。

從該圖中可以看出,隨著 CPU 使用率的增加,SMT 系統(tǒng)的性能達(dá)成率大幅下降。而在 Arm 平臺上,性能達(dá)成率表現(xiàn)得更好且恒定。

e472e932-8dae-11ef-a511-92fbcf53809c.png

圖 4:微型基準(zhǔn)測試調(diào)整后的性能達(dá)成率

實(shí)際工作負(fù)載

下面試著用大家熟悉的工作負(fù)載來描述這個(gè)問題。在這里,我使用了 Flink 以及用于對 Flink 進(jìn)行基準(zhǔn)測試的 Nexmark。

測試說明

針對 SMT 系統(tǒng)和未采用 SMT 的基于 Neoverse N2 的系統(tǒng),我們創(chuàng)建了兩個(gè)具有類似硬件資源的集群。軟件版本和配置也相同。

e4981c3e-8dae-11ef-a511-92fbcf53809c.png

Nexmark 有多個(gè)測試用例,這里我們選擇 Q0 測試進(jìn)行比較。其他的測試也會(huì)有類似輸出。

測試結(jié)果

Nexmark Q0 測試結(jié)果如下所示。對于 SMT 系統(tǒng)和 Arm 平臺,在相同負(fù)載水平 (TPS) 下,從 top 工具中得到的 CPU 使用率不同。

e4a8dc9a-8dae-11ef-a511-92fbcf53809c.png

可以看到,當(dāng)工作負(fù)載水平較低時(shí),Arm CPU 使用率高于 SMT 系統(tǒng),但當(dāng) CPU 使用率達(dá)到大約 50% 后,SMT 系統(tǒng)的 CPU 使用率增長得更快。最后,我們看到在高 CPU 負(fù)載下,SMT 系統(tǒng) CPU 使用率遠(yuǎn)高于 Arm 平臺。當(dāng) CPU 得到充分使用時(shí),Arm 平臺可輸出更高的 TPS。

e4cb910e-8dae-11ef-a511-92fbcf53809c.png

圖 5:不同 TPS 下的 Flink CPU 使用率

我們也可以從另一個(gè)角度來看:在相同的 CPU 使用率水平下,系統(tǒng)能夠生成的 TPS 數(shù)量的趨勢。起先,Arm 平臺表現(xiàn)得并不突出,但當(dāng) CPU 使用率達(dá)到大約 50% 后,Arm 的性能大幅提高。

e4e91652-8dae-11ef-a511-92fbcf53809c.png

圖 6:不同 CPU 使用率下的 Flink TPS

在這里,我們也創(chuàng)建了“性能達(dá)成率”指標(biāo),即 TPS/CPU_Usage。處理工作負(fù)載時(shí),理想的系統(tǒng)應(yīng)保持恒定的比率。從該圖中可以看出,隨著 CPU 使用率的增加,SMT 系統(tǒng)的性能達(dá)成率大幅下降。而在 Arm 平臺上,性能達(dá)成率表現(xiàn)得更好。

e513ec2e-8dae-11ef-a511-92fbcf53809c.png

圖 7:Flink 性能達(dá)成率

因此,該 Flink 測試用例展示的結(jié)果與我們在微型基準(zhǔn)測試中看到的結(jié)果相似。在輕負(fù)載場景下,Arm 平臺可能會(huì)顯示較高的 CPU 使用率。然而,超過某個(gè)點(diǎn)后,SMT 系統(tǒng)的 CPU 使用率會(huì)迅速超過 Arm,因此在高 CPU 使用率的情況下,SMT 系統(tǒng)的性能輸出下降。

結(jié)論

在輕負(fù)載場景下,支持 SMT 的系統(tǒng)的 CPU 使用率可能會(huì)被低估。在預(yù)估還有多少額外性能空間可供我們在機(jī)器上部署工作負(fù)載時(shí),CPU 使用率指標(biāo)可能具有誤導(dǎo)性。因此,在部署工作負(fù)載時(shí),我們應(yīng)在 CPU 被 100% 使用的情況下測試性能輸出水平,然后根據(jù)得到的值留出性能緩沖區(qū),而不是簡單的根據(jù) CPU 使用率預(yù)留性能空間。

聲明:本文內(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

    文章

    19893

    瀏覽量

    235171
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9352

    瀏覽量

    377501
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217050
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7151

    瀏覽量

    125576
  • smt
    smt
    +關(guān)注

    關(guān)注

    43

    文章

    3044

    瀏覽量

    72016

原文標(biāo)題:一文解謎 SMT 系統(tǒng)上 CPU 使用率的盲點(diǎn)

文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    labview如何獲取Win7的CPU使用率、MEM使用率和硬盤使用率?

    如題,LabVIEW開發(fā)程序,需要獲取CPU使用率、MEM使用率和硬盤使用率。
    發(fā)表于 11-13 10:52

    如何表示UCOS-III的CPU使用率?

    剛剛在修改一個(gè)程序,發(fā)現(xiàn)UCOS-II的CPU使用率是OSCPUUsage;但在UCOS-III系統(tǒng)卻報(bào)錯(cuò),那os-iii的CPU使用率
    發(fā)表于 08-01 03:52

    Outport對CPU使用率的影響是什么?

    時(shí),PIL 塊的 CPU 使用率變?yōu)?~0.000208%。在這種情況,我不確定該算法是否可以在沒有輸出端口的情況下工作,但我想知道您的意見。
    發(fā)表于 04-03 06:44

    CPU使用率問題求解

    對于我們的 CPU 使用率分析任務(wù),MathWorks 團(tuán)隊(duì)在 PIL 模式對 Nucleo-F303RE 72 MHz 板實(shí)施了一個(gè) simulink 示例。我在 MPC5775E 板上實(shí)現(xiàn)了
    發(fā)表于 04-03 09:07

    C#教程之CPU內(nèi)存使用率

    C#教程之CPU內(nèi)存使用率,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-20 14:16 ?7次下載

    Linux CPU 使用率與機(jī)器負(fù)載的關(guān)系與區(qū)別

    ,“有多少內(nèi)核,即有多少負(fù)載”。4.CPU使用率到多少才算比較理想?CPU用率在過去常常被我們
    發(fā)表于 04-02 14:31 ?552次閱讀

    cpu使用率多少算正常_cpu使用率100怎么辦

    本文首先分析了cpu使用率多少算正常,其次闡述了cpu使用率100的解決方法,最后介紹了優(yōu)化cpu使用率
    發(fā)表于 04-29 09:28 ?1.7w次閱讀

    cpu使用率過高怎么解決_cpu使用率過高是什么原因

    本文主要闡述了cpu使用率過高的原因及解決方法。
    發(fā)表于 04-29 09:34 ?1860次閱讀

    為什么明明沒開多少軟件,計(jì)算的CPU使用率卻莫名的高

    大家在用電腦的時(shí)候經(jīng)常會(huì)遇到一個(gè)情況,明明自己也沒開多少軟件,計(jì)算的CPU使用率卻莫名的高。這是什么原因呢,本文中將對此進(jìn)行講解。 (任務(wù)管理器截圖) 一般情況,CPU
    的頭像 發(fā)表于 02-03 17:09 ?2.8w次閱讀
    為什么明明沒開多少軟件,計(jì)算的<b class='flag-5'>CPU</b><b class='flag-5'>使用率</b>卻莫名的高

    CPU使用率達(dá)到100%會(huì)怎樣

    我們使用電腦的時(shí)候,點(diǎn)擊太多程序會(huì)導(dǎo)致CPU使用率達(dá)到100%。
    的頭像 發(fā)表于 02-02 10:59 ?5.5w次閱讀

    CPU使用率是什么意思

    打開電腦的任務(wù)管理器,看著跳動(dòng)的CPU使用率,發(fā)現(xiàn)很舒服。每一個(gè)線程占用了多少CPU清清楚楚,也就能針對性的確認(rèn)為啥你的電腦跑的慢了。
    的頭像 發(fā)表于 05-12 10:37 ?1w次閱讀

    Lappy電池警報(bào)和CPU使用率開源

    電子發(fā)燒友網(wǎng)站提供《Lappy電池警報(bào)和CPU使用率開源.zip》資料免費(fèi)下載
    發(fā)表于 11-29 14:41 ?0次下載
    Lappy電池警報(bào)和<b class='flag-5'>CPU</b><b class='flag-5'>使用率</b>開源

    使用Bolt監(jiān)控CPU使用率

    電子發(fā)燒友網(wǎng)站提供《使用Bolt監(jiān)控CPU使用率.zip》資料免費(fèi)下載
    發(fā)表于 12-14 11:23 ?0次下載
    使用Bolt監(jiān)控<b class='flag-5'>CPU</b><b class='flag-5'>使用率</b>

    什么是CPU使用率?如何測量CPU使用率?

    CPU 使用率CPU 在計(jì)算機(jī)上執(zhí)行各種任務(wù)和進(jìn)程所花費(fèi)的時(shí)間量的度量。
    的頭像 發(fā)表于 08-06 17:07 ?6883次閱讀

    如何在Linux系統(tǒng)中檢查CPU使用率

    首先在Linux系統(tǒng)中檢查CPU使用率??梢酝ㄟ^在命令行中輸入top或htop命令來查看當(dāng)前系統(tǒng)中各個(gè)進(jìn)程的CPU使用率。如果CPU
    發(fā)表于 01-06 10:42 ?1754次閱讀
    如何在Linux系統(tǒng)中檢查<b class='flag-5'>CPU</b><b class='flag-5'>使用率</b>