關(guān)于美國服務(wù)器CPU利用率可以反映出整機的繁忙程度,從整體上了解CPU的使用情況,美聯(lián)科技小編本文就帶來關(guān)于CPU利用率的介紹。美國服務(wù)器CPU是給軟件服務(wù)的,這是指用戶進程等調(diào)度單元,也就可以知道進程的CPU利用率是多少,因此美國服務(wù)器CPU利用率可以分為3個粒度來考慮:
1.單個CPU核心的利用率
2.整機CPU利用率
3.進程的CPU利用率。
這3種CPU利用率有各自的算法,美國服務(wù)器操作系統(tǒng)是以時間片來為系統(tǒng)記時的,是最本質(zhì)的時間單位,其它能看到的更人性化的時間格式都是通過它轉(zhuǎn)換的。需要注意的是,時間片是個累積量,無論是針對CPU級別還是進程級別,從操作系統(tǒng)被加載到內(nèi)存并掌權(quán)后,操作系統(tǒng)為它們記錄各自的時間片累積數(shù),這個量會一直累積增長,直到關(guān)機或進程結(jié)束生命周期。
美國服務(wù)器CPU利用率是指一段時間內(nèi)CPU消耗的度量,強調(diào)的是經(jīng)過一段時間內(nèi)測出來的,就像速度一樣,其概念是單位時間內(nèi)移動的距離,這也解釋了為什么top命令要有個時間間隔,默認是2秒。總的來說CPU利用率的實現(xiàn)原理是:在單位時間內(nèi)連續(xù)兩次采樣CPU的時間片數(shù),由于其是累積量,因此要取其差以獲取增量,然后再經(jīng)過后續(xù)處理得到不同級別的CPU利用率。
1、單個CPU核心的利用率
通過一定的時間間隔,周期地對某個CPU核心上的idle線程運行的時間片數(shù),和該CPU運行的時間片數(shù)進行兩次采樣,分別將兩次采樣值各自取其差,然后進行環(huán)比,最后再將比值乘以100%,所得的百分比便是該CPU的空閑率。
服務(wù)器中有多個CPU,我們用其中的一個CPU-CPU1來舉例說在時間A對CPU1的idle線程運行的時間片數(shù)和CPU1的總運行時間片數(shù)采樣,采樣值分別為 cpu1_ idle_ slices_A和cpul_ total sices A,然后在時間B同樣對CPU1的idle線程運行的時間片數(shù)和CPU1的總運行時間片數(shù)采樣,采樣值分別是 cpu1_idle_ slices_B和cpul_total_ slices_B。那么在B-A這段時間里,CPU1的空閑率公式便為:
(cpu1_idle_slicesB-cpu1_idle_slices_A)/(cpu1_total_slices_Bcpu1_total_slices_)"100%
相應(yīng)CPU1的利用率便為100減去上面公式的結(jié)果。如果CPU1很繁忙,idle線程一直未被調(diào)度運行,CPU1的空閑率便是0%,即利用率是100%。
2、整機CPU利用率
通過一定的時間間隔周期對所有美國服務(wù)器CPU上idle線程運行的時間片數(shù)和所有CPU運行的時間片數(shù)進行兩次采樣,分別將兩次采樣值各自取其差,然后進行環(huán)比,也就是用這段采樣周期內(nèi)所有CPU核心上idle線程運行的時間片數(shù)之和,比上這段采樣周期內(nèi)所有CPU運行的時間片數(shù)之和,最后再將比值乘以100%,所得的百分比便是所有idle線程在所有CPU上的利用率,也就是系統(tǒng)的整體空閑率。
假如在時間A對所有CPU上的idle線程運行的時間片數(shù)和所有CPU運行的時間片數(shù)采樣,采樣值分別是 cpuall_idle_ slices_A和 cpual_total_ slices_A,然后在時間B同樣對所有CPU上的idle線程運行的時間片數(shù)和所有CPU運行的時間片數(shù)采樣,采樣值分別是 cpuall_idle_ slices_B和 cpuall_total slices_B,那么在B-A這段時間里,整機CPU空閑率公式便為:
(cpuall _idle_slices_b-cpuall idle_slices_A)/(cpuall_totalslices_b-cpualltotallslices_A)*100%同樣,相應(yīng)整機的CPU利用率便為100去上面公式的結(jié)果。
以上這兩類CPU利用率主要是看CPU是否運行idle線程,屬于CPU級別的。由于運行哪個任務(wù)是由操作系統(tǒng)的任務(wù)調(diào)度器決定的,也就是只有當(dāng)操作系統(tǒng)發(fā)現(xiàn)沒有任務(wù)可運行時才會去執(zhí)行idle線程,因此只要idle在運行,就表示CPU有多余的空閑資源。
3、進程的CPU利用率
進程的美國服務(wù)器CPU利用率同樣是需要兩次采樣才能得到,但卻與前兩種CPU利用率有很大不同,進程在任意時刻只會在一個CPU上運行,當(dāng)美國服務(wù)器上有多個CPU時,保不準進程會在多個CPU之間來回轉(zhuǎn)移,比如當(dāng)前CPU負載很高,利用率已接近100%,當(dāng)下一次該進程重新運行在CPU上時,調(diào)度器會根據(jù)實際CPU負載情況,將其換到另一個負載輕的CPU上執(zhí)行。
盡管切換CPU這在一定程度上會影響性能,但由于進程之前所在的CPU的利用率已經(jīng)是100%,換到空閑CPU上對進程來說,得到了更多的執(zhí)行機會,可以更早的結(jié)束運行,因此利大于弊。
因此無法獲知在兩次采樣期間,進程被換了多少個CPU運行,多個CPU是并行的,它們各自獨立運行了一定的時間片數(shù),雖然可以獲取進程運行的時間片數(shù),但沒辦法知道進程經(jīng)過了哪些CPU,僅能知道最后一次是在哪個CPU上執(zhí)行,所以不知道去獲取哪些CPU在這段采樣周期內(nèi)運行的時間片數(shù)。
基于這個原因,進程CPU利用率的計算原理采用了“時間比”,也就是進程的執(zhí)行時間比上次采樣周期時間,所得的比值再乘以100%。但操作系統(tǒng)為用戶進程記錄的是進程的時間片數(shù),因此要將時間片數(shù)轉(zhuǎn)換為時間。轉(zhuǎn)換的方法也很簡單,將時間片數(shù)除以 syscon_SC_ CLK TCK換成以秒為單位的時間,然后再除以秒為單位的采樣時間。
當(dāng)然,如果是以秒這種粗粒度的時間去比較,必然會造成一定的誤差,因此,常常換算為以毫秒為單位的時間比。原理是這樣的,具體取決于實現(xiàn),如果要以微秒為單位采樣也是可以的。
關(guān)注美聯(lián)科技,了解更多IDC資訊!