Cpu usage 这个计算CPU利用率的公式是如何工作的?

Cpu usage 这个计算CPU利用率的公式是如何工作的?,cpu-usage,round-robin,Cpu Usage,Round Robin,我被问到这个问题 考虑一个运行十个I/0绑定任务和一个CpU绑定任务的系统。假设I/O绑定任务在CPU计算的每毫秒发出一次I/O操作,并且每个I/O操作需要10毫秒才能完成。还假设上下文切换开销为.1毫秒,并且所有进程都是长时间运行的任务,在以下情况下描述循环调度程序的CPU利用率: a。时间量子是1毫秒 b。时间量是10毫秒 我找到了答案 时间量为1毫秒:无论调度哪个进程 调度器会为每个上下文切换产生0.1毫秒的上下文切换开销。 这导致CPU利用率为1/1.1*100=91% 时间量为10毫秒

我被问到这个问题

考虑一个运行十个I/0绑定任务和一个CpU绑定任务的系统。假设I/O绑定任务在CPU计算的每毫秒发出一次I/O操作,并且每个I/O操作需要10毫秒才能完成。还假设上下文切换开销为.1毫秒,并且所有进程都是长时间运行的任务,在以下情况下描述循环调度程序的CPU利用率:

a。时间量子是1毫秒

b。时间量是10毫秒

我找到了答案

时间量为1毫秒:无论调度哪个进程 调度器会为每个上下文切换产生0.1毫秒的上下文切换开销。 这导致CPU利用率为1/1.1*100=91%

时间量为10毫秒:与I/O绑定的任务产生上下文切换 只消耗了1毫秒的时间量。循环所需的时间 因此,在所有进程中都是10*1.1+10.1(作为每个I/O绑定任务 执行1毫秒,然后引发上下文切换任务,而CPU- 绑定任务在发生上下文切换之前执行10毫秒)。中央处理器 因此,利用率为20/21.1*100=94%


我唯一的问题是这个人是如何推导CPU利用率公式的?我似乎无法理解他/她在哪里得到了数字20/21.1*100=94%和1/1.1*100=91%。

在第一种情况下,每个任务用1秒完成工作,用1.1秒切换;因此,每1.1毫秒中就有1毫秒用于工作


对于第二种情况,情况类似:在完成所有任务所花费的21.1毫秒中,只有20毫秒在做实际工作。

这是对上述问题的最佳解释:


我也在问同样的问题。我就是这样理解的 在第一种情况下,当时间量为1毫秒时,如果我们考虑甘特图,所有I/O绑定的进程都将出现(让我们调用p1-p10),然后是CPU绑定的p11。因此,11毫秒内总共有10个上下文切换。因此,CPU在11毫秒内完成的有效工作仅为11-(10*.1ms),即10毫秒。因此,CPU利用率为(10/11)*100=90%


相同的方式,在第二种情况下,如果考虑20.1毫秒的时间,将有11个开关(最后一个是CPU绑定过程)。因此,cpu工作的有效时间为20.1-(11*.1)=19ms。因此,CPU利用率(19/20.1)*100=94%

出于某种原因,我对这个问题感到难以置信……在看了这里的所有答案后,我通过仔细查看另一位用户提供的玉成链接最终理解了。书中没有我能找到的公式(也许我错过了),但以下是我的答案版本,以一种伪公式的风格:

警告:这可能是错误的,但也许你可以告诉我哪里出了错

(a)

[(10个I/O进程)(1ms)+(1个cpu进程)(1ms)]/[(10个I/O进程)(1ms)+(1个cpu进程)(1ms)+(10个上下文切换)*(0.1ms)]=10/11=91%

(b)

[(10个I/O进程)(1ms)+(1个cpu进程)(10ms)]/[(10个I/O进程)(1ms)+(1个cpu进程)(10ms)+(10个上下文切换)*(0.1ms)]=20/21=95%

对于a部分

我们有11个进程(10个i/o,1个cpu)。每个都需要1ms的执行时间和0.1ms的切换时间

因此,一个进程所花费的总时间是:10(I/o)*1(1毫秒cpu)+1(有cpu限制的进程)*1(1毫秒cpu)+11*0.1(总切换时间)=12.1毫秒

在这12.1ms中,cpu繁忙/执行的时间=10*1(对于10个I/O预压力)+1*1(对于1个cpu进程)=10+1=11

CPU利用率=(11/12.1)*100=(1/1.1)*100=约91%

乙部

虽然时间量是10ms,但I/O绑定进程只会占用1ms的cpu,然后由于需要I/O而进入阻塞状态,因此有0.1ms的上下文切换

因此,I/O绑定进程所花费的总时间将为=10*1

但CPU限制的进程使用整个10ms的时间片和0.1ms的切换。因此,总时间为1*10=10ms

总上下文切换时间=11*0.1=1.1ms

因此,所用总时间=10+10+1.1=21.1ms

cpu繁忙/执行的时间=10*1+1*10=20


CPU利用率=(20/21.1)*100=94%近似值

感谢您的澄清,我知道我遗漏了一些东西。我很困惑,我读到CPU和I/O任务相互独立执行,因此它们可以并行执行,那么为什么CPU任务中甚至存在上下文切换?请注意,不鼓励只使用链接的答案,参考资料往往会随着时间的推移变得陈旧。请考虑在这里添加一个独立的概要,将链接作为参考。