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

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

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

3天內不再提示

原因分析:CPU拓撲差異導致Unixbench分數異常

Linux閱碼場 ? 來源:未知 ? 作者:李倩 ? 2018-07-06 09:35 ? 次閱讀

本文通過實驗論證:Unixbench的Pipe-based Context Switching用例受操作系統調度算法的影響波動很大,甚至出現了虛擬機跑分超過物理機的情況。在云計算時代,當前的Unixbench已不能真實地反映被測系統的真實性能,需要針對多核服務器和云計算環境進行完善。

簡單的說,視操作系統多核負載均衡策略的差異,該用例可能表現出兩種截然不同的效果:

1?在惰性的調度策略環境下,測試得分較高,但是會導致系統中任務調度延遲,最終可能引起業務性能抖動。例如,在視頻播放、音頻處理的業務環境中,引起視頻卡頓、音頻視頻不同步等問題。

2?在積極的調度策略環境下,測試得分偏低,但是系統中任務運行實時性更高,業務運行更流暢。

后文將詳細說明Pipe-basedContext Switching用例的設計原理,測試其在不同系統中的運行結果,并提出測試用例改進建議。

1測試背景

近期,團隊在進行服務器選型的時候,需要對兩款服務器進行性能評估,其中一款服務器采用64核Xeon CPU,另一臺則采用16核Atom CPU。詳細配置信息如下:

指標名稱 Xeon服務器 Atom服務器
Architecture x86_64 x86_64
CPUs 64 16
Threads per core 2 1
Core(s) per socket 16 16
Socket(s) 2 1
NUMA node(s) 1 1
Model name Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz Intel(R) Atom(TM) CPU C3958 @ 2.00GHz
CPU MHz 2499.902 1999.613
BogoMIPS 4993.49 3999.22
L1d cache 32K 24K
L1i cache 32K 32K
L2 cache 256K 2048K
L3 cache 40960K None

根據硬件廠商的評測,Xeon服務器的綜合性能是Atom服務器的3倍。

我們采用了久負盛名的Unixbench性能測試套件,為我們最終的選擇提供參考。

Xeon的性能碾壓Atom是毋庸置疑的,畢竟Atom 更專注于功耗而不是性能,Atom服務器甚至沒有3級緩存,并且StoreBuffer、Message Queue的深度更低,流水線級數更少。

出于業務需求,在整個測試過程中我們更關注單核的性能。為了排除軟件的影響,兩臺服務器均安裝Centos 7操作系統。

測試命令很簡單,在控制臺中執行如下命令:

./Run -c 1 -v

執行時間比較久,我們可以到一邊去喝點燒酒。一杯燒酒下肚,神清氣爽:-)可以看看結果是否符合咱們的預期:

指標名稱 Xeon服務器 Atom服務器
Dhrystone 2 using register variables 2610.1 1283.7
Double-Precision Whetstone 651.2 489.4
Execl Throughput 447.9 361.5
File Copy 1024 bufsize 2000 maxblocks 2304.5 955.0
File Copy 256 bufsize 500 maxblocks 1494.5 711.2
File Copy 4096 bufsize 8000 maxblocks 4475.9 1396.2
Pipe Throughput 1310.9 614.4
Pipe-based Context Switching 428.4 339.8
Process Creation 461.7 159.6
Shell Scripts (1 concurrent) 1438.8 326.7
Shell Scripts (8 concurrent) 5354.5 789.8
System Call Overhead 2237.0 930.1
System Benchmarks Index Score 1390.9 588.4

總分整體符合預期:Xeon服務器單核性能是Atom服務器的2.36倍(1390/588.4)

但是,這里出現了一個異常,細心的讀者應該已經發現:Pipe-based Context Switching測試用例的結果比較反常!從上表可以看出,無論是總分還是單項分數,Xeon服務器均遠遠超過Atom服務器。其中也包括Pipe Throughput這項用例。然而“Pipe-based Context Switching”這項指標顯得有點與眾不同:在這項指標中,Xeon服務器的優勢并不明顯,僅領先25%左右。

為了排除測試誤差,我們反復進行了幾次測試,均發現同樣的規律。“Pipe-based Context Switching”項的分數差異并不明顯,沒有體現出Xeon服務器的性能優勢。

