4

我收到了这个问题

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

一种。时间量为 1 毫秒

湾。时间段为 10 毫秒

我找到了答案

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

时间片为 10 毫秒:I/O 绑定任务仅在用完 1 毫秒的时间片后就会引发上下文切换。因此,循环遍历所有进程所需的时间是 10*1.1 + 10.1(因为每个 I/O 绑定任务执行 1 毫秒,然后引发上下文切换任务,而 CPU 绑定任务在引发上下文之前执行 10 毫秒转变)。因此 CPU 利用率为 20/21.1 * 100 = 94%。

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

4

5 回答 5

5

对于第一种情况,每个任务使用 1msec 完成工作和 0.1msec 切换;因此,它花费每 1.1 毫秒中的 1 毫秒做功。

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

于 2013-03-11T02:34:28.057 回答
3

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

http://jade-cheng.com/uh/coursework/ics-412/homework-4.pdf

于 2013-06-26T09:02:53.533 回答
0

我正在经历同样的问题。这就是我的理解在第一种情况下,当时间量是 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%

于 2014-08-20T17:06:37.667 回答
0

不知为何,我对这个问题一头雾水……看了这里的所有答案后,我通过仔细查看另一个用户给出的玉城链接终于明白了。我在书中找不到公式(也许我错过了),但这是我的答案版本,采用一种伪公式风格:

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

一种)

[(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%

于 2017-04-05T04:55:01.903 回答
0

对于第一部分

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

所以一个进程花费的总时间是:10(I/o)*1(1ms of cpu)+1(CPU bounded process)*1(1ms of cpu)+11*0.1(total switch time)=12.1ms。

在这12.1ms内,cpu忙/执行的时间=10*1(For 10 I/O precoess)+1*1(for 1 CPU process)=10+1=11

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

b部分

虽然时间片是 10ms,但是 I/O bound 进程只会占用 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% 大约

于 2018-09-13T16:03:48.030 回答