背景
CPU作為一種資源,它的主要用途就是用來完成運(yùn)算任務(wù)。完成運(yùn)算任務(wù)的能力與CPU資源消耗之間存在著可量化的制約關(guān)系,這給我們提供了一種途徑,通過衡量CPU完成運(yùn)算任務(wù)的能力來衡量CPU資源的消耗情況。
測量的維度
我們首先了解一下 CPU 都提供了哪些資源,或者說,我們可以把 CPU資源分解為哪些可以用來進(jìn)一步進(jìn)行測量的維度。
上面的圖和文字摘自ETSI GS NFV-TST 008,呈現(xiàn)的是一個物理CPU注1能夠被測量的幾個資源維度和他們之間的對應(yīng)關(guān)系。
注1:如果有多顆物理的CPU,可以在核(Core)這一層之上,再引入一層 Socket(可以形象地理解為 CPU的插槽)。一顆物理的CPU 對應(yīng)一個 Socket,代表一顆實實在在插在主板上的物理 CPU。當(dāng)然,也可以把多顆 CPU 的核放在一起來考慮。
最上面一層是以CPU的核作為資源衡量的對象。早先CPU只有一個核,一個核能同時處理一個線程。后來為了提高CPU 的性能,開始在一個 CPU 里放置兩個核,四個核,這樣一個 CPU 就可以同時處理2個線程/4個線程,而在開啟了 SMT/HT 的情況下,通過分配時間片,一個 CPU 可以“同時”處理更多的線程。
比如下面這個系統(tǒng)信息顯示:CPU 數(shù)量是 1,其中有 6 個核,并且啟用了 HT。
第二層是針對一個核,從時間維度把處理時間劃分為一個個tick interval(其時間長度稱為 Jiffy),以 tick interval 作為衡量的對象。每個 tick interval 有不同的上下文:例如系統(tǒng)態(tài),用戶態(tài),空閑態(tài)等。在測量周期內(nèi),可以統(tǒng)計不同態(tài)所對應(yīng)的時間長度。
第三層,針對處于用戶態(tài)的tick intervals,可以再按照進(jìn)程注 2再進(jìn)行劃分。通過為不同的線程分配時間片,實現(xiàn)在(在一個時間范圍內(nèi))同時處理多線程。在這個層面上,以進(jìn)程使用的計算資源為對象進(jìn)行衡量。
注2:
·進(jìn)程: 進(jìn)程是資源分配的基本單位;
·線程:CPU調(diào)度和分配的基本單位。
·線程是進(jìn)程的一個實體;一個進(jìn)程包含一個或多個線程;同一個進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。
一個程序/應(yīng)用至少有一個進(jìn)程,一個進(jìn)程至少有一個線程。
針對計算資源用量的測量
雖然計算資源可以劃分為 3 種維度(或者說計算資源的 Scope有 3 種),但是,對于 CPU 資源的使用情況的度量方法是相同的,簡單概括就是:從時間維度,度量一個測量周期內(nèi)計算資源的被占用情況。
具體來說,以ESTI GS NFV-TST 008為例,其中定義了兩種測量量:
處理器的用量:按照某種資源維度/計算資源scope的劃分,在一個測量周期內(nèi),在一個或多個計算資源上,執(zhí)行特定上下文的指令所使用的總時間。
處理器的利用率:處理器的用量與測量周期(的時間長度)的比值。
評估CPU資源的消耗
那么,能不能直接用處理器的用量/利用率來衡量 CPU 資源的消耗情況呢?
我們先看一個簡單的例子:
兩個進(jìn)程分別使用主頻不同的CPU,并且在相同的測量周期內(nèi),兩個進(jìn)程各自的處理器用量都是200ns。
雖然他們對于各自的計算資源占用時間(處理器的用量)相同,但是我們按照常識,一個直觀的感覺就是,由于CPU 的主頻不同,這兩個進(jìn)程對計算資源的消耗程度應(yīng)該是不一樣的。
如果要進(jìn)一步分析這種差異,需要了解幾個與CPU工作相關(guān)的周期:
1.CPU時鐘周期:是 CPU 進(jìn)行活動的最小時間單位,等于CPU 主頻的倒數(shù)。這是衡量 CPU 性能的重要指標(biāo)之一。
2.機(jī)器周期:是 CPU 執(zhí)行一項基本操作所需的時間。一個機(jī)器周期的長度為若干個 CPU時鐘周期;
3.指令周期:是 CPU 執(zhí)行一條指令所需的時間。CPU 執(zhí)行一條指令,通常會將其分解為若干個階段,每個階段完成一項任務(wù)。這里的任務(wù)就是指前面所說的基本操作。所以,指令周期會包含一個或多個機(jī)器周期。
假設(shè)不同的主頻的CPU 執(zhí)行完全同樣的一條指令,由于時鐘周期不同,指令周期的長度就會不同:主頻高的 CPU 所需的時間更少。
反過來再看前面的例子,可以推斷出占用 CPU 時間長度相同的兩個進(jìn)程,使用高主頻的CPU的進(jìn)程其需要 CPU 完成的任務(wù)數(shù)量要多于另一個使用低主頻 CPU 的進(jìn)程。
類似的,一個多核的 CPU可以類比為多個單核的 CPU。如果可以使用的資源包含多個核,那么在處理的任務(wù)數(shù)量方面,也可以得到類似的結(jié)論。
當(dāng)需要衡量一個進(jìn)程對CPU資源的消耗時(例如,在利用資源利用率評價能效的計算過程中),評估某個進(jìn)程(可能是VNF/VM/VC)到底讓CPU做了多少事情,比單純地考慮其占用CPU的時間長度更加準(zhǔn)確。
因此,除了要使用時間維度的處理器用量/利用率之外,計算CPU 資源的消耗還要進(jìn)一步考慮CPU 的時鐘速度和核數(shù):
CPU 資源的消耗 = 處理器的利用率*CPU的時鐘頻率*CPU的核數(shù)注
責(zé)任編輯:gt
-
cpu
+關(guān)注
關(guān)注
68文章
11049瀏覽量
216144 -
測量
+關(guān)注
關(guān)注
10文章
5187瀏覽量
112986 -
線程
+關(guān)注
關(guān)注
0文章
507瀏覽量
20100
發(fā)布評論請先 登錄

SOLIDWORKS教育版內(nèi)置了大量的教育資源

云游戲的基礎(chǔ)資源類型

hyper cpu,Hyper CPU優(yōu)化:提升虛擬機(jī)性能

fpga和cpu的區(qū)別 芯片是gpu還是CPU
AI云端計算資源有哪些類型
如何限制容器可以使用的CPU資源

云服務(wù)器的購買資源和擴(kuò)容資源的區(qū)別和聯(lián)系
服務(wù)器cpu占用率高怎么解決
服務(wù)器cpu和臺式機(jī)cpu區(qū)別
華納云:IaaS有哪些資源類型?
將軟件從8位(字節(jié))可尋址CPU遷移至C28x CPU

什么是CPU緩存?它有哪些作用?
JAVA應(yīng)用CPU跳點自動DUMP工具
CPU生產(chǎn)工藝圖解

評論