這一問題引起了我們的興趣,Unixbench這樣的權威測試軟件的結果居然和廠商宣稱的出入這么大。為了找出原因,我們使用其他測試環境,進行了一系列的對比測試。首先,我們找了更多物理機進行對比分析。

1.1物理機對比測試

為此,我們使用另一組服務器進行對比測試,其型號分別為:HP ProLiantDL360p Gen8?DELL PowerEdge R720xd。配置如下:

指標名稱 HP ProLiant DL360p Gen8 DELL PowerEdge R720xd
Architecture x86_64 x86_64
CPUs 24 32
Threads per core 2 2
Core(s) per socket 6 16
Socket(s) 2 2
NUMA node(s) 1 1
Model name Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
CPU MHz 1200.000 2300.000
BogoMIPS 4594.05 4615.83
L1d cache 32K 32K
L1i cache 32K 32K
L2 cache 256K 256K
L3 cache 15360K 20480K

分別在兩臺服務器的控制臺中輸入如下命令,單獨對“Pipe-based Context Switching”用例進行測試:

./Run index2 -c1

得到該測試項的分數為:

指標名稱 ProLiant DL360p Gen8 PowerEdge R720xd
Pipe-based Context Switching 381.4 432.1

測試結果與上面相似,硬件參數明顯占優的DELLL跑分僅領先HP不到20%:-(

1.2物理機VS虛擬機

測試似乎陷入了迷途,然而我們一定需要將加西亞的信送到目的地,并且堅信“柳暗花明又一村”的那一刻終究會到來。

為此,我們使用三組云虛擬機來進行測試。這三組虛擬機配置如下:

指標名稱 虛擬機A 虛擬機B 虛擬機C
Architecture x86_64 x86_64 x86_64
CPUs 4 4 4
Threads per core 2 1 1
Core(s) per socket 2 4 4
Socket(s) 1 1 1
NUMA node(s) 1 1 1
Model name Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz Intel(R) Xeon(R) CPU E5-26xx v4 Intel(R) Xeon(R) CPU E5-2676 v3 @2.40 GHz
CPU MHz 2494.222 2394.454 2400.102
BogoMIPS 4988.44 4788.90 4800.07
L1d cache 32K 32K 32k
L1i cache 32K 32K 32k
L2 cache 256K 4096K 256K
L3 cache 40960K none 30720K

這三款虛擬機與此前的物理機參數相差不大,如果不出意外的話,分數應當介于300~400之間。

然而測試結果出人意料,以至于筆者的鏡片摔了一地:

指標名稱 虛擬機A 虛擬機B 虛擬機C
Pipe-based Context Switching 109.4 589.1 105.1

特別令人吃驚的是:第二組虛擬機的測試分數,竟然是物理主機的1.5倍,并且是第一組虛擬機和第三組虛擬機的5.4倍。

1.3單核和多核對比測試

為此,我們認真分析不同系統中的CPU占用率。發現一個特點:在Pipe-based Context Switching用例運行期間,在得分高的環境中,兩個context線程基本上運行在同一CPU上。而在得分低的環境中中,兩個context線程則更多的運行在不同的CPU上。這說明:測試結果差異可能與Guest OS中的調度算法及CPU負載均衡策略有關。

我們不得不啟用了排除法,先看單核和多核之間的差異。

為了驗證猜想是否正確,我們臨時修改了Guest OS中內核調度算法。修改原理是:在喚醒線程時,不管其他CPU核是否空閑,優先將被喚醒任務調度到當前CPU中運行。這樣的調度算法,其缺點是:被喚醒任務將不能立即運行,必須等待當前線程釋放CPU后才能獲得CPU,這將導致被喚醒線程的實時性較弱。

經過測試,在打上了Linux內核調度補丁的系統中,Pipe-based Context Switching在虛擬機和物理機上,得分大大提升。實際測試的結果如下:

指標名稱 虛擬機A
Pipe-based Context Switching 530.2

很顯然,我們不能將上述補丁直接應用到生產環境中,因為該補丁會影響任務運行的實時性。因此我們將Linux內核調度補丁回退,并修改“Pipe-based ContextSwitching”測試用例的代碼,強制將context線程綁定到CPU 0中運行,這樣可以避免Guest OS中的調度算法及CPU負載均衡算法的影響。測試結果如下:

指標名稱 虛擬機A 虛擬機B 虛擬機C
Pipe-based Context Switching 761.0 953.7 675.3

我們再次修改“Pipe-based Context Switching”測試用例的代碼,強制將context線程分別綁定到CPU 0和CPU 1中運行,這樣也可以避免Guest OS中的調度算法及CPU負載均衡算法的影響。測試結果如下:

指標名稱 虛擬機A 虛擬機B 虛擬機C
Pipe-based Context Switching 109.1 133.6 105.1

可以看到,應用了新的“Pipe-basedContext Switching”補丁之后,所有測試結果都恢復了正常,離真相越來越近了。

2原因分析: CPU拓撲差異導致Unixbench分數異常

通過前面針對“Pipe-based Context Switching”單實例用例的測試,帶給我們如下疑問:

為什么在該用例中,虛擬機B得分接近600,遠高于虛擬機A、虛擬機C,甚至高于虛擬機A所在的物理機?

為了分析清楚該問題,我們分析了Pipe-based Context Switching用例, 這個用例的邏輯是:測試用例創建一對線程A/B,并創建一對管道A/B。線程A寫管道,線程B讀A管道;并且線程B寫B管道,線程A程讀B管道。兩個線程均同步執行。

經過仔細分析,虛擬機A和虛擬機B在該用例上的性能差異的根本原因是:在虛擬機環境下,底層Host OS向Guest OS透傳的cpu拓撲不同,導致虛擬機系統中的調度行為不一致, 最終引起很大的性能差異。其中虛擬機A是按照Host主機的實際情況,將真實的CPU拓撲傳遞給Guest OS。而虛擬機B的主機則沒有將真實的物理主機CPU拓撲傳遞給Guest OS。這會導致虛擬機內所見到的CPU拓撲和共享內存布局有所不同。

在真實的物理服務器上,每個物理核會有各自的FLC和MLC,同一個Core上的CPU共享LLC。這樣的CPU拓撲允許同一Core上的CPU之間更積極的進行線程遷移,而不損失緩存熱度,并且能夠提升線程運行的實時性。這個特性,更利于視頻播放這類實時應用場景。

下圖是虛擬機A和虛擬機B中看到的CPU視圖:

拓撲結構的差異地方在LLC的共享方式,虛擬機A使用的拓撲結構與物理機一致,同一個Core內CPU共享LLC。而虛擬機B的配置是同一個Core內CPU不共享LLC。不共享LLC的場景下,Linux將每個CPU在LLC層次的調度域設置為空。這樣,虛擬機B的Guest OS會認為同一物理CPU內的兩個超線程是兩個獨立的CPU,處于不同的域之間(這與實際的物理機配置不一致),因此其負載均衡策略會更保守一些。喚醒一個進程時,內核會為其選擇一個運行的目標CPU,linux的調度策略會考慮親和性(提高cache命中率)和負載均衡。在Linux 3.10這個版本下,內核會優先考慮親和性,親和性的目標是優先選取同一個調度域內的CPU。虛擬機A共享LLC,所有的CPU都在同一個調度域內,內核為其選擇的是同一調度域內的空閑CPU。而虛擬機B因為LLC層次的調度域為空,在進入親和性選擇時,無法找到同一個調度域內的其它空閑CPU,這樣就直接返回了正在進行喚醒操作的當前CPU。

最終,在虛擬機B中,除了偶爾進行的CPU域間負載均衡以外,兩個測試線程基本上會一直在同一個CPU上運行。而虛擬機A的兩個進程會并發的運行在兩個不同的CPU上。

這一特征下的運行時間軸如下:

虛擬機B場景引入的開銷是喚醒和等待運行開銷,虛擬機A場景引入的開銷是喚醒和切換運行開銷。

在正常的工作負載下面,進程運行的時間會遠大于進程切換的開銷,而Pipe-based Context Switching用例模擬的是一個極限場景,一個線程在喚醒對端到進入睡眠之間只執行很簡單的操作,實際等待運行的開銷遠小于切換運行的開銷。

此外,在虛擬化場景下,兩種方式喚醒操作中也存在差異,在虛擬機A這個場景下,喚醒的開銷也遠大于虛擬機B場景中的喚醒開銷。最終出現虛擬機B上該用例的得分遠高于虛擬機A、虛擬機C,甚至高于物理機上的得分。

為了進一步驗證我們的分析是否正確。我們在HOST OS中,分別向虛擬機A的GuestOS和虛擬機B的Guest OS按照不同方式傳遞CPU拓撲。測試發現:在同樣的CPU拓撲結構下,二者的測試分數是一致的。換句話說,導致該項測試分數差異的原因,在于不同的HOST OS向Guest OS傳遞的CPU拓撲存在差異,進而導致Guest OS中任務調度行為的差異。

3 結論:Unixbench需要針對多核服務器和云環境進行優化

unixbench的Pipe-based Context Switching用例受操作系統調度算法的影響比較大。視操作系統多核負載均衡策略的差異,可能表現出兩種截然不同的效果:

1?在多核負載均衡策略不積極的系統中,測試線程更多的運行在同一個CPU中,線程之間的切換開銷更低。因此測試得分更高,但是會導致系統中任務調度延遲。在實時性要求比較高的系統中,這會引起業務抖動。例如,在視頻播放、音頻處理的業務環境中,這可能引起視頻卡頓、音頻視頻不同步等問題。

2?在多核負載均衡策略更積極的系統中,測試線程更多的運行在不同的CPU中,線程之間的切換開銷更高。因此測試分值更低,但是系統中任務調度延遲更低,業務的性能不容易產生波動。

換句話說:當前的Unixbench已不能真實地反映被測系統的真實性能,需要針對多核服務器和云計算環境進行完善。

4 修改建議

我們建議調整unixbench測試用例,將測試用例的線程綁定到Guest OS的CPU上。這樣就可以避免受到Guest OS調度策略和CPU負載均衡策略的影響。具體來說,有兩種方法:

1?將context1和context2兩個線程綁定在同一個CPU核上面。這樣可以反應出被測試系統在單核上的執行性能。

2?將context1和context2兩個線程分別綁定到不同CPU核上面。這樣可以反應出被測試系統在單核的執行性能,以及多核之間的核間通信性能。

(完)

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

    關注

    68

    文章

    10855

    瀏覽量

    211615
  • 云計算
    +關注

    關注

    39

    文章

    7776

    瀏覽量

    137369
  • 服務器
    +關注

    關注

    12

    文章

    9129

    瀏覽量

    85350

原文標題:燕青: Unixbench 測試套件缺陷深度分析

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CYT2B7 SFlash被異常修改的原因

    0x17001C00 ~ 0x17006FFF這段區域,芯片處理Normal模式下,是否可被異常篡改呢? 請各位專家幫忙分析下,SFlash被異常修改的可能原因
    發表于 05-28 08:11

    【NanoPi NEO試用體驗】利用unixbench進行性能評估

    ,是比較通用的測試VPS性能的工具.UnixBench會執行一系列的測試,包括2D和3D圖形系統的性能衡量,測試的結果不僅僅只是CPU,內存,或者磁盤為基準,還取決于硬件,操作系統版本,編譯器.測試系統
    發表于 11-10 16:05

    產生Fault異常原因是什么? 如何分析Fault異常

    產生Fault異常原因是什么?如何分析Fault異常
    發表于 11-30 07:59

    導致STM32進入HardFault異常原因

    1、導致異常原因有很多,例如:直接使用未分配空間的指針、棧溢出等異常非法操作便會使程序進入“HardFault”異常狀態。接下來在MDK工
    發表于 01-07 06:52

    壓縮機異常響聲原因分析及處理

    本文通過對壓縮機異常響聲的原因分析理處理過程的描述.說明了因果分析法用于解決實際生產問題的科學性瑟實效性。
    發表于 05-23 14:12 ?11次下載

    CPU PG異常檢修

    CPU PG異常檢修 一、CPU PG信號示例圖              
    發表于 04-26 16:29 ?2379次閱讀
    <b class='flag-5'>CPU</b> PG<b class='flag-5'>異常</b>檢修

    導致致命異常錯誤和無效頁錯誤的原因是什么?

    導致致命異常錯誤和無效頁錯誤的原因是什么? 如果Microsoft Word或Excel“崩潰”,意味著在程序執行過程中出現了嚴重的錯誤。操作系統常常會發現存在一個嚴重問題,并
    發表于 08-05 10:33 ?1010次閱讀

    導致變壓器溫度異常原因

    導致變壓器溫度異常原因:    1、內部故障引起溫度異常    變壓器內部故障如匝間短路或層間短路,線圈對圍屏放電,內部引
    發表于 12-05 14:49 ?1431次閱讀

    導致MCU出現功能嚴重異常的幾個原因分析

    我們在從事MCU應用開發過程中,難免會碰到MCU芯片異常的問題。比如異常復位,表現為復位腳有電平跳變或者干脆處于復位電平;在做代碼調試跟蹤時,發現代碼往往進不到用戶main()程序;或者時不時感覺芯片死掉了,功能完全不可控等。 針對類似嚴重
    發表于 11-29 16:10 ?1.2w次閱讀

    CPU 拓撲中的SMP架構

    CPU 拓撲用來表示 CPU 在硬件層面的組合方式,本文主要講解 CPU 拓撲中的 SMP(Symmetric Multi-Processo
    的頭像 發表于 08-29 11:02 ?4455次閱讀

    分享排查Linux系統CPU占用的一個Shell腳本

    眾所周知,Linux系統CPU占用100%這個異常現象還是經常遇到的,因此分析導致異常原因是解
    的頭像 發表于 09-04 09:17 ?1826次閱讀
    分享排查Linux系統<b class='flag-5'>CPU</b>占用的一個Shell腳本

    拓撲視圖與實際拓撲結構間的差異

    簡介 拓撲視圖是硬件和網絡編輯器的三個工作區中的一個。在此處可執行以下任務: 顯示以太網拓撲 組態以太網拓撲 標識出指定拓撲結構與實際拓撲
    的頭像 發表于 09-10 09:56 ?1110次閱讀
    <b class='flag-5'>拓撲</b>視圖與實際<b class='flag-5'>拓撲</b>結構間的<b class='flag-5'>差異</b>

    Java oom異常原因分析

    據,而棧內存用于存儲方法調用和局部變量。 當程序需要使用更多內存時,會向操作系統請求更多的內存空間。如果操作系統無法分配足夠的內存空間,就會導致OOM異常的發生。 導致OOM異常
    的頭像 發表于 12-05 13:43 ?779次閱讀

    cpu溫度太高怎么解決?cpu溫度高的原因

    cpu溫度太高怎么解決?cpu溫度高的原因CPU (中央處理器) 溫度過高可能會導致系統崩潰、性能下降甚至損壞硬件,因此是一個需要嚴肅對
    的頭像 發表于 12-09 16:15 ?3578次閱讀

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析? 在C語言中,訪問權限沖突異常通常是由于嘗試訪問未授權的變量、函數或其他數據
    的頭像 發表于 01-12 16:03 ?5651次閱讀
    主站蜘蛛池模板: 在线涩涩免费观看国产精品| 黑人干亚洲人| 在线亚洲精品福利网址导航| 色www永久免费| 麻豆第一区MV免费观看网站| 国产精品一区二区在线播放| 97在线精品视频| 亚洲二区电影| 涩涩爱涩涩片影院| 免费三级网址| 久久国产36精品色熟妇| 国产成人久视频免费| music radio在线收听| 中文成人在线| 亚洲精品无码成人AAA片| 少妇被阴内射XXXB少妇BB| 免费人成在线观看视频不卡| 久久免费看少妇高潮A片特爽 | 木凡的天空在线收听| 精品免费视在线视频观看| 国产国产乱老熟视频网站| 纯肉高H放荡受BL文库| 99热在线精品免费全部my| 中文字幕在线久热精品| 亚洲午夜久久久久久久久电影网 | 国产精品第一综合首页| YY8090福利午夜理论片| AAA级精品无码久久久国片| 最新无码国产在线视频| 一色狗影院| 中文免费视频| 最新亚洲人成网站在线影院| 用快播看黄的网站| 永久精品免费影院在线观看网站| 亚洲精品国产字幕久久vr| 午夜快车神马影视| 香蕉AV福利精品导航| 羞羞在线观看| 亚洲精品成人A8198A片漫画| 亚洲妈妈精品一区二区三区| 亚洲日本香蕉视频观看视频|