我知道这个问题已经以许多不同的方式被多次提出过,但对于我来说,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”打入您最喜爱的搜索引擎。 –