Linux
CPU時間和CPU使用率如何相同?
在 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 週期會進一步分解為使用者時間和系統時間等百分比。在top
Linux 和 Windows 中的 perfmon 中,您經常會得到超過 100% 的顯示,這是因為總數為 100% * the_number_of_cpu_cores。在作業系統中,調度程序的工作是將這些寶貴的切片分配給程序,因此調度程序負責報告這一點。