關於CPU利用率的介紹

2020-11-21 南華中天企業

關於CPU利用率,可以反映出整機的繁忙程度,從整體上了解CPU的使用情況,下面小編就帶來關於CPU利用率的介紹。CPU是給軟體服務的,這是指用戶進程等調度單元,也就可以知道進程的CPU利用率是多少,因此CPU利用率可以分為3個粒度來考慮:

1.單個CPU核心的利用率

2.整機CPU利用率

3.進程的CPU利用率。

這3種CPU利用率有各自的算法,作業系統是以時間片來為系統計時的,是最本質的時間單位,其它能看到的更人性化的時間格式都是通過它轉換的。需要注意的是,時間片是個累積量,無論是針對CPU級別還是進程級別,從作業系統被加載到內存並掌權後,作業系統為它們記錄各自的時間片累計數,這個量會一直累積增長,直到關機或進程結束生命周期。

CPU利用率是指一段時間內CPU消耗的度量,強調的是經過一段時間內測出來的,就像速度一樣,其概念是單位時間內移動的距離,這也解釋了為什麼top命令要有個時間間隔,默認是2秒。總的來說CPU利用率的實現原理是:在單位時間內連續兩次採樣CPU的時間片數,由於其是累積量,因此要取其差以獲取增量,然後再經過後續處理得到不同級別的CPU利用率。

1、單個CPU核心的利用率

通過一定的時間間隔,周期地對某個CPU核心上的idle線程運行的時間片數,和該CPU運行的時間片數進行兩次採樣,分別將兩次採樣值各自取其差,然後進行環比,最後再將比值乘以100%,所得的百分比便是該CPU的空閒率。

伺服器中有多個CPU,我們用其中的一個CPU-CPU1來舉例說在時間A對CPU1的idle線程運行的時間片數和CPU1的總運行時間片數採樣,採樣值分別為 cpu1_ idle_ slices_A和cpul_ total sices A,然後在時間B同樣對CPU1的idle線程運行的時間片數和CPU1的總運行時間片數採樣,採樣值分別是 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%

相應CPU1的利用率便為100減去上面公式的結果。如果CPU1很繁忙,idle線程一直未被調度運行,CPU1的空閒率便是0%,即利用率是100%。

2、整機CPU利用率

通過一定的時間間隔周期對所有CPU上idle線程運行的時間片數和所有CPU運行的時間片數進行兩次採樣,分別將兩次採樣值各自取其差,然後進行環比,也就是用這段採樣周期內所有CPU核心上idle線程運行的時間片數之和,比上這段採樣周期內所有CPU運行的時間片數之和,最後再將比值乘以100%,所得的百分比便是所有idle線程在所有CPU上的利用率,也就是系統的整體空閒率。

假如在時間A對所有CPU上的idle線程運行的時間片數和所有CPU運行的時間片數採樣,採樣值分別是 cpuall_idle_ slices_A和 cpual_total_ slices_A,然後在時間B同樣對所有CPU上的idle線程運行的時間片數和所有CPU運行的時間片數採樣,採樣值分別是 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%同樣,相應整機的CPU利用率便為100去上面公式的結果。

以上這兩類CPU利用率主要是看CPU是否運行idle線程,屬於CPU級別的。由於運行哪個任務是由作業系統的任務調度器決定的,也就是只有當作業系統發現沒有任務可運行時才會去執行idle線程,因此只要idle在運行,就表示CPU有多餘的空閒資源。

3、進程的CPU利用率

進程的CPU利用率同樣是需要兩次採樣才能得到,但卻與前兩種CPU利用率有很大不同,進程在任意時刻只會在一個CPU上運行,當上有多個CPU時,保不準進程會在多個CPU之間來迴轉移,比如當前CPU負載很高,利用率已接近100%,當下一次該進程重新運行在CPU上時,調度器會根據實際CPU負載情況,將其換到另一個負載輕的CPU上執行。

儘管切換CPU這在一定程度上會影響性能,但由於進程之前所在的CPU的利用率已經是100%,換到空閒CPU上對進程來說,得到了更多的執行機會,可以更早的結束運行,因此利大於弊。

因此無法獲知在兩次採樣期間,進程被換了多少個CPU運行,多個CPU是並行的,它們各自獨立運行了一定的時間片數,雖然可以獲取進程運行的時間片數,但沒辦法知道進程經過了哪些CPU,僅能知道最後一次是在哪個CPU上執行,所以不知道去獲取哪些CPU在這段採樣周期內運行的時間片數。

