Linux

CPU時間和CPU使用率如何相同?

  • October 17, 2019

在 Wikipedia page for CPU time中,它說

CPU 時間以時鐘滴答或秒為單位測量。通常,將 CPU 時間測量為 CPU 容量的百分比是很有用的,這稱為 CPU 使用率。

我不明白如何用百分比代替持續時間。當我查看時top,不%CPU告訴我MATLAB使用的是我的 2.17 核心嗎?

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

問題

為了更好的理解什麼是 CPU 使用率,我該如何自己計算 CPU 使用率呢?

CPU 時間以離散的時間片(滴答聲)分配。對於一定數量的時間片,CPU 很忙,其他時候則不是(由空閒程序表示)。在下圖中,CPU 正忙於10 個 CPU 片中的 6 個。6/10 = .60 = 60% 的忙碌時間(因此會有 40% 的空閒時間)。

在此處輸入圖像描述

百分比被定義為“一個數字或比率,表示為將某物的一定數量的部分分成 100 個部分”。因此,在這種情況下,這些部分是離散的時間片,並且是繁忙時間片與空閒時間片——繁忙時間片與空閒時間片的比率。

由於 CPU 以 GHz(每秒數十億個週期)執行。作業系統以稱為滴答的較小單位將該時間切片。它們不是真正的 1/10 秒。Windows 中的滴答率是每秒1000 萬次滴答,而在 Linux 中是sysconf(_SC_CLK_TCK)(通常是每秒 100 次滴答)。

在類似top的情況下,繁忙的 CPU 週期會進一步分解為使用者時間和系統時間等百分比。在topLinux 和 Windows 中的 perfmon 中,您經常會得到超過 100% 的顯示,這是因為總數為 100% * the_number_of_cpu_cores。

在作業系統中,調度程序的工作是將這些寶貴的切片分配給程序,因此調度程序負責報告這一點。

引用自:https://serverfault.com/questions/648704