韩国保姆2_少女伦理电影_HD中文字幕在线观看,玩偶姐姐在线观看高清,8090新视觉电影免费播放在线观看,98蜜桃

沃趣科技技術社區
行業前沿信息一網打盡
技術社區 > 性能優化|從ping延時看CPU電源管理

性能優化|從ping延時看CPU電源管理

2023年06月15日

前言



性能優化大師Brendan Gregg曾說:“性能問題可能來源于任何地方,包括系統中因你一無所知而不曾檢查的地方”,CPU電源管理就是在性能優化過程中經常被忽略的地方。在這篇文章中,我們從一個簡單的ping延遲出發,以小見大,一起了解CPU電源管理。


之前在項目中觀測到一個奇怪的現象(如下圖所示),在測試網絡延遲時,從服務器A ping服務器B延時只有0.04ms左右,但是從服務器B ping服務器A延遲確有0.12ms左右,結果相差三倍多!而兩臺服務器是直連的,中間也沒有經過路由器或交換機,那么延時差到底是怎么產生的呢?


1.jpg

在分析此問題時,我們將ping時延做一個簡單的拆分,它包括了在鏈路中的傳播時延和在服務器端的處理時延。我們首先判斷下網絡狀況是否良好,用tcpdump分別在收發兩端抓包,沒有發現丟包、亂序等問題,速率也沒有問題,網絡狀態良好。既然網絡傳輸沒有問題,那就重點分析下處理時延。


再來分析下抓到的ping報文,主要分析在兩臺服務器收到ICMP報文后發送回復報文的時間差,發現服務器A的回復時間更長。再使用ftrace分析代碼層的執行時間,圖1是服務器A的處理時間,圖2是服務器B的處理時間,對比可見,服務器A的ICMP reply執行時間比服務器B要長。那什么會影響函數執行的時間呢?是CPU。


2.jpg

圖1


3.jpg

圖2


在觀察服務器B ping服務器A的輸出(圖3)時發現,延時的變化范圍很大,有時延時也很短。


4.jpg

圖3



如圖4所示,CPU的頻率也是變化的,那么CPU頻率是怎么變的又是因何而變,跟延遲的變化有關系嗎?我們能否控制CPU頻率的這種變化呢?要了解這些我們首先要知道CPU的變頻和電源管理方面的知識。

5.jpg

圖4



CPU的變頻和電源管理

OS會根據工作負載選擇工作頻率和電壓,當負載較低時(例如此問題的ping報文收發),會對CPU進行降壓降頻以節省用電。在大部分場景下,CPU并不需要7X24小時滿負荷工作,為了省電和延長CPU的使用壽命就有了各種變頻省電技術。其中常見的有以下幾種:

■C states (Power states)

  1. 在空閑狀態時,通過關閉不同子系統(時鐘或者緩存等)達到不同省電狀態。 關閉的組件越多,耗電量越低,但恢復工作就越慢。


  2. 常用的有以下幾個狀態

    C0: 工作狀態,沒有組件關閉。

    C1: 使用HLT或MWAIT指令進入該狀態,C1狀態會關閉內部時鐘,但是可以立刻回到C0狀態。

    C3: 使用MWAIT指令進入該狀態,會將L1和L2緩存刷到LLC/L3緩存,并進一步關閉了PLL,但仍處于供電狀態。(C1,C3狀態下,Cache一致性是得到保證的,從而恢復現場速度也很快)

    C6: 使用MWAIT指令進入該狀態,內部設備的上下文信息(Context)被封存和凍結,Catch被清空和關閉,電壓也被降為0。恢復現場會更耗時。

    (idle_intel 驅動可能在Cstates關閉時,仍使core進入省電狀態。)

6.jpg

圖5



■P states (Performance states) 

  1. 根據處理器負載自動調節電壓和頻率,以減少耗電量和發熱量,大大減少了CPU在低工作量的能耗。(只有在C-states狀態為C0時才會有效,因為必須為其供電才能執行指令)

  • OS控制的P-states

    OS設定特定的P-states,即選擇工作頻率,處理器再根據頻率計算電壓。 

  • 硬件控制的P-states

    OS只給出負載,由硬件選擇對應的P-states,并設置電壓和頻率。

  • Intel_pstate驅動

    此驅動程序通過內置調頻器,實現面向Intel Core(SandyBridge 和更新的型號)處理器的調頻驅動??梢酝ㄟ^cpupower命令設置最大最小頻率。 


■monitor/mwait

  1. 在core空閑或者等待寫入時,使當前core進入C1等C-states的特殊指令。


■Turbo

  1. 在個別核非常繁忙同時其他核又因為空閑進入C-States時,內置的電源管理模塊將其電能輸送給忙碌的core,升高其電壓和頻率,使其獲得比標頻更高的頻率。



BIOS選項

  • 以DELL服務器為例,在System Profile Setting中可以找到有關電源管理的選項。disable C-States、Monitor/Wait相關選項,可以使CPU始終保持高頻率工作。

7.jpg

圖6



使用工具查看CPU運行等級

■corefreq-cli工具

  1. 可以查看各種系統狀態和CPU狀態,包括電壓,頻率,C-states,Turbo,溫度等。

8.jpg

圖7



問題解決

再回到剛開始的問題,通過corefreq-cli工具看到兩臺服務器的CPU確實工作在不同的C-States等級,如圖8所示,服務器B在C1而服務器A在C6。

9.jpg

圖8


調整服務器A的bios選項,在關閉了C-States、Monitor/Mwait后,兩臺服務的CPU都處在C1狀態(圖9),這時再分別在兩臺服務器執行ping操作,延時終于不相上下了!

10.jpg

圖9




總結


現代CPU電源管理功能十分強大,我們可以選擇經濟環保的方式讓CPU根據負載選擇工作頻率和電壓,在追求極致性能時也可以讓CPU不管任務量大小都滿負荷工作,在了解以上內容后,我們可以根據實際使用需求進行選擇。



讓數據庫基礎設施更簡單
加速企業數字化轉型建設及落地
立即咨詢

沃趣科技

中立的企業級數據庫云
十年磨一劍十年來始終如一的專注數據庫生態領域
夯實技術底蘊打造最適合時代的數據庫基礎設施
業績持續領先目前已累計服務超3000家企業客戶

留言咨詢

完善信息,我們第一時間跟您聯系
姓名
手機
公司
所在地區
咨詢問題