基於這個原因,進程CPU利用率的計算原理採用了「時間比」,也就是進程的執行時間比上次採樣周期時間,所得的比值再乘以100%。但作業系統為用戶進程記錄的是進程的時間片數,因此要將時間片數轉換為時間。轉換的方法也很簡單,將時間片數除以 syscon_SC_ CLK TCK換成以秒為單位的時間,然後再除以秒為單位的採樣時間。

當然,如果是以秒這種粗粒度的時間去比較,必然會造成一定的誤差,因此,常常換算為以毫秒為單位的時間比。原理是這樣的,具體取決於實現,如果要以微秒為單位採樣也是可以的。

相關焦點

  • 如何快速獲取CPU利用率
    本篇筆記主要介紹,在freeRTOS環境下,以STM32為例介紹如何快速獲取CPU利用率,配合CubeMonitor測試
  • linux下如何獲取cpu的利用率
    這裡將介紹如何從/proc文件系統中獲取與防火牆相關的一些性能參數,以及如何通過/proc文件系統修改內核的相關配置。CPU的利用率使用如下公式來計算。         內存使用百分比   =   100   *   (cmem   /   umem)         (3)網絡利用率         為了得到網絡利用率的相關數據,需要從/proc/net/dev文件中獲得兩個數據:從本機輸出的數據包數,流入本機的數據包數。它們都位於這個文件的第四行。
  • Linux下如何獲取cpu的利用率
    這裡將介紹如何從/proc文件系統中獲取與防火牆相關的一些性能參數,以及如何通過/proc文件系統修改內核的相關配置。CPU的利用率使用如下公式來計算。 CPU利用率 = 100 *(user + nice + system)/(user + nice + system + idle) (2) 內存使用率 這裡需要從/proc/meminfo文件中提取兩個數據,當前內存的使用量(cmem)以及內存總量(amem)。
  • 用了這麼多年的 CPU 利用率,其實是錯的
    原文連結:http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html本文中若有任何疏漏錯誤,責任在於編譯者。有任何建議和意見,請回復內核月談微信公眾號,或通過 caspar at linux.alibaba.com 反饋。
  • 【必看】CPU 利用率背後的真相,只有 1% 人知道
    作者根據PMU相關的工作經驗,設定了1.0這個閾值,用於區分訪存密集型(memory-bound)和計算密集型(cpu-bound)程序。讀者可以根據自己的實際工作平臺,合理調整這個閾值。5. 性能工具應該告訴我們什麼?
  • 實現自我隱藏 CPU 利用率的最佳方法,不妨一試!
    想不想讓CPU利用率展示成一首優美的旋律,就像彈琴一樣。我的意思是,你想讓系統以及 task 的 CPU 利用率是多少它就是多少,一切都是由你的程序自己來調製演奏。 這需要一種自指機制。     *     */    __get_cpu_var(kernel_cpustat).cpustat[index] += tmp;    cpuacct_account_field(p, index, tmp);}其中的 index 是一個枚舉,分別表示 CPU 時間的類型,大致看一眼就行:
  • Linux伺服器性能分析之CPU利用率
    如何查看cpu利用率2.1 使用top命令查看數據來自/proc/stat文件%us =(User time + Nice CPU介紹3.1 內核中的時間HZ是系統時鐘在一秒內固定發出時鐘中斷的次數。顯示了用戶方式下所花費CPU時間的百分比,用戶使用CPU的進程包括:cpu運行常規用戶進程,cpu運行niced process,cpu運行實時進程。
  • Linux CPU負載與利用率
    如果是多核多cpu,比如現在是2個cpu,每個cpu是1個核,那麼理論上總負載不能超過2。2、如何查看CPU信息?(1)查看單個cpu核數:cat /proc/cpuinfo | grep "cpu cores"|uniq(2)查看物理CPU個數:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l(3)查看邏輯CPU的個數:cat
  • Linux CPU利用率的這點事,身為DevOps的你有必要知道
    在Linux/Unix下,CPU利用率分為用戶態、系統態和空閒態,分別表示CPU處於用戶態執的時間,系統內核執行的時間,和空閒系統進程執行的時間。CPU佔用率相關的概念CPU UsageCPU利用率:CPU的使用情況。
  • Linux下CPU的利用率
    CPU利用率是對系統進行性能分析的重要因素,本文將說明CPU時間的組成以及利用率的計算方法。
  • 實操RT-Thread系統CPU利用率功能添加
    上周提到為什麼我們需要關注CPU利用率的問題,總結一句話就是,利用率越低,你的系統效率越高、響應越快,實時性越高。但是並沒有具體說該如何計算CPU利用率。今天,藉助國產作業系統RT-Thread,我們開始實操一番。在實操之前,需要簡單了解幾個概念。
  • 如何提高 CPU 利用率?Flink 該如何設定並行度?調大並行度一定會提高 Flink 吞吐嗎?
    Flink 從入門到精通 系列文章生產中是否有遇到過:調大 Flink 任務並行度,但任務的整體吞吐量幾乎沒有提升Flink 任務整體 CPU 利用率特別低,如何提高資源利用率呢?調大 KeyGroup 數量,控制好每個 TM 上分配 KeyGroup 的數量提高 CPU 利用率的通用方案:調整 slot 與 CPU 的映射關係2、任務介紹
  • 排查cpu、內存、IO問題命令詳解
    參數作用案例N按照pid排序(PID一列從大到小)P按照cpu利用率排序(%CPU一列從大到小)M按照內存利用率排序(%MEM一列從大到小)T進程使用cpu時間總計排序(TIME+一列從大到小)1數字1可以看到有幾個cpu,每個cpu的使用情況c切換顯示命令名稱和完整命令行f查看top輸出欄位的含義m切換顯示內存信息n輸入數字
  • x99主板配什麼cpu 幾款x99主板介紹【詳細介紹】
    對電腦方面具有一定程度上專業了解的朋友們應該都知道,決定一臺產品質量好壞的標準不僅僅在於配件的優劣,有時候還要取決於它們之間的搭配問題,只有各部件之間能夠協調一致,我們才可以成功享受到最為出色的使用體驗,因此關於產品的搭配問題便顯得至關重要。今天為大家介紹的就是x99主板適合搭配的cpu信息,其中包括大家熟知的幾款x99主板。
  • cpu風扇多少錢一個 cpu風扇價格及性能介紹
    說到cpu 風扇 ,相信大家都知道,它主要是安裝在電腦主機裡面的風扇,它能夠快速地幫助我們的電腦將CPU裡面的熱量傳導出來,然後利用風力吹出去,通過這樣的方式來達到幫助CPU散熱的效果。但是有時候cpu風扇可能因為使用的時間比較長有時候會出現噪音大或者損壞的現象,這個時候我們想要更換一個新的。那麼,cpu風扇多少錢一個呢?
  • 關於CPU使用率飆升,我們需要了解什麼?
    線程稱為輕進程,共享進程資源,關於線程的調度,CPU 對於線程也是分時調度。而在 Java 中,線程的調用由 JVM 負責,線程的調度一般有兩種模式,分時調度和搶佔式調度。4、一個 while 死循環,會不會引起 CPU 使用率飈升?會的。
  • 絕地求生低配電腦CPU負擔低設置方法匯總 怎麼樣設置對cpu壓力小
    很多玩家都玩過絕地求生或者想玩一下絕地求生,但是發現自己電腦的配置好像玩起來有點卡,甚至個別電腦會出現cpu過載的情況,那到底是怎麼回事呢,這裡小編就來教一下大家絕地求生低配電腦CPU負擔低設置方法匯總 怎麼樣設置對cpu壓力小。
  • 伺服器cpu排行榜及簡單介紹
    在這之前曾經為大家推薦過幾款遊戲顯卡,那麼,今天要為大家介紹的是電腦最基本的零件,伺服器cpu。伺服器cpu在電腦主機中也是起到了很大的作用,可以說是決定著電腦的運行帶大家看看伺服器cpu的排行榜!  中央處理器(CPU,Central Processing Unit)是一塊超大規模的集成電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。
  • 飛騰cpu怎麼樣 飛騰cpu簡介及對比評測【詳解】
    市面上大家熟知的CPU處理器大多是外國品牌,但是實際上隨著我國相關技術的改進,也出現了不少諸如飛騰cpu之類表現優異的產品。它們性能參數以及實際使用評測和知名大品牌基本相同,儘管依據專家的某些測評看來,國產處理器的微結構略微遜色,但是這並不妨礙它們的發展前景。今天為大家介紹的就是關於飛騰cpu的五個板塊的內容,包括飛騰cpu的簡介等等。
  • cpu溫度過高怎麼辦
    有時候電腦在長時間使用之後有可能出現CPU過熱的現象,cpu溫度過高怎麼辦,下面就為大家介紹一下解決的方法。 cpu溫度過高怎麼辦  1、下載CPU控溫軟體例如Waterfall Pro,了解溫度的情況和有效地控制溫度;