我知道這個問題已經以許多不同的方式被多次提出過,但對於我來說,CPU負載百分比的含義仍然不清楚。如果一次執行一條指令,CPU負載究竟是多少?
我開始解釋我是如何看待的概念,現在(當然,我可能,並且肯定會,是錯誤的):
- CPU內核只能同時執行一個指令。在執行完當前指令之前,它不會執行下一條指令。
- 假設你的盒子有一個單一的CPU和一個單一的核心。因此並行計算是不可能的。您的操作系統的調度程序將選取一個進程,將IP設置爲入口點,並將該指令發送給CPU。在CPU完成執行當前指令之前,它不會移動到下一條指令。經過一段時間後,它將切換到另一個進程,依此類推。但是如果CPU當前正在執行指令,它將不會切換到另一個進程。它將等待CPU自由切換到另一個進程。由於您只有一個內核,因此不能同時執行兩個進程。
- I/O很貴。只要進程想要從磁盤讀取文件,就必須等到磁盤完成其任務,然後當前進程才能執行下一條指令。在磁盤工作時,CPU沒有做任何事情,所以我們的操作系統將切換到另一個進程,直到磁盤完成其工作,以免浪費時間。
遵循這些原則,我來自己的結論是,在給定時間CPU負載只能是以下兩個值之一:
- 0% - 空閒狀態。 CPU什麼也沒做。
- 100% - 忙。 CPU當前正在執行一條指令。
這顯然是錯誤的,因爲taskmgr報告%1,12%,15%,50%等CPU使用率值。
- 這是什麼意思,給定的進程,在給定的時間,利用給定CPU核心的1%(由taskmgr報告)?在給定的過程正在執行的過程中,99%會發生什麼?
- 這是什麼意思,總體CPU使用率是19%(現在由Rainmeter報告)?
「* CPU內核只能同時執行一個指令,直到它執行完當前一個它不會執行下一條指令*。」這是不正確的。將「superscalar」打入您最喜愛的搜索引擎。 –